Kubernetes中Nginx服務(wù)啟動(dòng)失敗排查流程分析(Error:?ImagePullBackOff)
?pod節(jié)點(diǎn)啟動(dòng)失敗,nginx服務(wù)無(wú)法正常訪問(wèn),服務(wù)狀態(tài)顯示為ImagePullBackOff。
[root@m1 ~]# kubectl get pods NAME READY STATUS RESTARTS AGE nginx-f89759699-cgjgp 0/1 ImagePullBackOff 0 103m
??查看nginx服務(wù)的Pod節(jié)點(diǎn)詳細(xì)信息。
[root@m1 ~]# kubectl describe pod nginx-f89759699-cgjgp
Name: nginx-f89759699-cgjgp
Namespace: default
Priority: 0
Service Account: default
Node: n1/192.168.200.84
Start Time: Fri, 10 Mar 2023 08:40:33 +0800
Labels: app=nginx
pod-template-hash=f89759699
Annotations: <none>
Status: Pending
IP: 10.244.3.20
IPs:
IP: 10.244.3.20
Controlled By: ReplicaSet/nginx-f89759699
Containers:
nginx:
Container ID:
Image: nginx
Image ID:
Port: <none>
Host Port: <none>
State: Waiting
Reason: ImagePullBackOff
Ready: False
Restart Count: 0
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from default-token-zk8sj (ro)
Conditions:
Type Status
Initialized True
Ready False
ContainersReady False
PodScheduled True
Volumes:
default-token-zk8sj:
Type: Secret (a volume populated by a Secret)
SecretName: default-token-zk8sj
Optional: false
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal BackOff 57m (x179 over 100m) kubelet Back-off pulling image "nginx"
Normal Pulling 7m33s (x22 over 100m) kubelet Pulling image "nginx"
Warning Failed 2m30s (x417 over 100m) kubelet Error: ImagePullBackOff
發(fā)現(xiàn),獲取nginx鏡像失敗??赡苁怯捎贒ocker服務(wù)引起的。
于是,檢查Docker是否正常啟動(dòng)
systemctl status docker
發(fā)現(xiàn),docker服務(wù)啟動(dòng)失敗??,手動(dòng)嘗試重新啟動(dòng)。
systemctl restart docker
但是,重啟docker服務(wù)失敗,出現(xiàn)如下報(bào)錯(cuò)信息。
[root@m1 ~]# systemctl restart docker Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details.
執(zhí)行systemctl restart docker命令失效。
接著,當(dāng)執(zhí)行docker version命令時(shí),發(fā)現(xiàn)未能連接到Docker daemon
[root@m1 ~]# docker version Client: Docker Engine - Community Version: 20.10.17 API version: 1.41 Go version: go1.17.11 Git commit: 100c701 Built: Mon Jun 6 23:03:11 2022 OS/Arch: linux/amd64 Context: default Experimental: true Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
于是,再次通過(guò)執(zhí)行systemctl status docker命令,查看docker服務(wù)未能啟動(dòng),閱讀輸出報(bào)錯(cuò)信息,如下所示。
[root@m1 ~]# systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Fri 2023-03-10 10:28:16 CST; 4min 35s ago
Docs: https://docs.docker.com
Main PID: 2221 (code=exited, status=1/FAILURE)
Mar 10 10:28:13 m1 systemd[1]: docker.service: Main process exited, code=exited, status=1/FAILURE
Mar 10 10:28:13 m1 systemd[1]: docker.service: Failed with result 'exit-code'.
Mar 10 10:28:13 m1 systemd[1]: Failed to start Docker Application Container Engine.
Mar 10 10:28:16 m1 systemd[1]: docker.service: Service RestartSec=2s expired, scheduling restart.
Mar 10 10:28:16 m1 systemd[1]: docker.service: Scheduled restart job, restart counter is at 3.
Mar 10 10:28:16 m1 systemd[1]: Stopped Docker Application Container Engine.
Mar 10 10:28:16 m1 systemd[1]: docker.service: Start request repeated too quickly.
Mar 10 10:28:16 m1 systemd[1]: docker.service: Failed with result 'exit-code'.
Mar 10 10:28:16 m1 systemd[1]: Failed to start Docker Application Container Engine.
[root@m1 ~]#通過(guò)上述輸出顯示,Docker 服務(wù)進(jìn)程的啟動(dòng)失敗,狀態(tài)為 1/FAILURE。
?接下來(lái),嘗試通過(guò)以下步驟來(lái)排查和解決問(wèn)題:
1??查看 Docker 服務(wù)日志:使用以下命令查看 Docker 服務(wù)日志,以便更詳細(xì)地了解失敗原因。
sudo journalctl -u docker.service

