k8s 自己做的 pod 老是出現 CrashLoopBackOff 的解決方法


起因

因為 調試 k8s 里面的接口的時候 要進到 pod 里面 才行(網絡的原因 dns) ,然后 有的pod 里面 連個 ping 都沒有…… 直接裝了 下次 pod 殺死 再換 ping 工具 就沒有了

所以想着自己專門搞個調試 的 pod , 里面 httpie ping 等工具都安裝好了,就 不用每次 都 在 服務的pod 里面調試 了

制作 dockerfile

FROM alpine:latest
# 設置國內源
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apk/repositories
RUN apk update
# 安裝 httpie 工具
RUN apk add httpie
# 后面想要啥工具自己添加

制作 k8s pod

因為 這個相當於是個工具 ,也沒有 自己的server ,所以就不用 弄 k8s 的 service 了, 直接 pod 完事

# 自己寫的 http-test k8s pod 主要用來 http 測試 服務好不好用
apiVersion: v1
kind: Pod
metadata:
  name: http-test
spec:
  containers:
    - name: http-test
      image: http-test:latest
      imagePullPolicy: IfNotPresent

啟動 k8s 的 pod

k apply -f deployments/addons/http-test.yaml

然后 問題就來了 ,他會頻繁的重啟 ,然后 顯示的就是 CrashLoopBackOff

$ k get pods -o wide 
NAME                                 READY   STATUS             RESTARTS      AGE   IP             NODE               NOMINATED NODE   READINESS GATES
 
http-test                            1/2     CrashLoopBackOff   1 (14s ago)   18s   10.244.0.184   k8s-master-node1   <none>           <none>

后來百度查了下 說是 容器運行需要有輸出,通常是容器中運行程序的日志輸出(容器通常就是運行一個應用) , 為了能夠讓容器不退出,你可以在運行命令中添加一段死循環

修改 pod.yaml

# 自己寫的 http-test k8s pod 主要用來 http 測試 服務好不好用
apiVersion: v1
kind: Pod
metadata:
  name: http-test
spec:
  containers:
    - name: http-test
      image: http-test:latest
      imagePullPolicy: IfNotPresent
      command:  # pod 起來調用命令 讓他睡個一個小時 
        - sleep
        - "3600"

然后 在看結果 就能 running 啦

$ k get pods -o wide 
NAME                                 READY   STATUS    RESTARTS      AGE   IP             NODE               NOMINATED NODE   READINESS GATES

http-test                            1/2     Running   0             4s    10.244.0.185   k8s-master-node1   <none>           <none>


進去看看能不能訪問其他 service

$ k exec -it http-test -- sh

/ # http get  http://blog-server:8050/api/menu
HTTP/1.1 200 OK
content-type: application/json; charset=utf-8
date: Tue, 22 Mar 2022 02:31:11 GMT
server: envoy
transfer-encoding: chunked
x-envoy-upstream-service-time: 16

結果是可以 的 !


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM