第3章 ノード停止ポリシーを使用してマシン設定の変更による停止を最小限に抑える
デフォルトでは、MachineConfig
オブジェクトのフィールドに何らかの変更を加えると、Machine Config Operator (MCO) がそのマシン設定に関連付けられているノードをドレインして再起動します。ただし、ノード停止ポリシー を作成すると、一部の Ignition 設定オブジェクトに対して、ワークロードの停止をほとんどまたはまったく引き起こさない一連の変更を定義できます。
ノード停止ポリシーを使用すると、クラスターに停止を引き起こす設定変更と、引き起こさない設定変更を定義できます。これにより、クラスター内で小さなマシン設定の変更を行うときに、ノードのダウンタイムを短縮できます。ポリシーを設定するには、openshift-machine-config-Operator
namespace にある MachineConfiguration
オブジェクトを変更します。後述する MachineConfiguration
オブジェクトのノード停止ポリシーの例を参照してください。
ノード停止ポリシーに関係なく、常に再起動が必要となるマシン設定の変更があります。詳細は、Machine Config Operator について を参照してください。
ノード停止ポリシーを作成すると、MCO がポリシーを検証し、フォーマットの問題など、ファイル内の潜在的な問題を検索します。次に、MCO はポリシーをクラスターのデフォルト設定とマージし、マシン設定の status.nodeDisruptionPolicyStatus
フィールドに、マシン設定が将来変更されたときに実行されるアクションを入力します。クラスターのデフォルト設定は、常にポリシー内の設定で上書きされます。
MCO は、ノード停止ポリシーによって変更が正常に適用できるかどうかを検証しません。したがって、ノード停止ポリシーの正確性を確認する責任はお客様にあります。
たとえば、sudo 設定によるノードのドレインと再起動が必要ないように、ノード停止ポリシーを設定できます。また、sshd
への更新を適用する際に sshd サービスだけをリロードするようにクラスターを設定することもできます。
ノード停止ポリシー機能は、テクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
次の Ignition 設定オブジェクトに変更を加えるときに、MCO の動作を制御できます。
-
設定ファイル:
/var
または/etc
ディレクトリー内のファイルを追加または更新します。 - systemd ユニット: systemd サービスを作成してステータスを設定するか、既存の systemd サービスを変更します。
-
ユーザーとグループ: インストール後に
passwd
セクションで SSH キーを変更します。 -
ICSP、ITMS、IDMS オブジェクト:
ImageContentSourcePolicy
(ICSP)、ImageTagMirrorSet
(ITMS)、およびImageDigestMirrorSet
(IDMS) オブジェクトからミラーリングルールを削除できます。
これらの変更のいずれかを行うと、ノード停止ポリシーによって、MCO が変更を実装するときに必要なアクションが次の中から決定されます。
- Reboot: MCO はノードをドレインして再起動します。これがデフォルトの動作です。
- None: MCO はノードのドレインも再起動も実行しません。MCO は、それ以上のアクションなしで変更を適用します。
- Drain: MCO はノードのワークロードを遮断してドレインします。ワークロードは新しい設定で再起動します。
- Reload: サービスの場合、MCO はサービスを再起動せずに指定されたサービスをリロードします。
- Restart: サービスの場合、MCO は指定されたサービスを完全に再起動します。
- DaemonReload: MCO は systemd マネージャー設定をリロードします。
- Special: これは MCO 専用の内部アクションであり、ユーザーが設定することはできません。
-
Reboot
およびNone
アクションを他のアクションと一緒に使用することはできません。Reboot
およびNone
アクションは、他のアクションをオーバーライドするためです。 - アクションは、ノード停止ポリシーのリストに設定されている順序で適用されます。
- ノードの再起動やその他の停止が必要となるその他のマシン設定の変更を行った場合、その再起動はノード停止ポリシーのアクションよりも優先されます。
3.1. ノード停止ポリシーの例
次の例の MachineConfiguration
オブジェクトには、ノード停止ポリシーが含まれています。
MachineConfiguration
オブジェクトと MachineConfig
オブジェクトは別々のオブジェクトです。MachineConfiguration
オブジェクトは、MCO Operator の設定パラメーターを含む MCO namespace 内のシングルトンオブジェクトです。MachineConfig
オブジェクトは、マシン設定プールに適用される変更を定義します。
次の例の MachineConfiguration
オブジェクトでは、ユーザー定義のポリシーは示していません。デフォルトのノード停止ポリシーの値を status
スタンザに示します。
デフォルトのノード停止ポリシー
apiVersion: operator.openshift.io/v1 kind: MachineConfiguration name: cluster spec: logLevel: Normal managementState: Managed operatorLogLevel: Normal status: nodeDisruptionPolicyStatus: clusterPolicies: files: - actions: - type: None path: /etc/mco/internal-registry-pull-secret.json - actions: - type: None path: /var/lib/kubelet/config.json - actions: - reload: serviceName: crio.service type: Reload path: /etc/machine-config-daemon/no-reboot/containers-gpg.pub - actions: - reload: serviceName: crio.service type: Reload path: /etc/containers/policy.json - actions: - type: Special path: /etc/containers/registries.conf sshkey: actions: - type: None readyReplicas: 0
次の例では、SSH キーが変更されたときに、MCO はクラスターノードのドレイン、crio.service
のリロード、systemd 設定のリロード、crio-service
の再起動を実行します。
SSH キーの変更に対するノード停止ポリシーの例
apiVersion: operator.openshift.io/v1 kind: MachineConfiguration metadata: name: cluster namespace: openshift-machine-config-operator # ... spec: nodeDisruptionPolicy: sshkey: actions: - type: Drain - reload: serviceName: crio.service type: Reload - type: DaemonReload - restart: serviceName: crio.service type: Restart # ...
次の例では、/etc/chrony.conf
ファイルに変更が加えられると、MCO はクラスターノード上の chronyd.service
を再ロードします。
設定ファイルの変更に対するノード停止ポリシーの例
apiVersion: operator.openshift.io/v1 kind: MachineConfiguration metadata: name: cluster namespace: openshift-machine-config-operator # ... spec: nodeDisruptionPolicy: files: - actions: - reload: serviceName: chronyd.service type: Reload path: /etc/chrony.conf
次の例では、auditd.service
systemd ユニットが変更されたときに、MCO はクラスターノードのドレイン、crio.service
のリロード、systemd マネージャー設定のリロード、crio.service
の再起動を実行します。
systemd ユニット変更のためのノード中断ポリシーの例
apiVersion: operator.openshift.io/v1 kind: MachineConfiguration metadata: name: cluster namespace: openshift-machine-config-operator # ... spec: nodeDisruptionPolicy: units: - name: auditd.service actions: - type: Drain - type: Reload reload: serviceName: crio.service - type: DaemonReload - type: Restart restart: serviceName: crio.service
次の例では、ImageContentSourcePolicy
(ICSP) オブジェクトの編集などにより registries.conf
ファイルに変更が加えられた場合、MCO はノードをドレインまたは再起動せず、それ以上のアクションなしで変更を適用します。
registries.conf ファイルの変更に対するノード中断ポリシーの例
apiVersion: operator.openshift.io/v1 kind: MachineConfiguration metadata: name: cluster namespace: openshift-machine-config-operator # ... spec: nodeDisruptionPolicy: files: - actions: - type: None path: /etc/containers/registries.conf