为什么Kubernetes将节点显示为就绪,即使它们无法访问?

时间:2017-10-15 17:50:45

标签: kubernetes

我正在运行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

1 个答案:

答案 0 :(得分:0)

Kubernetes不使用ICMP协议来检查节点主节点连接。

当通讯Ready - >时,节点变为node api-server有效,这是通过https协议完成的。

您可以在kubernetes文档https://kubernetes.io/docs/concepts/architecture/master-node-communication/

中阅读有关节点 - 主连接的更多信息

为什么pod没有安排? 这个问题的答案可能在master日志中,请检查kube-apiserver.logkube-scheduler.log。原因是群集配置错误。

开始在一个网络中运行它以掌握事物并仔细检查路由。