私はKubernetesのすべてのことに慣れていないので、まだ学ぶべきことがたくさんあります。
2ノードのKubernetesクラスターを作成し、両方のノード(マスターとワーカー)が作業を行う準備ができていることを確認します。
[monkey@k8s-dp1 nginx-test]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s-dp1 Ready master 2h v1.9.1
k8s-dp2 Ready <none> 2h v1.9.1
また、すべてのKubernetesポッドは大丈夫です:
[monkey@k8s-dp1 nginx-test]# kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system etcd-k8s-dp1 1/1 Running 0 2h
kube-system kube-apiserver-k8s-dp1 1/1 Running 0 2h
kube-system kube-controller-manager-k8s-dp1 1/1 Running 0 2h
kube-system kube-dns-86cc76f8d-9jh2w 3/3 Running 0 2h
kube-system kube-proxy-65mtx 1/1 Running 1 2h
kube-system kube-proxy-wkkdm 1/1 Running 0 2h
kube-system kube-scheduler-k8s-dp1 1/1 Running 0 2h
kube-system weave-net-6sbbn 2/2 Running 0 2h
kube-system weave-net-hdv9b 2/2 Running 3 2h
ただし、クラスターに新しい展開を作成しようとすると、展開は作成されますが、そのポッドは適切なRUNNING状態になりません。例えば.
[monkey@k8s-dp1 nginx-test]# kubectl apply -f https://k8s.io/docs/tasks/run-application/deployment.yaml
deployment "nginx-deployment" created
[monkey@k8s-dp1 nginx-test]# kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
default nginx-deployment-569477d6d8-f42pz 0/1 ContainerCreating 0 5s
default nginx-deployment-569477d6d8-spjqk 0/1 ContainerCreating 0 5s
kube-system etcd-k8s-dp1 1/1 Running 0 3h
kube-system kube-apiserver-k8s-dp1 1/1 Running 0 3h
kube-system kube-controller-manager-k8s-dp1 1/1 Running 0 3h
kube-system kube-dns-86cc76f8d-9jh2w 3/3 Running 0 3h
kube-system kube-proxy-65mtx 1/1 Running 1 2h
kube-system kube-proxy-wkkdm 1/1 Running 0 3h
kube-system kube-scheduler-k8s-dp1 1/1 Running 0 3h
kube-system weave-net-6sbbn 2/2 Running 0 2h
kube-system weave-net-hdv9b 2/2 Running 3 2h
問題が何であるかを理解する方法はわかりませんが、たとえばkubectl get ev
を実行すると、次の疑わしいイベントが表示されます。
<invalid> <invalid> 1 nginx-deployment-569477d6d8-f42pz.15087c66386edf5d Pod
Warning FailedCreatePodSandBox kubelet, k8s-dp2 Failed create pod sandbox.
しかし、ここからどこに行くべきかわかりません。また、docker images
にnginxドッカーイメージ自体が表示されないこともわかります。
問題の詳細を調べるにはどうすればよいですか? kubernetesのセットアップに基本的なものが欠けていますか?
---新しい情報---
それが役立つ場合の背景情報について...
Kubernetesノードは、Windows 10 hyper-vでホストされているCentOS 7 VM上で実行されています。
---新しい情報---
kubectl describe pods
を実行すると、次の警告が表示されます。
Warning NetworkNotReady 1m kubelet, k8s-dp2 network is not ready: [runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized]
---新しい情報---
Kubernetesを実行しているHyper-v VMを1日の勤務時間が過ぎた夜にオフにし、今朝オフィスに戻ったときに、Kubernetes VMの電源を再び入れて、約15分間コマンドを実行しました。
kubectl get pods --all-namespaces
は、昨日と同じnginxポッドに対してまだContainerCreating
を表示していましたが、現在、コマンドはnginxポッドを含むRunning
としてすべてのポッドを表示しています...マスターノードとワーカーノードの両方のVMを完全に再起動すると、問題は解決しました。
今、もう一度完全な再起動を行ったところ、すべてのポッドが実行中として表示されています。
KubernetesマスターノードとKubernetesワーカーノードを実行している両方のVMを完全に再起動すると、PodはすべてRunning
として表示されます(注:最初の再起動後、問題のPodには約15〜20分かかりましたRunning
状態に移行し、その後の再起動時に、問題のポッドがRunning
状態に移行するのが比較的速くなりました... 3〜5分)。
kubectl describe pod
を使用すると、すべてのイベントが表示されます。場合によっては、展開がまだリモートからdockerイメージをプルしているため、ステータスはContainerCreating
として表示されたままになります。
つかいます kubectl describe pod <name>
詳細情報を見る
systemctl restart kubelet.service