应用保障实战
在 Kubernetes 中,应用保障主要包括以下几个方面:
-
健康检查与自动恢复
-
容器状态探针(Liveness Probe & Readiness Probe):
- 存活探针(Liveness Probe):用于检测容器主进程是否仍在正常运行。如果存活探针失败,Kubernetes 会杀死并重新启动容器,即使应用程序本身没有退出。
- 就绪探针(Readiness Probe):用于判断容器是否准备好接收请求。如果就绪探针失败,Kubernetes 的 Endpoint Controller 会将 Pod 从对应 Service 的端点列表中移除,直到就绪探针成功为止。
YAML 示例:
apiVersion: v1 kind: Pod spec: containers: - name: my-container image: my-app:v1 livenessProbe: exec: command: - cat - /healthz initialDelaySeconds: 15 periodSeconds: 10 readinessProbe: httpGet: path: /readiness port: 8080 initialDelaySeconds: 5 periodSeconds: 10
-
-
资源配额管理
- 容器资源限制(Resource Limits):在容器级别,可以通过设置 CPU 和内存限制来防止容器过度消耗资源。
- Pod 级别资源限制:在 Pod 级别,可以为整个 Pod 设定资源需求和限制。
- 命名空间级别的资源配额(Resource Quotas):为整个命名空间设置资源总量上限,防止该命名空间内的应用占用过多集群资源。
YAML 示例(Pod 级别资源限制):
apiVersion: v1 kind: Pod spec: containers: - name: my-container image: my-app:v1 resources: limits: cpu: "1" memory: "512Mi" requests: cpu: "0.5" memory: "256Mi"
YAML 示例(命名空间级别资源配额):
apiVersion: v1 kind: ResourceQuota metadata: name: namespace-quota namespace: my-namespace spec: hard: limits.cpu: "2" limits.memory: "1Gi" requests.cpu: "1" requests.memory: "512Mi" pods: "10"
总结
应用保障的核心在于通过合理的资源配额设定防止资源耗尽,以及通过状态探针确保应用始终处于可服务状态。通过 Kubernetes 的资源管理机制和健康检查功能,可以确保集群中各个应用的服务质量与稳定性。在实践中,应根据应用的实际需求和集群资源情况灵活调整资源配置和健康检查策略。