メニュー
資料請求 お問い合わせ
2026-03-022026-02-18

【検証】OpenShift 4.17:Node Disruption PolicyでNTP(chrony)設定変更は“ノード再起動なし”にできるのか

はじめに

OpenShift では、MachineConfig の特定の変更時に MCOMachine Config Operator)がノードを drain reboot するのが既定動作になっています。これは OS レベルの変更を安全に適用するためで、再起動を伴うことでノードと OS の整合性を確保する仕組みです。

しかし実際の運用では、稼働中のノードをできるだけ再起動させたくないケースも多くあります。例えば、NTP の設定変更や一部のサービス設定変更のように、本来は OS 全体の再起動を必要としない変更までノード再起動が発生してしまうのはできれば避けたいところです。

そこで役立つのが Node Disruption Policy です。

Node Disruption Policyとは?

Node Disruption Policy とは、OpenShift 4.17以降でサポートされた機能で、MachineConfig 変更時に MCO がどの操作を行うかを制御できる仕組みです。

(参照)ノード停止ポリシーを使用してマシン設定の変更による停止を最小限に抑える

    Getting started with node disruption policies

これにより、例えば /etc/chrony.conf の変更があった場合に ノードの再起動ではなく chronyd.service Restart だけを実行することが可能になります。

実際にNTPの設定変更を試してみました。

以下は、Node Disruption Policy によって設定可能なアクションとその内容です。

アクション 動作内容 補足

Reboot

MCOがノードをdrainして差移動する

デフォルト動作

他アクションと併用不可(最優先)(※1)

None ノードのdrainも再起動も行わず変更を適用する 他アクションと併用不可(最優先)(※1)
Drain

ノードをcordon&drainする

ワークロードは新しい設定で再起動

ノードは再起動しない
Reload 指定サービスの設定をreloadする サービス自体の再起動は行わない
Restart 指定サービスを再起動する 今回のchronyd.serviceの例で使用
DaemonReload

systemdマネージャー設定をdaemon-reloadする

新しいunitファイルの反映などに使用
Special MCO内部専用の特別アクション ユーザーが任意のパスに設定することはできない

(※1)RebootとNoneは他のアクションをオーバーライドするため併用不可

アクションは、Node Disruption Policyのリストに設定されている順序で適用されます。

なお、常に再起動が必要な変更も存在します。全てをNode Disruption Policyで回避できるわけではありません。詳細はMCOのドキュメントを参照してください。

本記事でやること

  • OpenShift 4.17で、/etc/chrony.conf の変更時にchronydサービスだけを再起動するノード停止ポリシーを設定
  • MachineConfigNTPサーバーの設定を変更
  • 反映時、ノードの再起動が発生しないことを確認(chronydrestartされていることを確認)

1.事前確認

  • OpenShiftのバージョン確認
$ oc get clusterversions.config.openshift.io 
NAME     VERSION   AVAILABLE   PROGRESSING   SINCE   STATUS
version   4.17.48     True          False            27h     Cluster version is 4.17.48
  • MCP/MCOの健全性
$ oc get node
NAME             STATUS   ROLES                 AGE   VERSION
control-plane-1   Ready     control-plane,master   27h   v1.30.14
control-plane-2   Ready     control-plane,master   27h   v1.30.14
control-plane-3   Ready     control-plane,master   27h   v1.30.14
worker-1         Ready     worker               27h   v1.30.14
worker-2          Ready     worker                27h   v1.30.14
worker-3          Ready     worker                 27h   v1.30.14
$ oc get mcp 
NAME     CONFIG   UPDATED   UPDATING   DEGRADED   MACHINECOUNT   READYMACHINECOUNT   UPDATEDMACHINECOUNT   DEGRADEDMACHINECOUNT   AGE
master   rendered-master-xxx   True      False      False      3              3                   3                     0                      27h
worker   rendered-worker-xxx   True      False      False      3              3                   3                     0                      27h
$ oc get co machine-config 
NAME             VERSION   AVAILABLE   PROGRESSING   DEGRADED   SINCE   MESSAGE
machine-config   4.17.48   True        False         False      27h
  • 既存のNTP設定確認
$ oc debug node/worker-1
Starting pod/worker-1-debug-9lr57 ...
To use host binaries, run `chroot /host`
Pod IP: 10.10.10.10
If you don't see a command prompt, try pressing enter.
sh-5.1# chroot /host
sh-5.1# cat /etc/chrony.conf

pool 0.rhel.pool.ntp.org iburst
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
logdir /var/log/chrony
server 192.168.2.10 iburst
server 192.168.2.11 iburst

2.MachineConfiguration設定

$ oc edit MachineConfiguration cluster -n openshift-machine-config-operator

以下のようにnodeDisruptionPolicyを追加します。

apiVersion: operator.openshift.io/v1
kind: MachineConfiguration
metadata:
  creationTimestamp: "2026-01-07T00:42:13Z"
  generation: 2
  name: cluster
  resourceVersion: "95635"
  uid: 0387ea0e-de65-4fd2-998a-68ec409483dc

spec:
  logLevel: Normal
  managementState: Managed
  nodeDisruptionPolicy:
    files:
    - actions:
      - restart:
          serviceName: chronyd.service
        type: Restart
      path: /etc/chrony.conf
operatorLogLevel: Normal

3.MachineConfigによるNTP設定変更

OpenShiftのノードのNTP設定は MachineConfigで管理されています。

MachineConfigは、ButaneIgnition 設定を作るためのツール)を使って作成します。

Butane を使うと、簡単なYAMLからMachineConfigを安全に生成できます。Butaneの詳しい使い方については、公式ドキュメントにまとまっているため、そちらを参照してください。

