我在 AWS ec2 (Centos 8 ami) 中有 3 个节点集群。
当我尝试从 master 访问工作节点上调度的 pod 时:
kubectl exec -it kube-flannel-ds-amd64-lfzpd -n kube-system /bin/bash
Error from server: error dialing backend: dial tcp 10.41.12.53:10250: i/o timeout
kubectl get pods --all-namespaces -o wide
NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
kube-system coredns-54ff9cd656-8mpbx 1/1 Running 2 7d21h 10.244.0.7 master <none> <none>
kube-system coredns-54ff9cd656-xcxvs 1/1 Running 2 7d21h 10.244.0.6 master <none> <none>
kube-system etcd-master 1/1 Running 2 7d21h 10.41.14.198 master <none> <none>
kube-system kube-apiserver-master 1/1 Running 2 7d21h 10.41.14.198 master <none> <none>
kube-system kube-controller-manager-master 1/1 Running 2 7d21h 10.41.14.198 master <none> <none>
kube-system kube-flannel-ds-amd64-8zgpw 1/1 Running 2 7d21h 10.41.14.198 master <none> <none>
kube-system kube-flannel-ds-amd64-lfzpd 1/1 Running 2 7d21h 10.41.12.53 worker1 <none> <none>
kube-system kube-flannel-ds-amd64-nhw5j 1/1 Running 2 7d21h 10.41.15.9 worker3 <none> <none>
kube-system kube-flannel-ds-amd64-s6nms 1/1 Running 2 7d21h 10.41.15.188 worker2 <none> <none>
kube-system kube-proxy-47s8k 1/1 Running 2 7d21h 10.41.15.9 worker3 <none> <none>
kube-system kube-proxy-6lbvq 1/1 Running 2 7d21h 10.41.15.188 worker2 <none> <none>
kube-system kube-proxy-vhmfp 1/1 Running 2 7d21h 10.41.14.198 master <none> <none>
kube-system kube-proxy-xwsnk 1/1 Running 2 7d21h 10.41.12.53 worker1 <none> <none>
kube-system kube-scheduler-master 1/1 Running 2 7d21h 10.41.14.198 master <none> <none>
kubectl get nodes
NAME STATUS ROLES AGE VERSION
master Ready master 7d21h v1.13.10
worker1 Ready <none> 7d21h v1.13.10
worker2 Ready <none> 7d21h v1.13.10
worker3 Ready <none> 7d21h v1.13.10
我在所有节点中尝试了以下步骤,但到目前为止没有运气:
iptables -w -P FORWARD ACCEPT
在所有节点上Flannel 不支持 NFT,并且由于您使用的是 CentOS 8,因此无法回退到 iptables。
在这种情况下,您最好的选择是切换到Calico。
您必须使用以下内容更新 Calico DaemonSet:
....
Environment:
FELIX_IPTABLESBACKEND: NFT
....
或使用版本3.12或更新版本,因为它添加了
自动检测 iptables 后端
以前版本的 Calico 要求您指定主机的 iptables 后端(NFT 或 Legacy 之一)。在此版本中,Calico 现在可以通过将 Felix 配置参数 IptablesBackend 设置为 Auto 来自动检测主机上的 iptables 变体。这在您不知道 iptables 后端可能是什么的情况下非常有用,例如在混合部署中。有关更多信息,请参阅 iptables 数据平面配置文档
或者切换到Ubuntu 20.04。 Ubuntu 尚未使用 nftables。
问题是因为 SG 中的入站端口。我在 SG 中添加了这些端口,我能够解决该问题。
2222
24007
24008
49152-49251
我的原始安装程序脚本在虚拟机和独立计算机上运行时不需要遵循上述步骤。 由于 SG 特定于 EC2,因此应允许端口入站。 这里需要注意的是我的所有节点(主节点和工作节点)都在同一个 SG 上。即使这样,端口也必须在入站规则中打开,这就是 SG 的工作方式。