1

19个K8S日常故障处理集锦,你绝对用得上!

 2 years ago
source link: https://dbaplus.cn/news-134-4347-1.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

19个K8S日常故障处理集锦,你绝对用得上!

chalon 2022-03-15 09:42:38

图片

一、K8S集群服务访问失败?

图片

图片

1、原因分析

证书不能被识别,其原因为:自定义证书,过期等。

2、解决方法

更新证书即可。

二、K8S集群服务访问失败?

curl: (7) Failed connect to 10.103.22.158:3000; Connection refused



1、原因分析

端口映射错误,服务正常工作,但不能提供服务。

2、解决方法

删除svc,重新映射端口即可。

kubectl delete svc nginx-deployment


三、K8S集群服务暴露失败?

Error from server (AlreadyExists): services "nginx-deployment" already exists



1、原因分析

该容器已暴露服务了。

2、解决方法

删除svc,重新映射端口即可。

四、外网无法访问K8S集群提供的服务?

1、原因分析

K8S集群的type为ClusterIP,未将服务暴露至外网。

2、解决方法

修改K8S集群的type为NodePort即可,于是可通过所有K8S集群节点访问服务。

kubectl edit svc nginx-deployment


五、pod状态为ErrImagePull?



readiness-httpget-pod   0/1     ErrImagePull   0          10s

图片

1、原因分析

image无法拉取;

图片

图片

2、解决方法

更换镜像即可。

六、创建init C容器后,其状态不正常?



NAME READY STATUS RESTARTS AGEmyapp-pod 0/1 Init:0/2 0 20s



1、原因分析

查看日志发现,pod一直出于初始化中;然后查看pod详细信息,定位pod创建失败的原因为:初始化容器未执行完毕。

Error from server (BadRequest): container "myapp-container" in pod "myapp-pod" is waiting to start: PodInitializing

图片

图片

图片

waiting for myservice
Server: 10.96.0.10Address: 10.96.0.10:53
** server can't find myservice.default.svc.cluster.local: NXDOMAIN
*** Can't find myservice.svc.cluster.local: No answer*** Can't find myservice.cluster.local: No answer*** Can't find myservice.default.svc.cluster.local: No answer*** Can't find myservice.svc.cluster.local: No answer*** Can't find myservice.cluster.local: No answer



2、解决方法

创建相关service,将SVC的name写入K8S集群的coreDNS服务器中,于是coreDNS就能对POD的initC容器执行过程中的域名解析了。

kubectl apply -f myservice.yaml

图片

图片

图片

NAME READY STATUS RESTARTS AGE
myapp-pod 0/1 Init:1/2 0 27mmyapp-pod 0/1 PodInitializing 0 28mmyapp-pod 1/1 Running 0 28m

图片

七、探测存活pod状态为CrashLoopBackOff?

1、原因分析

镜像问题,导致容器重启失败。

2、解决方法

更换镜像即可。

图片

图片

八、POD创建失败?

readiness-httpget-pod 0/1 Pending 0 0sreadiness-httpget-pod 0/1 Pending 0 0sreadiness-httpget-pod 0/1 ContainerCreating 0 0sreadiness-httpget-pod 0/1 Error 0 2sreadiness-httpget-pod 0/1 Error 1 3sreadiness-httpget-pod 0/1 CrashLoopBackOff 1 4sreadiness-httpget-pod 0/1 Error 2 15sreadiness-httpget-pod 0/1 CrashLoopBackOff 2 26sreadiness-httpget-pod 0/1 Error 3 37sreadiness-httpget-pod 0/1 CrashLoopBackOff 3 52sreadiness-httpget-pod 0/1 Error 4 82s



1、原因分析

镜像问题导致容器无法启动。

图片

2、解决方法

更换镜像。

图片

图片

九、POD的ready状态未进入?



readiness-httpget-pod   0/1     Running   0          116s



1、原因分析

POD的执行命令失败,无法获取资源。

图片

2、解决方法

进入容器内部,创建yaml定义的资源

图片

图片

十、pod创建失败?

图片

1、原因分析

yml文件内容出错—-使用中文字符;

2、解决方法

修改myregistrykey内容即可。

图片

十一、kube-flannel-ds-amd64-ndsf7插件pod的status为Init:0/1?

图片

1、排查思路

kubectl -n kube-system describe pod kube-flannel-ds-amd64-ndsf7 #查询pod描述信息;

图片

2、原因分析

k8s-slave1节点拉取镜像失败。

3、解决方法

登录k8s-slave1,重启docker服务,手动拉取镜像。

图片

k8s-master节点,重新安装插件即可。

kubectl create -f kube-flannel.yml;kubectl get nodes

图片

十二、K8S创建服务status为ErrImagePull?

图片

1、排查思路

kubectl describe pod test-nginx

图片

2、原因分析

拉取镜像名称问题。

3、解决方法

删除错误pod;重新拉取镜像;

kubectl delete pod test-nginx;kubectl run test-nginx --image=10.0.0.81:5000/nginx:alpine


十三、不能进入指定容器内部?

图片

1、原因分析

yml文件comtainers字段重复,导致该pod没有该容器。

2、解决方法

去掉yml文件中多余的containers字段,重新生成pod。

图片

图片

十四、创建PV失败?

图片

1、原因分析

pv的name字段重复。

2、解决方法

修改pv的name字段即可。

图片

十五、pod无法挂载PVC?

图片

图片

1、原因分析

pod无法挂载PVC。

图片

图片

accessModes与可使用的PV不一致,导致无法挂载PVC,由于只能挂载大于1G且accessModes为RWO的PV,故只能成功创建1个pod,第2个pod一致pending,按序创建时则第3个pod一直未被创建;

2、解决方法

修改yml文件中accessModes或PV的accessModes即可。

图片

十六、pod使用PV后,无法访问其内容?

图片

1、原因分析

nfs卷中没有文件或权限不对。

图片

图片

2、解决方法

在nfs卷中创建文件并授予权限。

图片

图片

十七、查看节点状态失败?



Error from server (NotFound): the server could not find the requested resource (get services http:heapster:)



1、原因分析

没有heapster服务。

2、解决方法

安装promethus监控组件即可。

图片

图片

十八、pod一直处于pending’状态?

图片

1、原因分析

由于已使用同样镜像发布了pod,导致无节点可调度。

图片

2、解决方法

删除所有pod后部署pod即可。

图片

十九、helm安装组件失败?



[root@k8s-master01 hello-world]# helm install
Error: This command needs 1 argument: chart nam
[root@k8s-master01 hello-world]# helm install ./Error: no Chart.yaml exists in directory "/root/hello-world"



1、原因分析

文件名格式不对。

2、解决方法

mv chart.yaml Chart.yaml

图片

作者丨chalon 来源丨网址:https://www.cnblogs.com/chalon/p/14415252.html dbaplus社群欢迎广大技术人员投稿,投稿邮箱:[email protected]


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK