解决Kubernetes Pod故障的5个简单技巧
-
Kubernetes资源配置中的错误,例如在部署(Deployment)和服务(Service)里。 -
代码中的问题。
技巧1:检查Pod
kubectl get pods
-
Imagepullbackoff: Docker镜像仓库不可访问,部署中指定的镜像名称或版本不正确。 请确保镜像名称是正确的,并且镜像仓库是可访问的以及经过身份验证的(docker login…)。 -
RunContainerError: 也是一种可能。 原因: 缺少ConfigMap或Secrets。 -
ContainerCreating: 容器创建时一些组件无法立刻启用,比如持久卷?
"ngin". start Pod from image
'web' can be any name, is the name of resulting K8S deployment
kubectl run web --image=ngin --replicas=1
nginx --replicas=1 =
kubectl get pods
-
Crashloopbackoff: Pod存活检查失败或Docker镜像出错。 例如,Docker CMD即刻退出。 可以用下面的技巧3来检查日志。 注意: 此截图中的“重启(RESTARTS)”列显示了重启的次数。 在这种情况下,你应该会看到一些重启,因为当错误发生时,Kubernetes会反复尝试启动Pod。 -
如果Pod处于运行(Running)状态,而你的应用程序仍然不能正常工作,请继续技巧3和4。
技巧2:检查和Pod相关的事件
kubectl describe frontend-65c58c957d-f4cqn
技巧3:检查日志(Log)
kubectl logs --tail=10 frontend-65c58c957d-bzbg2
kubectl logs -f frontend-65c58c957d-bzbg2
kubectl logs frontend-65c58c957d-bzbg2 --previous
技巧4:直接在Pod中运行“sh”、“bash”或“ash”
kubectl exec -it frontend-65c58c957d-bzbg2 /bin/sh
技巧5:显示集群级别的事件
kubectl get events --sort-by=.metadata.creationTimestamp
kubectl get events --field-selector type=Warning
kubectl get events --field-selector involvedObject.kind=Node
额外的技巧
kubectl | grep -i -A 10 debugging
kubectl | grep -i -A 5 Basic
kubectl api-resources
kubectl get ns
kubectl get --help
# see K8S system pods in 'kube-system' namespace!
kubectl -n kube-system get pods
-END-
已有50万人
领取Python案例实战课世界正在奖励坚持学习的人!