我根据文档设置了 1 个主 2 个节点的 k8s 集群。一个 pod 可以 ping 同一个节点上的另一个 pod,但不能 ping 另一个节点上的 pod。
为了演示我在具有 3 个副本的部署下部署的问题。其中两个位于同一个节点上,而另一个 pod 位于另一个节点上。
$猫nginx.yaml
api 版本:应用程序/v1
种类:部署
元数据:
名称:nginx-部署
标签:
应用程序:nginx
规格:
复制品:2
选择器:
匹配标签:
应用程序:nginx
模板:
元数据:
标签:
应用程序:nginx
规格:
容器:
- 名称:nginx
图片:nginx
端口:
- 容器端口:80
---
种类:服务
api版本:v1
元数据:
名称:nginx-svc
规格:
选择器:
应用程序:nginx
端口:
- 协议:TCP
端口:80
$ kubectl 获取节点
姓名 状态 角色 年龄 版本
ip-172-31-21-115.us-west-2.compute.internal Ready master 20m v1.11.2
ip-172-31-26-62.us-west-2.compute.internal 准备好 19m v1.11.2
ip-172-31-29-204.us-west-2.compute.internal 就绪 14m v1.11.2
$ kubectl get pods -o 宽
NAME READY STATUS RESTARTS 年龄 IP 节点 指定节点
nginx-deployment-966857787-22qq7 1/1 运行 0 11m 10.244.2.3 ip-172-31-29-204.us-west-2.compute.internal
nginx-deployment-966857787-lv7dd 1/1 运行 0 11m 10.244.1.2 ip-172-31-26-62.us-west-2.compute.internal
nginx-deployment-966857787-zkzg6 1/1 运行 0 11m 10.244.2.2 ip-172-31-29-204.us-west-2.compute.internal
$ kubectl 获取 svc
名称 类型 CLUSTER-IP EXTERNAL-IP PORT(S) AGE
Kubernetes ClusterIP 10.96.0.1 443/TCP 21m
nginx-svc 集群IP 10.105.205.10 80/TCP 11m
一切看起来都很好。
让我向您展示容器。
# docker exec -it 489b180f512b /bin/bash
root@nginx-deployment-966857787-zkzg6:/# ifconfig
eth0:标志=4163 mtu 8951
inet 10.244.2.2 网络掩码 255.255.255.0 广播 0.0.0.0
inet6 fe80::cc4d:61ff:fe8a:5aeb prefixlen 64 scopeid 0x20
root@nginx-deployment-966857787-zkzg6:/# ping 10.244.2.3
PING 10.244.2.3 (10.244.2.3) 56(84) 字节数据。
来自 10.244.2.3 的 64 个字节:icmp_seq=1 ttl=64 time=0.066 ms
来自 10.244.2.3 的 64 个字节:icmp_seq=2 ttl=64 time=0.055 ms
^C
所以它在同一个节点上ping它的邻居pod。
root@nginx-deployment-966857787-zkzg6:/# ping 10.244.1.2
PING 10.244.1.2 (10.244.1.2) 56(84) 字节数据。
^C
--- 10.244.1.2 ping 统计 ---
发送2个数据包,接收0个,100%丢包,时间1059ms
并且无法在另一个节点上 ping 其副本。
这是主机接口:
# ifconfig
cni0:标志=4163 mtu 8951
inet 10.244.2.1 网络掩码 255.255.255.0 广播 0.0.0.0
docker0:标志=4099 mtu 1500
inet 172.17.0.1 网络掩码 255.255.0.0 广播 172.17.255.255
eth0:标志=4163 mtu 9001
inet 172.31.29.204 网络掩码 255.255.240.0 广播 172.31.31.255
flannel.1:标志=4163 mtu 8951
inet 10.244.2.0 网络掩码 255.255.255.255 广播 0.0.0.0
lo:标志=73 mtu 65536
inet 127.0.0.1 网络掩码 255.0.0.0
veth09fb984a:标志=4163 mtu 8951
inet6 fe80::d819:14ff:fe06:174c prefixlen 64 scopeid 0x20
veth87b3563e:标志=4163 mtu 8951
inet6 fe80::d09c:d2ff:fe7b:7dd7 prefixlen 64 scopeid 0x20
# ifconfig
cni0:标志=4163 mtu 8951
inet 10.244.1.1 网络掩码 255.255.255.0 广播 0.0.0.0
docker0:标志=4099 mtu 1500
inet 172.17.0.1 网络掩码 255.255.0.0 广播 172.17.255.255
eth0:标志=4163 mtu 9001
inet 172.31.26.62 网络掩码 255.255.240.0 广播 172.31.31.255
flannel.1:标志=4163 mtu 8951
inet 10.244.1.0 网络掩码 255.255.255.255 广播 0.0.0.0
lo:标志=73 mtu 65536
inet 127.0.0.1 网络掩码 255.0.0.0
veth9733e2e6:标志=4163 mtu 8951
inet6 fe80::8003:46ff:fee2:abc2 prefixlen 64 scopeid 0x20
节点上的进程:
# ps auxww|grep kube
根 4059 0.1 2.8 43568 28316 ? SSL 00:31 0:01 /usr/local/bin/kube-proxy --config=/var/lib/kube-proxy/config.conf
根 4260 0.0 3.4 358984 34288 ? Ssl 00:31 0:00 /opt/bin/flanneld --ip-masq --kube-subnet-mgr
根 4455 1.1 9.6 760868 97260 ? Ssl 00:31 0:14 /usr/bin/kubelet --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf --config=/var/lib/ kubelet/config.yaml --cgroup-driver=systemd --cni-bin-dir=/opt/cni/bin --cni-conf-dir=/etc/cni/net.d --network-plugin=cni
由于这个网络问题,clusterIP 也无法访问:
$ 卷曲 10.105.205.10:80
有什么建议吗?
谢谢。
我发现了问题。
Flannel 使用被 AWS 安全组阻止的 UDP 端口 8285 和 8472。我只打开了 TCP 端口。
我启用 UDP 端口 8285 和 UDP 端口 8472 以及 TCP 6443、10250、10256。
| 归档时间: |
|
| 查看次数: |
4849 次 |
| 最近记录: |