首页 > 解决方案 > Netshoot Sidecar 容器 CrashLoopBackOff

问题描述

我试图在同一个 pod 上使用 netshoot 图像和 Nginx 服务器图像。

如果我没有在 netshoot 容器中包含 sleep 参数,

args:
        - sleep
        - '9999999999999999999'

pod 状态始终变为 CrashLoopBackOff。我不明白为什么我必须将 sleep 参数放在 netshoot 容器中的 sleep 当前线程中。容器是否必须包含应用程序服务器或运行的 jar 才能保持运行状态?我想我错过了关于容器运行机制的基本点。谢谢。

apiVersion: apps/v1
kind: Deployment
metadata:
  # Define the Deployment Name
  name: nginx-deployment
  labels:
    app: nginx
spec:
  # Define the Number of Pods
  replicas: 1
  # Define the Selector
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers: # Container Details
      - name: nginx
        image: nginx:latest # Image
        ports:
        - containerPort: 80
      - name: netshoot
        image: nicolaka/netshoot:latest
        args:
        - sleep
        - '9999999999999999999'

标签: kubernetesdeploymentcontainerssidecar

解决方案


容器是一个命令的包装器,它们一直运行到该命令退出。netshoot 的默认命令是zsh. 与其他 shell 一样,它们一直运行到到达退出命令、信号中断它们或它们处理的输入返回 EOF。如果没有定义任何标准输入,容器将立即到达该 EOF。

顺便说一句,容器的常见 noop 命令是tail -f /dev/null.


推荐阅读