gpt4 book ai didi

kubernetes - 如何忽略多容器 pod 中容器的故障?

转载 作者:行者123 更新时间:2023-12-02 11:33:08 26 4
gpt4 key购买 nike

我有一个多容器应用程序:app + sidecar。两个容器都假设一直处于事件状态,但 sidecar 并不是那么重要。
Sidecar 依赖于外部资源,如果此资源不可用 - sidecar 崩溃。它需要整个 pods 。 Kubernetes 尝试重新创建 pod 并失败,因为 sidecar 现在无法启动。
但从我的业务逻辑角度来看——sidecar 崩溃是绝对正常的。有那个边车很好,但不是强制性的。
我不希望边车在崩溃时带走主应用程序。
实现这一目标的最佳 Kubernetes 原生方式是什么?
是否可以告诉 kubernetes 忽略 sidecar 的失败作为“误报”事件,这绝对没问题?
我在 pod 规范中找不到任何控制该行为的内容。
我的 yaml:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: myapp
spec:
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 0
template:
metadata:
labels:
app: myapp
spec:
volumes:
- name: logs-dir
emptyDir: {}
containers:
- name: myapp
image: ${IMAGE}
ports:
- containerPort: 9009
volumeMounts:
- name: logs-dir
mountPath: /usr/src/app/logs
resources:
limits:
cpu: "1"
memory: "512Mi"
readinessProbe:
initialDelaySeconds: 60
failureThreshold: 8
timeoutSeconds: 1
periodSeconds: 8
httpGet:
scheme: HTTP
path: /myapp/v1/admin-service/git-info
port: 9009
- name: graylog-sidecar
image: digiapulssi/graylog-sidecar:latest
volumeMounts:
- name: logs-dir
mountPath: /log
env:
- name: GS_TAGS
value: "[\"myapp\"]"
- name: GS_NODE_ID
value: "nodeid"
- name: GS_SERVER_URL
value: "${GRAYLOG_URL}"
- name: GS_LIST_LOG_FILES
value: "[\"/ctwf\"]"
- name: GS_UPDATE_INTERVAL
value: "10"
resources:
limits:
memory: "128Mi"
cpu: "0.1"

最佳答案

警告:标记为“正确”的答案似乎不起作用。
在应用容器中添加 Liveness Probe 并将 Restart Policy 设置为“Never”,将导致 Pod 停止和 从未重启 在 sidecar 容器已停止且应用程序容器的 Liveness Probe 失败的情况下。这是一个问题,因为您确实希望重新启动应用程序容器。
应按如下方式解决问题:

  • 在启动命令中调整 sidecar 容器,以在应用程序进程失败时保持主进程运行。这可以通过额外的脚本来完成,例如通过附加 | tail -f /dev/null到启动命令。
  • 将 Liveness Probe 添加到应用程序容器通常是一个好主意。但请记住,它只能保护您免受应用程序进程继续运行而您的应用程序未处于正确状态的情况。它肯定不会覆盖restartPolicy:

  • livenessProbe: Indicates whether the container is running. If the liveness probe fails, the kubelet kills the container, and the container is subjected to its restart policy. If a Container does not provide a liveness probe, the default state is Success.Container Probes

    关于kubernetes - 如何忽略多容器 pod 中容器的故障?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57593518/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com