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

结果是可以 的 !

posted @ 2022-03-22 10:32  ifnk  阅读(1421)  评论(0编辑  收藏  举报