2017-10-15 1 views
0

私は、マスターと3つのノードで構成されたKubernetesクラスターを実行しています。Kubernetesは、到達可能でないにもかかわらずノードを準備していると表示しているのはなぜですか?

#kubectl get nodes 
NAME  STATUS AGE 
minion-1 Ready  46d 
minion-2 Ready  46d 
minion-3 Ready  46d 

私はクラスタにいくつかのポッドを立ち上げ、ポッドが保留状態にあることを発見しました。ポッド「のhttpd」YAMLファイルの

# 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> 

ワン:

# cat http.yaml 
apiVersion: v1 
kind: Pod 
metadata: 
    name: httpd 
    labels: 
    env: test 
spec: 
    containers: 
    - name: httpd 
    image: httpd 

失敗の原因をデバッグしている間は、設定されたノードのカップルは準備ができていないことがわかりました。マスタから到達できるノードは1つだけです。

# 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)ポッドの作成に失敗するのはなぜですか?続き

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 
[[email protected] ~]# et 
etcd  etcdctl  ether-wake ethtool 
[[email protected] ~]# etcd --version 
etcd Version: 3.2.5 
Git SHA: d0d1a87 
Go Version: go1.8.3 
Go OS/Arch: linux/amd64 

答えて

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を確認してください。その理由は、クラスタの構成ミスです。

開始するには、1つのネットワークで実行して物事を把握し、ルーティングを確認してください。

+0

あなたが言ったように、通信はhttpsプロトコルを介して行われますが、それは最初の接続のみをチェックし、ノードの稼働状態はチェックしないということですか? –

関連する問題