Pod 隔离

引言

Pod 隔离能够动态地将故障的 Pods 从服务流量中排除,同时保持其运行状态。该功能具有以下优点:

  • 防止对缺陷端点的请求失败
  • 在故障排除期间维护服务可用性
  • 允许在恢复后无缝重新集成

核心价值:通过有针对性的流量管理确保持续的服务可靠性

特性

  • 一键式 Pod 排除/包含
  • 实时健康指标集成
  • 传统服务兼容模式
  • 无损隔离(Pod 保持运行)

优势

精准性:在不重启服务的情况下,针对特定 Pods
安全性:维护剩余 Pods 的法定人数
可视性:集成的成功率/延迟跟踪
合规性:在 Kubernetes 编排中正常工作

隔离 Pods

步骤 1:访问 Pod 管理

  1. 导航:服务列表 > 目标服务
  2. 选择 Pod 组 标签
  3. 通过指标或日志找到目标 Pod

步骤 2:执行隔离

# 隔离状态注释
metadata:
  annotations:
    asm.cpaas.io/isolated: "true"
UI 控件操作
打开上下文菜单
设置隔离切换隔离状态
设置确认配置

传统服务激活

需求清单

  • Kubernetes v1.18+
  • 在隔离功能发布之前创建的服务
  • 集群管理员权限

配置更新

  1. 修改部署标签:
metadata:
  labels:
    asm.cpaas.io/msselector: product-service
  1. 更新内部路由选择器:
spec:
  selector:
    asm.cpaas.io/msselector: product-service

监控与验证

关键指标仪表盘

指标阈值刷新控制
错误率<5%
延迟<500ms
活跃连接±10% 波动

状态验证

kubectl get endpoints <service-name> -o jsonpath='{.subsets[].notReadyAddresses}'

操作约束

  1. 状态限制

    • 仅影响运行状态的 Pods
    • 排除完成/CrashLoopBackOff 状态的 Pods
  2. 冲突场景

    • 在金丝雀发布期间禁用
    • 被缩入/缩出事件覆盖
  3. 持久性

    • Pod 重启后隔离重置
    • 恢复后需要手动重新隔离