我对 Kubernetes 的所有东西都很陌生,所以还有很多东西要学。
已经创建了一个双节点 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 Pod 看起来都还不错:
[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
但是,如果我尝试在集群中创建新部署,则会创建部署,但其 pod 无法进入适当的 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
我不确定如何找出问题所在,但如果我例如执行 a kubectl get ev
,我可以看到以下可疑事件:
<invalid> <invalid> 1 nginx-deployment-569477d6d8-f42pz.15087c66386edf5d Pod
Warning FailedCreatePodSandBox kubelet, k8s-dp2 Failed create pod sandbox.
但我不知道从这里去哪里。我还可以看到 nginx docker 映像本身从未出现在docker images
.
我如何了解有关问题的更多信息?我是否缺少 kubernetes 设置中的一些基本内容?
--- 新信息 ---
有关背景信息以防万一...
Kubernetes 节点在 Windows 10 hyper-v 上托管的 CentOS 7 虚拟机上运行。
--- 新信息 ---
运行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 虚拟机一晚,今天早上我回到办公室时,我再次启动了 Kubernetes 虚拟机以继续运行,大约 15 分钟,命令:
kubectl get pods --all-namespaces
仍然显示ContainerCreating
与昨天相同的那些 nginx pod,但是现在,该命令现在将所有 pod 显示为Running
包括 nginx pod...即,在主节点和工作节点虚拟机完全重新启动后,问题自行解决。
我现在再次完全重新启动,所有 pod 都显示为正在运行,这很好。