如何正确配置探测端口

KubernetesKubernetesBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

Kubernetes 探测是一种强大的机制,可让你检查容器化应用程序的运行状况和就绪状态。本教程将指导你了解 Kubernetes 探测的不同类型,包括存活探测(Liveness Probes)、就绪探测(Readiness Probes)和启动探测(Startup Probes),以及如何配置它们以确保在 Kubernetes 集群中运行的应用程序的可靠性和可用性。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL kubernetes(("Kubernetes")) -.-> kubernetes/BasicCommandsGroup(["Basic Commands"]) kubernetes(("Kubernetes")) -.-> kubernetes/AdvancedCommandsGroup(["Advanced Commands"]) kubernetes(("Kubernetes")) -.-> kubernetes/TroubleshootingandDebuggingCommandsGroup(["Troubleshooting and Debugging Commands"]) kubernetes/BasicCommandsGroup -.-> kubernetes/get("Get") kubernetes/BasicCommandsGroup -.-> kubernetes/create("Create") kubernetes/AdvancedCommandsGroup -.-> kubernetes/apply("Apply") kubernetes/TroubleshootingandDebuggingCommandsGroup -.-> kubernetes/describe("Describe") kubernetes/TroubleshootingandDebuggingCommandsGroup -.-> kubernetes/logs("Logs") subgraph Lab Skills kubernetes/get -.-> lab-419128{{"如何正确配置探测端口"}} kubernetes/create -.-> lab-419128{{"如何正确配置探测端口"}} kubernetes/apply -.-> lab-419128{{"如何正确配置探测端口"}} kubernetes/describe -.-> lab-419128{{"如何正确配置探测端口"}} kubernetes/logs -.-> lab-419128{{"如何正确配置探测端口"}} end

理解 Kubernetes 探测

Kubernetes 探测是一种强大的机制,可让你检查容器化应用程序的运行状况和就绪状态。探测对于确保在 Kubernetes 集群中运行的应用程序的可靠性和可用性至关重要。Kubernetes 中有三种主要类型的探测:存活探测(Liveness Probes)、就绪探测(Readiness Probes)和启动探测(Startup Probes)。

Kubernetes 探测类型

存活探测:存活探测用于确定容器是否仍在运行且运行状况良好。如果存活探测失败,Kubernetes 将自动重启容器。

就绪探测:就绪探测用于确定容器是否准备好接受流量。如果就绪探测失败,容器将从服务的负载均衡器中移除。

启动探测:启动探测用于确定容器内的应用程序是否已启动。这对于启动缓慢的应用程序特别有用,因为它允许 Kubernetes 在启动存活探测和就绪探测之前等待应用程序准备好。

探测配置

可以使用各种方法配置探测,例如 HTTP 请求、TCP 连接和命令执行。探测的配置在容器的 livenessProbereadinessProbestartupProbe 字段中定义。

以下是一个带有存活探测和就绪探测的 Kubernetes 部署示例:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
        - name: my-app
          image: my-app:v1
          ports:
            - containerPort: 8080
          livenessProbe:
            httpGet:
              path: /healthz
              port: 8080
            periodSeconds: 10
            failureThreshold: 3
          readinessProbe:
            httpGet:
              path: /readyz
              port: 8080
            periodSeconds: 5
            failureThreshold: 3

在此示例中,存活探测每 10 秒检查一次 /healthz 端点,如果探测失败 3 次,容器将被重启。就绪探测每 5 秒检查一次 /readyz 端点,如果探测失败 3 次,容器将从服务的负载均衡器中移除。

实现存活探测

存活探测是 Kubernetes 应用程序的关键组件,因为它们有助于确保容器化服务的可靠性和可用性。存活探测用于确定容器是否仍在运行且运行状况良好。如果存活探测失败,Kubernetes 将自动重启容器,有助于维护应用程序的整体健康状况。

存活探测配置

存活探测可以使用多种方法进行配置,包括 HTTP 请求、TCP 连接和命令执行。存活探测的配置在容器规范的 livenessProbe 字段中定义。

以下是一个带有存活探测的 Kubernetes 部署示例:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
        - name: my-app
          image: my-app:v1
          ports:
            - containerPort: 8080
          livenessProbe:
            httpGet:
              path: /healthz
              port: 8080
            periodSeconds: 10
            failureThreshold: 3

在此示例中,存活探测每 10 秒检查一次 /healthz 端点,如果探测失败 3 次,容器将被重启。

存活探测策略

在实现存活探测时,为你的应用程序考虑适当的策略很重要。一些常见的存活探测策略包括:

  1. HTTP GET:检查特定的 HTTP 端点,当应用程序运行状况良好时返回成功状态码(例如,200 OK)。
  2. TCP 套接字:检查特定的 TCP 端口是否打开并接受连接,这对于非 HTTP 应用程序可能很有用。
  3. 命令执行:在容器内执行命令并检查退出代码,这对于更复杂的健康检查可能很有用。

存活探测策略的选择将取决于你的应用程序的特定要求和特性。

配置就绪探测

就绪探测是Kubernetes应用程序的重要组成部分,因为它们有助于确保你的容器准备好接收流量。就绪探测用于确定容器是否准备好接受请求。如果就绪探测失败,容器将从服务的负载均衡器中移除,直到它准备好之前都不会再接收流量。

就绪探测配置

就绪探测可以使用多种方法进行配置,包括HTTP请求、TCP连接和命令执行。就绪探测的配置在容器规范的“readinessProbe”字段中定义。

以下是一个带有就绪探测的Kubernetes部署示例:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
        - name: my-app
          image: my-app:v1
          ports:
            - containerPort: 8080
          readinessProbe:
            httpGet:
              path: /readyz
              port: 8080
            periodSeconds: 5
            failureThreshold: 3

在此示例中,就绪探测每5秒检查一次“/readyz”端点,如果探测失败3次,容器将从服务的负载均衡器中移除。

就绪探测技术

在实现就绪探测时,为你的应用程序考虑适当的技术很重要。一些常见的就绪探测技术包括:

  1. HTTP GET:检查特定的HTTP端点,当应用程序准备好接收流量时返回成功状态码(例如,200 OK)。
  2. TCP套接字:检查特定的TCP端口是否打开并接受连接,这对于非HTTP应用程序可能很有用。
  3. 命令执行:在容器内执行命令并检查退出代码,这对于更复杂的就绪检查可能很有用。

就绪探测技术的选择将取决于你的应用程序的特定要求和特性。

总结

在本教程中,你已经了解了Kubernetes探测的不同类型,以及如何配置它们以有效地监控容器化应用程序的运行状况和就绪状态。通过实现存活探测和就绪探测,你可以确保应用程序正确运行并能够处理传入流量。理解并正确配置Kubernetes探测是在Kubernetes环境中构建强大且可靠的应用程序的关键环节。