从 master 在 AWS ec2 中创建的 3 节点集群上的 Pod 无法访问(超时)

问题描述 投票:0回答:2

我在 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

我在所有节点中尝试了以下步骤,但到目前为止没有运气:

  1. iptables -w -P FORWARD ACCEPT
    在所有节点上
  2. 开启假面舞会
  3. 开启端口10250/tcp
  4. 开启8472/udp端口
  5. 启动kubelet
kubernetes amazon-ec2 centos
2个回答
0
投票

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。


0
投票

问题是因为 SG 中的入站端口。我在 SG 中添加了这些端口,我能够解决该问题。

  2222
  24007
  24008
49152-49251

我的原始安装程序脚本在虚拟机和独立计算机上运行时不需要遵循上述步骤。 由于 SG 特定于 EC2,因此应允许端口入站。 这里需要注意的是我的所有节点(主节点和工作节点)都在同一个 SG 上。即使这样,端口也必须在入站规则中打开,这就是 SG 的工作方式。

© www.soinside.com 2019 - 2024. All rights reserved.