5.4. Machine Config Operator について
OpenShift Container Platform 4.10 は、オペレーティングシステムとクラスター管理を統合します。クラスターは、クラスターノードでの Red Hat Enterprise Linux CoreOS (RHCOS) への更新を含め、独自の更新を管理するので、OpenShift Container Platform では事前に設定されたライフサイクル管理が実行され、ノードのアップグレードのオーケストレーションが単純化されます。
OpenShift Container Platform は、ノードの管理を単純化するために 3 つのデーモンセットとコントローラーを採用しています。これらのデーモンセットは、Kubernetes 形式のコンストラクトを使用してオペレーティングシステムの更新とホストの設定変更をオーケストレーションします。これには、以下が含まれます。
-
machine-config-controller
: コントロールプレーンからマシンのアップグレードを調整します。すべてのクラスターノードを監視し、その設定の更新をオーケストレーションします。 -
machine-config-daemon
デーモンセット: クラスターの各ノードで実行され、machine config で定義された設定で、MachineConfigController の指示通りにマシンを更新します。 ノードは、変更を検知すると Pod からドレイン (解放) され、更新を適用して再起動します。これらの変更は、指定されたマシン設定を適用し、 kubelet 設定を制御する Ignition 設定ファイルの形式で実行されます。更新自体はコンテナーで行われます。このプロセスは、OpenShift Container Platform と RHCOS の更新を同時に管理する際に不可欠です。 -
machine-config-server
デーモンセット: コントロールプレーンノードがクラスターに参加する際に Ignition 設定ファイルをコントロールプレーンノードに提供します。
このマシン設定は Ignition 設定のサブセットです。machine-config-daemon
はマシン設定を読み取り、OSTree の更新を行う必要があるか、一連の systemd kubelet ファイルの変更、設定の変更、オペレーティングシステムまたは OpenShift Container Platform 設定などへのその他の変更を適用する必要があるかを確認します。
ノード管理操作の実行時に、KubeletConfig
カスタムリソース (CR) を作成または変更します。
マシン設定への変更が行われると、Machine Config Operator (MCO) は変更を有効にするために、対応するすべてのノードを自動的に再起動します。
マシン設定の変更後、変更が適用される前にノードが自動的に起動されないようにするには、対応する machine config pool で spec.paused
フィールドを true
に設定して自動再起動プロセスを一時停止する必要があります。一時停止すると、spec.paused
フィールドを false
に設定し、ノードが新しい設定で再起動されるまで、マシン設定の変更は適用されません。
CA 証明書のローテーションが発生したときに、プールが一時停止されていないことを確認してください。MCP が一時停止されている場合、MCO は新しくローテーションされた証明書をそれらのノードにプッシュできません。これにより、クラスターが劣化し、oc debug
、oc logs
、oc exec
、oc attach
などの複数の oc
コマンドで障害が発生します。証明書がローテーションされたときに MCP が一時停止された場合、OpenShift Container Platform コンソールのアラート UI でアラートを受け取ります。
以下の変更は、ノードの再起動をトリガーしません。
MCO が以下の変更のいずれかを検出すると、ノードのドレインまたは再起動を行わずに更新を適用します。
-
マシン設定の
spec.config.passwd.users.sshAuthorizedKeys
パラメーターの SSH キーの変更。 -
openshift-config
namespace でのグローバルプルシークレットまたはプルシークレットへの変更 -
Kubernetes API Server Operator による
/etc/kubernetes/kubelet-ca.crt
認証局 (CA) の自動ローテーション。
-
マシン設定の
MCO は、
ImageContentSourcePolicy
(ICSP) オブジェクトの追加または編集など、/etc/containers/registries.conf
ファイルへの変更を検出すると、対応するノードをドレインし、変更を適用し、ノードを解放します。ノードのドレインは、次の変更では発生しません。-
pull-from-mirror = "digest-only"
パラメーターがミラーごとに設定されたレジストリーの追加。 -
pull-from-mirror = "digest-only"
パラメーターがレジストリーに設定されたミラーの追加。 -
unqualified-search-registries
へのアイテムの追加。
-
ノードの設定が、現在適用されている machine config で指定されているものと完全に一致しない場合があります。この状態は 設定ドリフト と呼ばれます。Machine Config Daemon (MCD) は、ノードの設定ドラフトを定期的にチェックします。MCD が設定のドリフトを検出した場合は、管理者がノード設定を修正するまで、MCO はノードを 劣化
とマークします。劣化したノードはオンラインで動作していますが、更新できません。
追加情報
- 設定ドリフトの検出の詳細については、Understanding configuration drift detection を参照してください。
- Machine Config Operator によるマシン設定の変更後にコントロールプレーンマシンが自動的に再起動されないようにする方法については、Disabling Machine Config Operator from automatically rebooting を参照してください。