第3章 node disruption policy を使用してマシン設定の変更による停止を最小限に抑える


デフォルトでは、MachineConfig オブジェクトのフィールドに何らかの変更を加えると、Machine Config Operator (MCO) がそのマシン設定に関連付けられているノードをドレインして再起動します。ただし、node disruption policy を作成すると、一部の Ignition 設定オブジェクトに対して、ワークロードの停止をほとんどまたはまったく引き起こさない一連の変更を定義できます。

node disruption policy を使用すると、クラスターに停止を引き起こす設定変更と、引き起こさない設定変更を定義できます。これにより、クラスター内で小さなマシン設定の変更を行うときに、ノードのダウンタイムを短縮できます。ポリシーを設定するには、openshift-machine-config-operator namespace にある MachineConfiguration オブジェクトを変更します。後述する MachineConfiguration オブジェクトの node disruption policy の例を参照してください。

注記

node disruption policy に関係なく、常に再起動が必要となるマシン設定の変更があります。詳細は、Machine Config Operator について を参照してください。

node disruption policy を作成すると、MCO がポリシーを検証し、フォーマットの問題など、ファイル内の潜在的な問題を検索します。次に、MCO はポリシーをクラスターのデフォルト設定とマージし、マシン設定の status.nodeDisruptionPolicyStatus フィールドに、マシン設定が将来変更されたときに実行されるアクションを入力します。クラスターのデフォルト設定は、常にポリシー内の設定で上書きされます。

重要

MCO は、node disruption policy によって変更が正常に適用できるかどうかを検証しません。したがって、node disruption policy の正確性を確保するのはお客様の責任となります。

たとえば、sudo 設定によるノードのドレインと再起動が必要ないように、node disruption policy を設定できます。また、sshd への更新を適用する際に sshd サービスだけをリロードするようにクラスターを設定することもできます。

次の Ignition 設定オブジェクトに変更を加えるときに、MCO の動作を制御できます。

  • 設定ファイル: /var または /etc ディレクトリー内のファイルを追加または更新します。ディレクトリー内の任意の場所にある特定のファイル、または特定のディレクトリーへのパスに対してポリシーを設定できます。パスの場合、そのディレクトリー内のファイルの変更または追加によってポリシーがトリガーされます。

    注記

    ファイルが複数のポリシーに含まれている場合は、そのファイルに最も一致するポリシーのみが適用されます。

    たとえば、/etc/ ディレクトリーのポリシーと /etc/pki/ ディレクトリーのポリシーがある場合は、/etc/pki/tls/certs/ca-bundle.crt ファイルを変更すると、etc/pki ポリシーが適用されます。

  • systemd ユニット: systemd サービスを作成してステータスを設定したり、systemd サービスを変更したりします。
  • ユーザーとグループ: インストール後に passwd セクションで SSH キーを変更します。
  • ICSPITMSIDMS オブジェクト: ImageContentSourcePolicy (ICSP)、ImageTagMirrorSet (ITMS)、および ImageDigestMirrorSet (IDMS) オブジェクトからミラーリングルールを削除できます。

これらの変更のいずれかを行うと、node disruption policy によって、MCO が変更を実装するときに必要なアクションが次の中から決定されます。

  • Reboot: MCO はノードをドレインして再起動します。これがデフォルトの動作です。
  • None: MCO はノードのドレインも再起動も実行しません。MCO は、それ以上のアクションなしで変更を適用します。
  • Drain: MCO はノードのワークロードを遮断してドレインします。ワークロードは新しい設定で再起動します。
  • Reload: サービスの場合、MCO はサービスを再起動せずに指定されたサービスをリロードします。
  • Restart: サービスの場合、MCO は指定されたサービスを完全に再起動します。
  • DaemonReload: MCO は systemd マネージャー設定をリロードします。
  • Special: これは MCO 専用の内部アクションであり、ユーザーが設定することはできません。
注記
  • Reboot および None アクションを他のアクションと一緒に使用することはできません。Reboot および None アクションは、他のアクションをオーバーライドするためです。
  • アクションは、node disruption policy のリストに設定されている順序で適用されます。
  • ノードの再起動やその他の停止が必要となるその他のマシン設定の変更を行った場合、その再起動は node disruption policy のアクションよりも優先されます。

3.1. node disruption policy の例

次の例の MachineConfiguration オブジェクトには、node disruption policy が含まれています。

ヒント

MachineConfiguration オブジェクトと MachineConfig オブジェクトは別々のオブジェクトです。MachineConfiguration オブジェクトは、MCO Operator の設定パラメーターを含む MCO namespace 内のシングルトンオブジェクトです。MachineConfig オブジェクトは、マシン設定プールに適用される変更を定義します。

次の例の MachineConfiguration オブジェクトでは、ユーザー定義のポリシーは示していません。デフォルトの node disruption policy の値を status スタンザに示します。

デフォルトの node disruption policy

apiVersion: operator.openshift.io/v1
kind: MachineConfiguration
metadata:
  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
      - actions:
        - reload:
            serviceName: crio.service
          type: Reload
        path: /etc/containers/registries.d
      - actions:
        - type: None
        path: /etc/nmstate/openshift
      - actions:
        - restart:
            serviceName: coreos-update-ca-trust.service
          type: Restart
        - restart:
            serviceName: crio.service
          type: Restart
        path: /etc/pki/ca-trust/source/anchors/openshift-config-user-ca-bundle.crt
      sshkey:
        actions:
        - type: None
  observedGeneration: 9

デフォルトの node disruption policy には、/etc/containers/registries.conf.d ファイルへの変更に関するポリシーが含まれていません。これは、OpenShift Container Platform でも Red Hat Enterprise Linux (RHEL) でも、registries.conf.d ファイルを使用してイメージの短縮名のエイリアスを指定するためです。イメージをプルする際には、常に完全修飾名を指定することを推奨します。これはパブリックレジストリーでは特に重要です。パブリックレジストリーで認証が必要な場合、イメージがデプロイされない可能性があるためです。イメージの短縮名を使用する必要がある場合は、/etc/containers/registries.conf.d ファイルで使用するユーザー定義ポリシーを作成できます。

次の例では、SSH キーが変更されたときに、MCO はクラスターノードのドレイン、crio.service のリロード、systemd 設定のリロード、crio-service の再起動を実行します。

SSH キーの変更に対する node disruption policy の例

apiVersion: operator.openshift.io/v1
kind: MachineConfiguration
metadata:
  name: cluster
# ...
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 を再起動します。/var/run ディレクトリーにファイルが追加または変更されると、MCO はそれ以上のアクションを実行せずに変更を適用します。

設定ファイルの変更に対する node disruption policy の例

apiVersion: operator.openshift.io/v1
kind: MachineConfiguration
metadata:
  name: cluster
# ...
spec:
  nodeDisruptionPolicy:
    files:
    - actions:
      - restart:
          serviceName: chronyd.service
        type: Restart
      path: /etc/chrony.conf
    - actions:
      - type: None
      path: /var/run

次の例では、auditd.service systemd ユニットが変更されたときに、MCO はクラスターノードのドレイン、crio.service のリロード、systemd マネージャー設定のリロード、crio.service の再起動を実行します。

systemd ユニット変更のためのノード中断ポリシーの例

apiVersion: operator.openshift.io/v1
kind: MachineConfiguration
metadata:
  name: cluster
# ...
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
# ...
spec:
  nodeDisruptionPolicy:
    files:
      - actions:
        - type: None
        path: /etc/containers/registries.conf

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat, Inc.