如何忽略多容器 Pod 中容器的故障?

2024-04-23

我有一个多容器应用程序:app + sidecar。两个容器都应该一直处于活动状态,但 sidecar 并不是那么重要。 Sidecar 依赖于外部资源,如果该资源不可用 - Sidecar 就会崩溃。它会导致整个吊舱瘫痪。 Kubernetes 尝试重新创建 pod,但失败了,因为 sidecar 现在无法启动。 但从我的业务逻辑角度来看,sidecar 崩溃是绝对正常的。拥有那个边车很好,但不是强制性的。 我不希望 sidecar 在崩溃时带走主应用程序。 实现这一目标的最佳 Kubernetes 原生方式是什么? 是否有可能告诉 kubernetes 将 sidecar 的故障忽略为“误报”事件,这绝对没问题?

我在 Pod 规范中找不到任何控制该行为的内容。

My 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"

Warning:被标记为“正确”的答案似乎不起作用。

将 Liveness Probe 添加到应用程序容器并将重新启动策略设置为“从不”,将导致 Pod 停止并从未重新启动过在 sidecar 容器已停止并且应用程序容器的 Liveness Probe 失败的情况下。这是一个问题,因为您确实希望重新启动应用程序容器。

该问题应按如下方式解决:

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

livenessProbe:指示容器是否正在运行。如果活性探测失败,kubelet 将终止容器,并且容器将遵循其重新启动策略。如果容器不提供活性探测,则默认状态为成功。容器探针 https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何忽略多容器 Pod 中容器的故障? 的相关文章

  • Kubernetes - Pod 内的容器通信使用名称而不是“localhost”?

    来自 Kubernetesdocs http kubernetes io docs user guide pods Pod 中的应用程序都使用相同的网络命名空间 相同的 IP 和端口空间 因此可以 find 彼此并使用本地主机进行通信 是否
  • Kubernetes:如何从一个环境变量引用另一个环境变量?

    I ve a Deployment我使用以下方法公开 POD ID 的对象向下API https kubernetes io docs tasks inject data application environment variable e
  • AWS Kubernetes 集群中出现“创建 pod 沙盒失败”pod 错误

    问题摘要我们曾多次观察到 我们的集群运行时遇到这样的问题 一个或多个节点上的一个或多个 Pod 无法启动 Pod 内的一个或多个容器未启动 Pod 显示 创建 Pod 沙箱失败 错误 在 受影响的 节点上重新启动 docker 或 kube
  • Kubernetes - 以编程方式找出服务 IP 范围 CIDR

    我需要一种方法来获取适用于所有 Kubernetes 集群的服务集群 IP 范围 如 CIDR 我尝试了以下方法 这对于使用 kubeadm 创建的集群效果很好 因为它会 grep apiserver pod 的参数 kubectl clu
  • 如何从 Kubernetes Pod 连接到私有 IP

    我正在尝试从 Pod 内连接到私有 IP 从 Pod 对该 IP 执行 Ping 操作返回无法访问 但是 我可以从主机系统 ping 该 IP 将流量从 pod 路由到目标私有 IP 的最佳方式是什么 Pod 不允许直接连接到 kubern
  • 如何向 HPA 提供外部指标?

    问题设置 假设我有 2 个 pod A 和 B 我希望能够根据任意来源的任意数量动态扩展 pod A 假设 pod B 是这样一个源 例如 它可以拥有一个带有端点的 HTTP 服务器 该端点在请求时以 pod A 所需的副本数量进行响应 或
  • Helm + Kubernetes,加载并启用 PHP 中的扩展或模块

    当我使用 kubernetes 运行 php 部署时遇到问题 因为不加载模块或扩展库 我的部署文件是这样的 apiVersion apps v1 kind Deployment metadata name php labels app ph
  • 从部署配置中配置 Pod 的重启策略

    我们正在使用 Openshift Kubernetes 的托管版本 我正在努力将部署配置创建的所有 pod 的 pod 重启策略从 始终 设置为 从不 但我不确定 yaml 中的位置来做出这个改变 我们的部署配置如下所示 kind Depl
  • 更改 Kubernetes 中的 CPU 管理器策略

    我正在尝试更改我管理的 Kubernetes 集群的 CPU 管理器策略 如上所述here https kubernetes io docs tasks administer cluster cpu management policies
  • Prometheus - 监控容器中的命令输出

    我需要监控 eks 集群中具有 nfs 挂载路径的许多旧容器 使用 nfs client helm 图表映射容器 i 中的 nfs 目录 我需要监视我的安装路径何时由于某种原因丢失 而我发现做到这一点的唯一方法是在容器中执行命令 bin b
  • Pod 清单写入 Deployment Manifest

    在 Kubernetes 中 将正在运行的 pod 清单转换为具有 x 个副本的部署的简单方法是什么 我尝试获取清单 k get po xyz o yaml gt po1 yaml 然后编辑 yaml 并与部署清单匹配 但这似乎并不容易 我
  • 通过流式传输将分段文件上传到 Amazon S3 时内存使用率过高?

    我的 Java Spring 应用程序中的以下方法直接将文件流式传输并上传到 Amazon S3 存储桶 我研究过 使用流将使上传大文件 对于我的用例 gt 100MB 视频 更加内存有效 当使用 25MB 文件测试该方法时 Kuberne
  • 尝试使用 minikube 运行示例微服务应用程序时如何解决 DNS 查找错误

    亲爱的 StackOverflow 社区 我正在尝试运行https github com GoogleCloudPlatform microservices demo https github com GoogleCloudPlatform
  • 如何找出 Kubernetes 中可用的端口?

    我想在 kubernetes 集群中的不同端口上运行多个服务 并且想知道如何检查哪些端口可用并且不会与我的服务产生任何冲突 我还想知道每个端口上的服务名称 以便我可以更好地理解我的配置 有类似的问题涉及验证哪个NodePorts已经在使用中
  • Kubernetes 仪表板 - ServiceUnavailable(503 错误)

    我是 Kubernetes 新手 我正在尝试使用 kops 在 AWS 上设置 Kubernetes 集群 我成功地设置了集群 但是 我无法访问仪表板 UI https kubernetes io docs tasks access app
  • 在 Kubernetes API 中启用 CORS

    有没有办法在 Kubernetes API 上启用 CORS 以便我可以使用不同的域向 Kubernetes API 发送 ajax 请求 通过将 cors allowed origins http 参数添加到 etc default ku
  • 从头开始使用映像部署无法启动

    我正在使用以下内容构建图像Dockerfile FROM golang 1 19 2 bullseye as builder COPY src src WORKDIR src RUN CGO ENABLED 1 go build race
  • Jenkinsfile 泊坞窗

    我正在 docker 容器内的 GCE 上运行一个 jenkins 实例 并希望从此 Jenkinsfile 和 Github 执行多分支管道 我正在使用GCE詹金斯 https cloud google com solutions con
  • Grafana/prometheus 中没有 kafka 指标

    我成功部署了 Helm Chart普罗米修斯操作员 https github com coreos prometheus operator tree master helm prometheus operator kube 普罗米修斯 ht
  • 从 celery 工作人员到普罗米修斯的自定义指标

    我有一些 celery 工作人员在 kubernetes 下的容器中运行 它们不会由 celery 自动缩放 并且每个都在单个进程中运行 即没有多处理 我想从他们那里获取一堆不同的指标到普罗米修斯中 我研究过 celery promethe

