9.2. 接続ヘルスチェックの実装
接続チェックコントローラーは、クラスター内の接続検証チェックをオーケストレーションします。接続テストの結果は、openshift-network-diagnostics
namespace の PodNetworkConnectivity
オブジェクトに保存されます。接続テストは、1 分ごとに並行して実行されます。
Cluster Network Operator (CNO) は、接続性ヘルスチェックを送受信するためにいくつかのリソースをクラスターにデプロイします。
- ヘルスチェックのソース
-
このプログラムは、
Deployment
オブジェクトで管理される単一の Pod レプリカセットにデプロイします。このプログラムはPodNetworkConnectivity
オブジェクトを消費し、各オブジェクトで指定されるspec.targetEndpoint
に接続されます。 - ヘルスチェックのターゲット
- クラスターのすべてのノードにデーモンセットの一部としてデプロイされた Pod。Pod はインバウンドのヘルスチェックをリッスンします。すべてのノードにこの Pod が存在すると、各ノードへの接続をテストすることができます。
ノードセレクターを使用して、ネットワーク接続ソースとターゲットが実行されるノードを設定できます。さらに、ソース Pod とターゲット Pod で許容できる tolerations を指定することもできます。この設定は、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 とターゲット Pod の両方にnodeSelector
とtolerations
の両方を使用する必要はありません。これらは省略可能なオプションのフィールドです。 - 4
- オプション: 接続チェックのターゲット Pod のセレクターを指定します。
nodeSelector
およびtolerations
フィールドを使用して、targetNode
Pod をさらに指定できます。ただし、ソース Pod とターゲット Pod の両方にnodeSelector
とtolerations
の両方を使用する必要はありません。これらは省略可能なオプションのフィールドです。