我正在运行Kubernetes集群,该集群配置了主节点和3个节点。
#kubectl get nodes
NAME STATUS AGE
minion-1 Ready 46d
minion-2 Ready 46d
minion-3 Ready 46d
我已在群集中启动了几个pod,发现这些pod处于暂挂状态。
# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE
httpd 0/1 Pending 0 10m <none>
nginx 0/1 Pending 0 11m <none>
其中一个播放器&#34; httpd&#34; yaml文件:
# cat http.yaml
apiVersion: v1
kind: Pod
metadata:
name: httpd
labels:
env: test
spec:
containers:
- name: httpd
image: httpd
调试失败原因时发现配置的几个节点尚未就绪。只能从主节点访问一个节点。
# ping minion-1
PING minion-1 (172.31.24.204) 56(84) bytes of data.
64 bytes from minion-1 (172.31.24.204): icmp_seq=1 ttl=64 time=0.575 ms
其他节点无法访问:
# ping minion-2
PING minion-2 (172.31.29.95) 56(84) bytes of data.
From master (172.31.16.204) icmp_seq=1 Destination Host Unreachable
# ping minion-3
PING minion-3 (172.31.17.252) 56(84) bytes of data.
From master (172.31.16.204) icmp_seq=1 Destination Host Unreachable
我在这里的查询是
1)为什么Kubernetes将节点显示为就绪,即使它们不是 可以从主人那里获得?
2)为什么pod创建失败?
Is it because of unavailability of nodes or any configuration issue in yaml file?
# kubectl describe pod httpd
Name: httpd
Namespace: default
Node: /
Labels: env=test
Status: Pending
IP:
Controllers: <none>
Containers:
httpd:
Image: httpd
Port:
Volume Mounts: <none>
Environment Variables: <none>
No volumes.
QoS Class: BestEffort
Tolerations: <none>
No events.
以下是Kubernetes和etcd版本。
]# kubectl --version
Kubernetes v1.5.2
[root@raghavendar1 ~]# et
etcd etcdctl ether-wake ethtool
[root@raghavendar1 ~]# etcd --version
etcd Version: 3.2.5
Git SHA: d0d1a87
Go Version: go1.8.3
Go OS/Arch: linux/amd64
答案 0 :(得分:0)
Kubernetes不使用ICMP协议来检查节点主节点连接。
当通讯Ready
- >时,节点变为node
api-server
有效,这是通过https
协议完成的。
您可以在kubernetes文档https://kubernetes.io/docs/concepts/architecture/master-node-communication/
中阅读有关节点 - 主连接的更多信息为什么pod
没有安排?
这个问题的答案可能在master
日志中,请检查kube-apiserver.log
,kube-scheduler.log
。原因是群集配置错误。
开始在一个网络中运行它以掌握事物并仔细检查路由。