如何为 livenessProbe/readinessProbe 定义 Pod 健康检查端口

Eve*_*ton 2 kubernetes kubernetes-health-check kubernetes-pod

如何定义不同的 Pod 端口,一个用于应用程序,另一个用于运行状况检查 (readinessProbe)?

如下所示的端口规范是否是使 readinessProbe 检查运行状况检查端口 TCP/9090 的正确方法?我的意思是,readinessProbe 是否会到达端口 9090(当然假设它是由正在运行的容器打开的)?或者是否需要指定任何其他端口(nodePort、targetPort、端口等)?

kind: Deployment
spec:
  template:
    spec:
      containers:
      - name: myapp
        image: <image>
        ports:
        - name: myapp-port
          containerPort: 8080
          protocol: TCP
        - name: healthcheck-port
          containerPort: 9090
          protocol: TCP

        readinessProbe:
          httpGet:
            port: healthcheck-port
            scheme: HTTP
          initialDelaySeconds: 60
          timeoutSeconds: 5
          periodSeconds: 10
          successThreshold: 2
          failureThreshold: 2
Run Code Online (Sandbox Code Playgroud)

Sha*_*k V 7

是的,您的规范片段几乎是正确的。您无需指定任何其他内容即可使就绪探测正常工作。

端口名称不能超过 15 个字符,因此该名称healthcheck-port不起作用。您可能想将名称更改为较小的名称,例如healthcheck.

  • 它位于[验证代码中。](https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/apimachinery/pkg/util/validation/validation.go#L284) (2认同)