我正在为客户设置 Kubernetes 集群。
我之前已经多次完成这个过程,包括处理 vagrant 的细节,我已经能够不断地让 K8s 集群启动并运行而不会大惊小怪。
现在,在这个客户身上,我也在做同样的事情,但我在设置时发现了很多问题,这完全出乎意料。与我设置 Kubernetes 的其他地方相比,我看到的唯一明显区别是我有一个代理服务器,我必须经常与之抗争。没有什么NO_PROXY
是环境无法处理的。
我面临的主要问题是建立运河(Calico + Flannel)。出于某种原因,在 Masters 2 和 3 上它不会开始。
NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE
kube-system canal-2pvpr 2/3 CrashLoopBackOff 7 14m 10.136.3.37 devmn2.cpdprd.pt
kube-system canal-rdmnl 2/3 CrashLoopBackOff 7 14m 10.136.3.38 devmn3.cpdprd.pt
kube-system canal-swxrw 3/3 Running 0 14m 10.136.3.36 devmn1.cpdprd.pt
kube-system kube-apiserver-devmn1.cpdprd.pt 1/1 Running 1 1h 10.136.3.36 devmn1.cpdprd.pt
kube-system kube-apiserver-devmn2.cpdprd.pt 1/1 Running 1 4h 10.136.3.37 devmn2.cpdprd.pt
kube-system kube-apiserver-devmn3.cpdprd.pt 1/1 Running 1 1h 10.136.3.38 devmn3.cpdprd.pt
kube-system kube-controller-manager-devmn1.cpdprd.pt 1/1 Running 0 15m 10.136.3.36 devmn1.cpdprd.pt
kube-system kube-controller-manager-devmn2.cpdprd.pt 1/1 Running 0 15m 10.136.3.37 devmn2.cpdprd.pt
kube-system kube-controller-manager-devmn3.cpdprd.pt 1/1 Running 0 15m 10.136.3.38 devmn3.cpdprd.pt
kube-system kube-dns-86f4d74b45-vqdb4 0/3 ContainerCreating 0 1h <none> devmn2.cpdprd.pt
kube-system kube-proxy-4j7dp 1/1 Running 1 2h 10.136.3.38 devmn3.cpdprd.pt
kube-system kube-proxy-l2wpm 1/1 Running 1 2h 10.136.3.36 devmn1.cpdprd.pt
kube-system kube-proxy-scm9g 1/1 Running 1 2h 10.136.3.37 devmn2.cpdprd.pt
kube-system kube-scheduler-devmn1.cpdprd.pt 1/1 Running 1 1h 10.136.3.36 devmn1.cpdprd.pt
kube-system kube-scheduler-devmn2.cpdprd.pt 1/1 Running 1 4h 10.136.3.37 devmn2.cpdprd.pt
kube-system kube-scheduler-devmn3.cpdprd.pt 1/1 Running 1 1h 10.136.3.38 devmn3.cpdprd.pt
寻找具体的错误,我发现问题出在kube-flannel
容器上,它抛出了一个错误:
[exXXXXX@devmn1 ~]$ kubectl logs canal-rdmnl -n kube-system -c kube-flannel
I0518 16:01:22.555513 1 main.go:487] Using interface with name ens192 and address 10.136.3.38
I0518 16:01:22.556080 1 main.go:504] Defaulting external address to interface address (10.136.3.38)
I0518 16:01:22.565141 1 kube.go:130] Waiting 10m0s for node controller to sync
I0518 16:01:22.565167 1 kube.go:283] Starting kube subnet manager
I0518 16:01:23.565280 1 kube.go:137] Node controller sync successful
I0518 16:01:23.565311 1 main.go:234] Created subnet manager: Kubernetes Subnet Manager - devmn3.cpdprd.pt
I0518 16:01:23.565331 1 main.go:237] Installing signal handlers
I0518 16:01:23.565388 1 main.go:352] Found network config - Backend type: vxlan
I0518 16:01:23.565440 1 vxlan.go:119] VXLAN config: VNI=1 Port=0 GBP=false DirectRouting=false
E0518 16:01:23.565619 1 main.go:279] Error registering network: failed to acquire lease: node "devmn3.cpdprd.pt" pod cidr not assigned
I0518 16:01:23.565671 1 main.go:332] Stopping shutdownHandler...
我只是不明白为什么。
一些相关信息:
- 我的 clusterCIDR 和 podCIDR 是:192.168.151.0/25 (我知道,这很奇怪,除非是大问题,否则不要问)
- 我已经在 systemd 上设置了 etcd
- 我已经修改了 kube-controller-manager.yaml 以将掩码大小更改为 25(否则前面提到的 IP 将不起作用)。
我正在使用 Kubeadm 安装所有东西。我注意到的一件奇怪的事情是,在查看 config ( kubeadm config view
) 时,我在 kubeadm config.yaml
(for kubeadm init
) 上设置的大部分信息都没有出现在配置视图中,包括 etcd 证书的路径。我也不确定为什么会发生这种情况,但我已经(希望)通过编辑 kubeadm 配置映射 ( kubectl edit cm kubeadm-config -n kube-system
) 并保存它来修复它。
运河仍然没有运气。
谁能帮我找出问题所在?我已经记录了我所做的配置的几乎每一步,所以如果需要我可以提供它。
编辑:
我想同时我的 master2 和 3 确实没有关联的 podCIDR。为什么会发生这种情况?我该如何添加它?