2?? 通過(guò)輸出Ddocker日志分析,提取到了相關(guān)報(bào)錯(cuò)信息片段,發(fā)現(xiàn)是配置daemon中的/etc/docker/daemon.json配置文件出錯(cuò)導(dǎo)致的。
Mar 10 10:20:17 m1 systemd[1]: Starting Docker Application Container Engine... Mar 10 10:20:17 m1 dockerd[1572]: unable to configure the Docker daemon with file /etc/docker/daemon.json: invalid character '"' after object key:value pair Mar 10 10:20:17 m1 systemd[1]: docker.service: Main process exited, code=exited, status=1/FAILURE Mar 10 10:20:17 m1 systemd[1]: docker.service: Failed with result 'exit-code'. Mar 10 10:20:17 m1 systemd[1]: Failed to start Docker Application Container Engine. Mar 10 10:20:19 m1 systemd[1]: docker.service: Service RestartSec=2s expired, scheduling restart. Mar 10 10:20:19 m1 systemd[1]: docker.service: Scheduled restart job, restart counter is at 2. Mar 10 10:20:19 m1 systemd[1]: Stopped Docker Application Container Engine.
3??此時(shí),查看daemon配置文件/etc/docker/daemon.json是否配置正確。
[root@m1 ~]# cat /etc/docker/daemon.json
{
# 設(shè)置 Docker 鏡像的注冊(cè)表鏡像源為阿里云鏡像源。
"registry-mirrors": ["https://w2kavmmf.mirror.aliyuncs.com"]
# 指定 Docker 守護(hù)進(jìn)程使用 systemd 作為 cgroup driver。
"exec-opts": ["native.cgroupdriver=systemd"]
}咋一看,配置信息沒(méi)有什么問(wèn)題,都是正確的,但仔細(xì)一看,就會(huì)發(fā)現(xiàn)應(yīng)該在"registry-mirrors"選項(xiàng)的結(jié)尾添加逗號(hào)。犯了缺少逗號(hào)(,)導(dǎo)致的語(yǔ)法錯(cuò)誤,終于找到了問(wèn)題根源。
??修改后:
[root@m1 ~]# cat /etc/docker/daemon.json
{
"registry-mirrors": ["https://w2kavmmf.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"]
}
[root@m1 ~]# cat /etc/docker/daemon.json
{
"registry-mirrors": ["https://w2kavmmf.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"]
}按下:wq報(bào)錯(cuò)退出。
4?? 重新加載系統(tǒng)并重新啟動(dòng)Docker服務(wù)
systemctl daemon-reload systemctl restart docker systemctl status docker
5??檢查docker版本信息是否輸出正常
[root@m1 ~]# docket version -bash: docket: command not found [root@m1 ~]# docker version Client: Docker Engine - Community Version: 20.10.17 API version: 1.41 Go version: go1.17.11 Git commit: 100c701 Built: Mon Jun 6 23:03:11 2022 OS/Arch: linux/amd64 Context: default Experimental: true Server: Docker Engine - Community Engine: Version: 20.10.17 API version: 1.41 (minimum version 1.12) Go version: go1.17.11 Git commit: a89b842 Built: Mon Jun 6 23:01:29 2022 OS/Arch: linux/amd64 Experimental: false containerd: Version: 1.6.6 GitCommit: 10c12954828e7c7c9b6e0ea9b0c02b01407d3ae1 runc: Version: 1.1.2 GitCommit: v1.1.2-0-ga916309 docker-init: Version: 0.19.0 GitCommit: de40ad0
[root@m1 ~]# docker info Client: Context: default Debug Mode: false Plugins: app: Docker App (Docker Inc., v0.9.1-beta3) buildx: Docker Buildx (Docker Inc., v0.8.2-docker) scan: Docker Scan (Docker Inc., v0.17.0) Server: Containers: 20 Running: 8 Paused: 0 Stopped: 12 Images: 20 Server Version: 20.10.17 Storage Driver: overlay2 Backing Filesystem: xfs Supports d_type: true Native Overlay Diff: true userxattr: false Logging Driver: json-file Cgroup Driver: systemd Cgroup Version: 1 Plugins: Volume: local Network: bridge host ipvlan macvlan null overlay Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog Swarm: inactive Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc Default Runtime: runc Init Binary: docker-init containerd version: 10c12954828e7c7c9b6e0ea9b0c02b01407d3ae1 runc version: v1.1.2-0-ga916309 init version: de40ad0 Security Options: seccomp Profile: default Kernel Version: 4.18.0-372.9.1.el8.x86_64 Operating System: Rocky Linux 8.6 (Green Obsidian) OSType: linux Architecture: x86_64 CPUs: 2 Total Memory: 9.711GiB Name: m1 ID: 4YIS:FHSB:YXRI:CED5:PJSJ:EAS2:BCR3:GJJF:FDPK:EDJH:DVKU:AIYJ Docker Root Dir: /var/lib/docker Debug Mode: false Registry: https://index.docker.io/v1/ Labels: Experimental: false Insecure Registries: 127.0.0.0/8 Registry Mirrors: https://w2kavmmf.mirror.aliyuncs.com/ Live Restore Enabled: false
至此,Docker服務(wù)重啟成功,pod節(jié)點(diǎn)恢復(fù)正常,Nginx服務(wù)能夠正常訪問(wèn)。
[root@m1 ~]# kubectl get pods NAME READY STATUS RESTARTS AGE nginx-f89759699-cgjgp 1/1 Running 0 174m
查看pod詳細(xì)信息,顯示正常。
[root@m1 ~]# kubectl describe pod nginx-f89759699-cgjgp
Name: nginx-f89759699-cgjgp
Namespace: default
Priority: 0
Service Account: default
Node: n1/192.168.200.84
Start Time: Fri, 10 Mar 2023 08:40:33 +0800
Labels: app=nginx
pod-template-hash=f89759699
Annotations: <none>
Status: Running
IP: 10.244.3.20
IPs:
IP: 10.244.3.20
Controlled By: ReplicaSet/nginx-f89759699
Containers:
nginx:
Container ID: docker://88bdc2bfa592f60bf99bac2125b0adae005118ae8f2f271225245f20b7cfb3c8
Image: nginx
Image ID: docker-pullable://nginx@sha256:aa0afebbb3cfa473099a62c4b32e9b3fb73ed23f2a75a65ce1d4b4f55a5c2ef2
Port: <none>
Host Port: <none>
State: Running
Started: Fri, 10 Mar 2023 10:37:42 +0800
Ready: True
Restart Count: 0
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from default-token-zk8sj (ro)
Conditions:
Type Status
Initialized True
Ready True
ContainersReady True
PodScheduled True
Volumes:
default-token-zk8sj:
Type: Secret (a volume populated by a Secret)
SecretName: default-token-zk8sj
Optional: false
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal BackOff 58m (x480 over 171m) kubelet Back-off pulling image "nginx"
[root@m1 ~]# 
到此這篇關(guān)于Kubernetes中Nginx服務(wù)啟動(dòng)失敗排查流程(Error: ImagePullBackOff)的文章就介紹到這了,更多相關(guān)Nginx服務(wù)啟動(dòng)失敗內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
nginx url自動(dòng)加斜杠及301重定向的問(wèn)題
這篇文章主要介紹了nginx url自動(dòng)加斜杠及301重定向的問(wèn)題的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-09-09
nginx 讓users有權(quán)限啟動(dòng)的兩種方法
這篇文章主要介紹了nginx 讓users有權(quán)限啟動(dòng)兩種方法的相關(guān)資料,需要的朋友可以參考下2017-05-05
nginx?某些url只能由特定ip訪問(wèn)的實(shí)現(xiàn)
在Nginx中針對(duì)某些URL只允許特定IP地址訪問(wèn),本文就來(lái)介紹一下如何實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09
Nginx+Tomcat的服務(wù)器端環(huán)境配置詳解
這篇文章主要介紹了Nginx+Tomcat的服務(wù)器端環(huán)境配置詳解,包括Nginx與Tomcat的監(jiān)控開(kāi)啟方法,需要的朋友可以參考下2015-12-12
Keepalived實(shí)現(xiàn)Nginx負(fù)載均衡高可用的示例代碼
這篇文章主要介紹了Keepalived實(shí)現(xiàn)Nginx負(fù)載均衡高可用的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04
Nginx中實(shí)現(xiàn)訪問(wèn)HTTP請(qǐng)求時(shí)自動(dòng)跳轉(zhuǎn)到HTTPS請(qǐng)求
本文主要介紹了Nginx中實(shí)現(xiàn)訪問(wèn)HTTP請(qǐng)求時(shí)自動(dòng)跳轉(zhuǎn)到HTTPS請(qǐng)求,下面介紹了兩種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-08-08
filebeat同時(shí)收集錯(cuò)誤日志與普通日志并存詳解
這篇文章主要為大家介紹了filebeat同時(shí)收集錯(cuò)誤日志與普通日志并存詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08

