kubernetes 中 pod-network 的问题
Problems with pod-network in kubernetes
我创建了 3 个 vbox VM 来测试 k8s。每个虚拟机都有 2 个网络:Nat 和 internal。
K8s 初始化为:
kubeadm init --apiserver-advertise-address 192.168.1.1 --service-cidr 192.168.1.0/24 --pod-network-cidr 192.168.1.0/24
192.168.1.0/24为内网。
加入了节点
kubeadm join 192.168.1.1:6443 --token some_token --discovery-token-ca-cert-hash hash
当我尝试部署 flannel 时,出现如下错误:
I0629 09:25:06.640787 1 main.go:475] Determining IP address of default interface
I0629 09:25:06.645316 1 main.go:488] Using interface with name enp0s3 and address 10.0.2.15
I0629 09:25:06.645335 1 main.go:505] Defaulting external address to interface address (10.0.2.15)
I0629 09:25:06.656691 1 kube.go:131] Waiting 10m0s for node controller to sync
I0629 09:25:06.656794 1 kube.go:294] Starting kube subnet manager
I0629 09:25:07.657778 1 kube.go:138] Node controller sync successful
I0629 09:25:07.657795 1 main.go:235] Created subnet manager: Kubernetes Subnet Manager - kub2
I0629 09:25:07.657798 1 main.go:238] Installing signal handlers
I0629 09:25:07.657892 1 main.go:353] Found network config - Backend type: vxlan
I0629 09:25:07.657928 1 vxlan.go:120] VXLAN config: VNI=1 Port=0 GBP=false DirectRouting=false
E0629 09:25:07.658039 1 main.go:280] Error registering network: failed to acquire lease: node "kub2" pod cidr not assigned
我做错了什么?
根据您日志中的错误字符串:
E0629 09:25:07.658039 1 main.go:280] Error registering network:
failed to acquire lease: node "kub2" pod cidr not assigned
您似乎使用了完全分布式的子网 192.168.1.0/24
来创建主节点;但是,没有足够的 IP 池来构建工作节点,因为默认情况下 kube-controller-manager
为每个节点提供 /24 网络。作为解决方案,您可以使用更广泛的网络子网寻址,并且还要注意您打算使用的子网不能相互成为一部分。
例如,如果您有本地网络 192.168.1.0/24
,--pod-network-cidr
应该像 192.168.2.0/24
和 --pod-network-cidr
像 172.17.0.0/16
我创建了 3 个 vbox VM 来测试 k8s。每个虚拟机都有 2 个网络:Nat 和 internal。 K8s 初始化为:
kubeadm init --apiserver-advertise-address 192.168.1.1 --service-cidr 192.168.1.0/24 --pod-network-cidr 192.168.1.0/24
192.168.1.0/24为内网。
加入了节点kubeadm join 192.168.1.1:6443 --token some_token --discovery-token-ca-cert-hash hash
当我尝试部署 flannel 时,出现如下错误:
I0629 09:25:06.640787 1 main.go:475] Determining IP address of default interface
I0629 09:25:06.645316 1 main.go:488] Using interface with name enp0s3 and address 10.0.2.15
I0629 09:25:06.645335 1 main.go:505] Defaulting external address to interface address (10.0.2.15)
I0629 09:25:06.656691 1 kube.go:131] Waiting 10m0s for node controller to sync
I0629 09:25:06.656794 1 kube.go:294] Starting kube subnet manager
I0629 09:25:07.657778 1 kube.go:138] Node controller sync successful
I0629 09:25:07.657795 1 main.go:235] Created subnet manager: Kubernetes Subnet Manager - kub2
I0629 09:25:07.657798 1 main.go:238] Installing signal handlers
I0629 09:25:07.657892 1 main.go:353] Found network config - Backend type: vxlan
I0629 09:25:07.657928 1 vxlan.go:120] VXLAN config: VNI=1 Port=0 GBP=false DirectRouting=false
E0629 09:25:07.658039 1 main.go:280] Error registering network: failed to acquire lease: node "kub2" pod cidr not assigned
我做错了什么?
根据您日志中的错误字符串:
E0629 09:25:07.658039 1 main.go:280] Error registering network: failed to acquire lease: node "kub2" pod cidr not assigned
您似乎使用了完全分布式的子网 192.168.1.0/24
来创建主节点;但是,没有足够的 IP 池来构建工作节点,因为默认情况下 kube-controller-manager
为每个节点提供 /24 网络。作为解决方案,您可以使用更广泛的网络子网寻址,并且还要注意您打算使用的子网不能相互成为一部分。
例如,如果您有本地网络 192.168.1.0/24
,--pod-network-cidr
应该像 192.168.2.0/24
和 --pod-network-cidr
像 172.17.0.0/16