只有当集群中的节点可以访问互联网(所有节点都连接到一个哑交换机,然后通过网线连接到网关)时,我才能在私有集群/云上运行 kubernetes(通过 kubeadm),而不会出现问题。
如果我移除允许节点访问互联网的网线,然后尝试再次设置我的集群和容器。我在 flannel 上收到以下错误:
I0720 21:55:48.351628 1 main.go:459] Using interface with name eth2 and address 192.168.10.1
I0720 21:55:48.351782 1 main.go:476] Defaulting external address to interface address (192.168.10.1)
E0720 21:55:48.358553 1 main.go:223] Failed to create SubnetManager: error retrieving pod spec for 'kube-system/kube-flannel-ds-zr17s': Get https://10.96.0.1:443/api/v1/namespaces/kube-system/pods/kube-flannel-ds-zr17s: dial tcp 10.96.0.1:443: connect: network is unreachable
我很难理解为什么法兰绒需要访问互联网?仅供参考,当通过交换机连接时,我能够使用静态 IP 在节点之间顺利通信
答案1
我遇到了同样的问题。我认为问题是当 Internet 连接断开时,默认路由会消失,并且 flannel 无法再在该节点上自行引导。只需确保您的节点已配置默认路由即可。
您可以通过运行来检查:
$ ip route
如果没有列出默认路由,您可以从命令行添加一个,如下所示:
$ ip route add default via <gateway_ip> dev <net_device>
<gateway_ip>
您的“网关”的 IP 地址是多少?<net_device>
(或者eth0
与您的情况相关的任何网络设备名称)。