(参照)Butane でのマシン設定の作成

              chronyタイムサービスの設定

chrony.conf ファイルのコンテンツを含む Butane 設定を作成

変更後のIPを設定したbutanファイルを作成します。

IP変更:

192.168.2.10 ⇒ 192.168.2.20

192.168.2.11 ⇒ 192.168.2.21

$ cat 99-worker-chrony.bu 
variant: openshift
version: 4.17.0
metadata:
  name: 99-worker-chrony
  labels:
    machineconfiguration.openshift.io/role: worker

storage:
  files:
  - path: /etc/chrony.conf
    mode: 0644
    overwrite: true
    contents:
      inline: |
server 192.168.2.20 iburst
        server 192.168.2.21 iburst
        driftfile /var/lib/chrony/drift
        makestep 1.0 3
        rtcsync
      logdir /var/log/chrony
  • NTP設定変更用MachineConfig作成
$ butane 99-worker-chrony.bu -o 99-worker-chrony.yaml
$ cat 99-worker-chrony.yaml 
# Generated by Butane; do not edit
apiVersion: machineconfiguration.openshift.io/v1
kind: MachineConfig
metadata:
 labels:
    machineconfiguration.openshift.io/role: worker
  name: 99-worker-chrony
spec:
  config:
    ignition:
      version: 3.4.0
    storage:
      files:
        - contents:
            compression: ""
            source: 
data:,192.168.2.20%20iburst%0A192.168.2.21%20iburst%0Adriftfile%20%2Fvar%2Flib%2Fchrony%2Fdrift%0Amakestep%201.0%203%0Artcsync%0Alogdir%20%2Fvar%2Flog%2Fchrony%0A
          mode: 420
          overwrite: true
        path: /etc/chrony.conf
  • NTP設定変更用MachineConfig適用
$ oc apply -f 99-worker-chrony.yaml
machineconfig.machineconfiguration.openshift.io/99-worker-chrony created

4.設定変更反映中の挙動

ノードの再起動なしでNTP設定が変更されることを確認します。

MCP確認

MachineConfig 適用中の各プールの状態変化をリアルタイムで確認します。

worker プールが新しい MachineConfig を受け取り、ノードが順番に更新されていく様子が確認できます。

$ oc get mcp -w
NAME     CONFIG                          UPDATED   UPDATING   DEGRADED   MACHINECOUNT   READYMACHINECOUNT   UPDATEDMACHINECOUNT   DEGRADEDMACHINECOUNT   AGE
master   rendered-master-b67383ab2a02eadae81618fff2c934ea     True      False      False      3              3                   3                     0                      29h
worker   rendered-worker-74b7ccf461d53ed555caac7b7e9abae7     False     True       False      3              1                   1                     0                      29h
worker   rendered-worker-74b7ccf461d53ed555caac7b7e9abae7     False     True       False      3              2                   2                     0                      29h
worker   rendered-worker-93c890c5309460f023512772fd762af5     True      False      False      3              3                   3                     0                      29h
NTP設定を確認

/etc/chrony.confに変更後のIPが設定されていることを確認します。

$ oc debug node/worker-1
Temporary namespace openshift-debug-dlqgq is created for debugging node...
Starting pod/worker-cluster-844tx-1-debug-9gp5l ...
To use host binaries, run `chroot /host`
Pod IP: 10.10.10.20
If you don't see a command prompt, try pressing enter.
sh-5.1# chroot /host/
sh-5.1# cat /etc/chrony.conf 
server 192.168.2.20 iburst
server 192.168.2.21 iburst
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
logdir /var/log/chrony
chronydサービスが再起動されていることを確認
sh-5.1#
Fri Feb 13 07:20:06 UTC 2026

sh-5.1# systemctl status chronyd
chronyd.service - NTP client/server
     Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; preset: enabled)
    Drop-In: /usr/lib/systemd/system/chronyd.service.d
             └─platform-chrony.conf
 Active: active (running) since Fri 2026-02-13 07:17:01 UTC; 3min 17s ago
       Docs: man:chronyd(8)



sh-5.1#
ノードが再起動されていないことを確認

uptime の出力に表示される稼働時間は23時間27分のためノードは再起動されていません。

sh-5.1# uptime
07:28:19 up  23:27,  0 users,  load average: 0.50, 0.60, 0.71

ノードの再起動なしでOpenShiftのノードのNTP設定を変更できました!

さいごに

今回の検証では、OpenShift4.17で導入された NodeDisruptionPolicy を利用し、MachineConfig によるNTP設定変更をノード再起動なしで適用できることを確認しました。

これまでノード再起動が当たり前だと思われていた MachineConfig による設定変更は、運用中クラスタでは負荷や停止時間の理由から慎重になる場面が多々あります。

しかし、Node Disruption Policy によって 「どの設定変更でどのアクションを実行するか」 を細かく制御できるようになったことで、より柔軟な運用が可能になります。

OpenShift4.17 Node Disruption Policy は運用を確実に楽にしてくれるので、ぜひ活用してみてください。

担当者紹介

担当者:立古

サーバー構築の経験をベースに、昨年よりコンテナ技術を学習し、案件に参画しています。

保有資格

Certified Kubernetes Administrator

Certified Kubernetes Application Developer

Red Hat 認定OpenShift 管理者試験 (EX280)

xポスト ブックマークブックマーク lineLINE
一覧へ戻る

関連する記事

CONTACT

ご相談・お問い合わせ

NebulaShift®は、
柔軟でスピーディなアジャイル開発、システムの刷新、
そして先進的なインフラ運用を通じて、
貴社の可能性を無限に広げます。