kubernetes 如何在容器上定义就绪探测器,以检查同一Pod中的其他容器的运行状况?

eqfvzcg8  于 2023-03-17  发布在  Kubernetes
关注(0)|答案(2)|浏览(97)

我在OpenShift中有一个包含容器A和容器B的部署对象,这里的要求是,无论何时容器B退出,容器A都应该跟随,否则整个pod都应该被替换。
有没有办法做到这一点?
这是我的YAML。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: app-redis-bundle
  labels:
    app: app-redis-bundle
spec:
  replicas: 1
  selector:
    matchLabels:
      app: app-redis-bundle
  template:
    metadata:
      labels:
        app: app-redis-bundle
    spec:
      containers:
        - name: cache-store-2
          image: redis
          resources:
            limits:
              cpu: 500m
              memory: 1500Mi
            requests:
              cpu: 250m
              memory: 1Gi
          ports:
            - containerPort: 6379
          livenessProbe:
            tcpSocket:
              port: 6379
        
        - name: app-server-2
          image: 'app:latest'
          resources:
            limits:
              cpu: '1'
              memory: 1Gi
            requests:
              cpu: 500m
              memory: 512Mi
          ports:
            - containerPort: 8443
          livenessProbe:
            tcpSocket:
              port: 8443
      imagePullSecrets:
        - name: mysecret
ee7vknir

ee7vknir1#

两个容器使用相同的临时网络,这意味着容器A可以在“本地主机:端口”上与容器B通信。
这个多容器pod是explained here,非常清楚。

6ss1mwsb

6ss1mwsb2#

感谢您的评分
现在问题解决了。
请允许我详细阐述这个问题并解释解决办法。

问题陈述

我需要在OpenShift中部署一个包含2个容器A和B的Pod,以便每当容器A终止时,容器B也会自动终止自己。
最初,我的方法是从容器A运行容器B中的终止脚本。然而,这种方法没有帮助。
溶液
使用liveness探测器将TCP Socket连接从B发送到正在运行的端口上的A,这很神奇,现在只要A退出,B就会终止。
任务完成。
下面是工作的yaml。

apiVersion: v1
kind: Pod
metadata:
  labels:
    test: liveness
  name: live
spec:
  restartPolicy: Never
  containers:
  - name: nginx
    image: nginx:latest
    args:
    - /bin/sh
    - -c
    - touch /tmp/healthy; sleep 30; rm -f /tmp/healthy; sleep 600;
    livenessProbe:
      exec:
        command:
        - cat
        - /tmp/healthy
      initialDelaySeconds: 5
      periodSeconds: 5

  - name: liveness
    image: registry.k8s.io/busybox
    ports:
    - containerPort: 80
    livenessProbe:
      tcpSocket:
        port: 80
      initialDelaySeconds: 5
      periodSeconds: 5

相关问题