9.2. 连接健康检查实现
在集群中,连接检查控制器或编配连接验证检查。连接测试的结果存储在 openshift-network-diagnostics
命名空间中的 PodNetworkConnectivity
对象中。连接测试会每分钟以并行方式执行。
Cluster Network Operator(CNO)将几个资源部署到集群,以发送和接收连接性健康检查:
- 健康检查源
-
此程序部署在一个由
Deployment
对象管理的单个 pod 副本集中。程序会消耗PodNetworkConnectivity
对象,并连接到每个对象中指定的spec.targetEndpoint
。 - 健康检查目标
- pod 作为集群中每个节点上的守护进程集的一部分部署。pod 侦听入站健康检查。在每个节点上存在这个 pod 可以测试到每个节点的连接。
您可以使用节点选择器配置在其上运行网络连接源和目标的节点。另外,您可以为源和目标 pod 指定允许的容限。配置在 config.openshift.io/v1
API 组中的 Network
API 的单例 cluster
自定义资源中定义。
Pod 调度在更新了配置后发生。因此,您必须在更新配置前应用要在选择器中使用的节点标签。更新网络连接后应用的标签将忽略 pod 放置。
请参考以下 YAML 中的默认配置:
连接源和目标 pod 的默认配置
apiVersion: config.openshift.io/v1 kind: Network metadata: name: cluster spec: # ... networkDiagnostics: 1 mode: "All" 2 sourcePlacement: 3 nodeSelector: checkNodes: groupA tolerations: - key: myTaint effect: NoSchedule operator: Exists targetPlacement: 4 nodeSelector: checkNodes: groupB tolerations: - key: myOtherTaint effect: NoExecute operator: Exists
- 1 1
- 指定网络诊断配置。如果没有指定值,或者指定了空对象,并在名为
cluster
的network.operator.openshift.io
自定义资源中设置spec.disableNetworkDiagnostics=true
,则会禁用网络诊断。如果设置,这个值会覆盖spec.disableNetworkDiagnostics=true
。 - 2
- 指定诊断模式。该值可以是空字符串、
All
或Disabled
。空字符串等同于指定All
。 - 3
- 可选:指定连接检查源 pod 的选择器。您可以使用
nodeSelector
和tolerations
字段来进一步指定sourceNode
pod。但是,您不必对源和目标 pod 使用nodeSelector
和tolerations
。这些是可省略的可选字段。 - 4
- 可选:指定连接检查目标 pod 的选择器。您可以使用
nodeSelector
和tolerations
字段来进一步指定targetNode
pod。但是,您不必对源和目标 pod 使用nodeSelector
和tolerations
。这些是可省略的可选字段。