随机推荐

  • 片段交易动画完成后执行操作

    我想在动画完成后设置按钮可见性 这就是所谓的动画 android support v4 app FragmentTransaction fAnimation this getActivity getSupportFragmentManage
  • 消除具有反向关系且无主键的元组

    我试图根据下面的问题插入所有关系 我已经得到了从 A 到 C 的所有关系 根据下面的问题 但就我而言 我还得到了 C 与 A 的朋友 的记录 据我理解问题陈述 没有重复的友谊 我必须将友谊插入为 A 到 C 而不是反之亦然 要么我对问题理解
  • 错误“DocumentNotFoundError:找不到查询的文档”{_id:xxx}

    我克隆了对象 preventivo 当我运行此代码时 出现以下错误 节点 24548 UnhandledPromiseRejectionWarning 未处理的承诺拒绝 拒绝ID 1 DocumentNotFoundError 在模型 pr
  • 使用 Flask-Login 在 Flask 中获取“str”对象没有属性“is_authenticated”

    我正在尝试使用 Flask Login 设置 Flask 登录 我有一个供用户使用的 CouchDB 客户文档有一个称为 用户 的对象 class User UserMixin def init self user self name us
  • 包含 php 类时未找到该类

    我在 php 中有一个名为 SEO URL 的类 在那堂课上的某个时刻我有这个 class name cPath SEO URL return class name href 我得到 Fatal error Class cPath SEO
  • “仅”在暂存文件上运行 eslint

    我正在尝试使用预提交挂钩在提交发生之前检测 eslint 错误 我正在使用哈士奇和 lint staged 但它对 src 中的所有文件运行 lint 命令 而不仅仅是对暂存文件运行 lint 命令 这是我的 package json 文件
  • Android 的 BitmapFactory 解码函数

    我遇到问题 decodeStream功能 File cacheMap new File context getCacheDir test GIF if cacheMap exist FileInputStream is new FileIn
  • 并行调用一系列 Promise,但按顺序解决它们,而不等待其他 Promise 解决

    我有一系列的承诺 我想并行调用 但同步解析 我编写了这段代码来完成所需的任务 但是 我需要创建自己的对象QueryablePromise包裹原生Promise我可以同步检查它的已解决状态 有没有更好的方法来完成这个不需要特殊对象的任务 请注
  • 将信息添加到数据帧的 if 条件

    我需要创建一个包含以下列的数据框 WEB Country Organisation 我从网站中提取这些信息 但是 有些网站的网站上没有任何信息 这导致我在更新数据框时遇到一些问题 不幸的是 该代码一次只能运行一个网站 否则会出现验证码 请参
  • Latex:列表前后的垂直空间

    我无法摆脱列表前后的垂直空间 我有如下代码 begin list setlength itemsep 0pt setlength parskip 0pt setlength parsep 0pt item First item item S
  • 正则表达式匹配引号外的文本等

    1 我想出了这个正则表达式来匹配所有引用的字符串 看起来效果很好 问题是如何匹配不在引号内的文本 不知怎的 逆负负 我阅读了文档并 1 不起作用 嗯 如果第一个正则表达式有效 我将使用它从输入字符串中删除所有带引号的字符串 然后 您将剩下的
  • 如何编写 Linq 表达式来对一组实体调用 OrderBy?

    有人可以解释构建表达式的语法 该表达式将按实体上用户指定的属性进行排序吗 这篇 MSDN 文章对提供帮助有很大帮助 但它涉及一个简单的字符串列表 我的数据集包含我自己的自定义对象 http msdn microsoft com en us
  • C++ 将三个 char* 字符串连接在一起[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 询问代码的问题必须对所解决的问题表现出最低限度的了解 包括尝试的解决方案 为什么不起作用以及预期结果 也可以看看 Stack Overfl
  • 从表单提交获取 JSON 响应

    我不是前端开发人员 并且我花了相当多的时间尝试这样做 希望你们能帮助我 我有一个将文件发送到服务器中的 API 的表单 如下所示
  • 将 R data.frame 转换为 Javascript 数组

    我想将数据框的某些列保存为特定格式 JavaScript 格式 我尝试过使用toJSON from rjson包但这不起作用 我的结果应该是这样的 http leaflet github io Leaflet markercluster e
  • 如何折叠ListView中的所有Group Expander?

    我有一个ListView with a GroupStyle在上面 在风格上我有一个Expander 我想用一个ContextMenu in the ListView一键折叠和展开所有组 我想通过单击扩展器来展开每个组 我怎样才能获得组 然
  • 无法安装 matplotlib

    当我在 64 位 Windows 中安装 matplotlib 时 它需要 numpy 然后我安装了 numpy 并再次安装了 matplotlib 然后它说 numpy 1 7 1 freetype2 found but unknown
  • Perforce:如何删除 p4v 拒绝删除的变更列表?

    使用 perforce 一段时间后 我留下了许多尚未完成的变更列表 为了清理 我想摆脱其中的一部分 所以这就是让事情变得复杂的原因 对于更改的子集 客户端的主机已更改 某些更改包含搁置的文件 更改列表中的文件可能会被删除或移动 当更改列表满
  • iOS——codeSense 中自动合成属性的“添加”方法

    我刚刚创建了一个具有以下属性的 iOS 类 property nonatomic strong NSString foo property nonatomic strong NSObject bar property nonatomic C
  • 如何忽略多容器 Pod 中容器的故障?

    我有一个多容器应用程序 app sidecar 两个容器都应该一直处于活动状态 但 sidecar 并不是那么重要 Sidecar 依赖于外部资源 如果该资源不可用 Sidecar 就会崩溃 它会导致整个吊舱瘫痪 Kubernetes 尝试