5.2.7. カーネル引数のノードへの追加
特殊なケースとして、クラスターのノードセットにカーネル引数を追加する必要がある場合があります。これは十分に注意して実行する必要があり、設定する引数による影響を十分に理解している必要があります。
カーネル引数を正しく使用しないと、システムが起動不可能になる可能性があります。
設定可能なカーネル引数の例には、以下が含まれます。
- enforcing=0: SELinux (Security Enhanced Linux) を Permissive モードで実行するように設定します。Permissive モードでは、システムは、SELinux が読み込んだセキュリティーポリシーを実行しているかのように動作します。これには、オブジェクトのラベル付けや、アクセスを拒否したエントリーをログに出力するなどの動作が含まれますが、いずれの操作も拒否される訳ではありません。Permissive モードは、実稼働システムでの使用はサポートされませんが、デバッグには役に立ちます。
-
nosmt: カーネルの対称マルチスレッド (SMT) を無効にします。マルチスレッドは、各 CPU の複数の論理スレッドを許可します。潜在的なクロススレッド攻撃に関連するリスクを減らすために、マルチテナント環境での
nosmt
の使用を検討できます。SMT を無効にすることは、基本的にパフォーマンスよりもセキュリティーを重視する選択をしていることになります。
カーネル引数の一覧と説明については、Kernel.org カーネルパラメーター を参照してください。
次の手順では、以下を特定する MachineConfig
オブジェクトを作成します。
- カーネル引数を追加する一連のマシン。この場合、ワーカーロールを持つマシン。
- 既存のカーネル引数の最後に追加されるカーネル引数。
- マシン設定の一覧で変更が適用される場所を示すラベル。
前提条件
- 作業用の OpenShift Container Platform クラスターに対する管理者権限が必要です。
手順
OpenShift Container Platform クラスターの既存の
MachineConfig
を一覧表示し、マシン設定にラベルを付ける方法を判別します。$ oc get MachineConfig
出力例
NAME GENERATEDBYCONTROLLER IGNITIONVERSION AGE 00-master 5ce9351ceb24e721e28cd82de3a44fc7cc27137c 3.1.0 65m 00-worker 5ce9351ceb24e721e28cd82de3a44fc7cc27137c 3.1.0 65m 01-master-container-runtime 5ce9351ceb24e721e28cd82de3a44fc7cc27137c 3.1.0 65m 01-master-kubelet 5ce9351ceb24e721e28cd82de3a44fc7cc27137c 3.1.0 65m 01-worker-container-runtime 5ce9351ceb24e721e28cd82de3a44fc7cc27137c 3.1.0 65m 01-worker-kubelet 5ce9351ceb24e721e28cd82de3a44fc7cc27137c 3.1.0 65m 99-master-generated-registries 5ce9351ceb24e721e28cd82de3a44fc7cc27137c 3.1.0 65m 99-master-ssh 3.1.0 77m 99-worker-generated-registries 5ce9351ceb24e721e28cd82de3a44fc7cc27137c 3.1.0 65m 99-worker-ssh 3.1.0 77m rendered-master-0f314bb55448c47e6776e16e608c5912 5ce9351ceb24e721e28cd82de3a44fc7cc27137c 3.1.0 42m rendered-master-c7761e6162e6c9538b0cdd7eef567d38 5ce9351ceb24e721e28cd82de3a44fc7cc27137c 3.1.0 65m
カーネル引数を識別する
MachineConfig
オブジェクトファイルを作成します (例:05-worker-kernelarg-selinuxpermissive.yaml
)。apiVersion: machineconfiguration.openshift.io/v1 kind: MachineConfig metadata: labels: machineconfiguration.openshift.io/role: worker1 name: 05-worker-kernelarg-selinuxpermissive2 spec: config: ignition: version: 3.1.0 kernelArguments: - enforcing=03
新規のマシン設定を作成します。
$ oc create -f 05-worker-kernelarg-selinuxpermissive.yaml
マシン設定で新規の追加内容を確認します。
$ oc get MachineConfig
出力例
NAME GENERATEDBYCONTROLLER IGNITIONVERSION AGE 00-master 5ce9351ceb24e721e28cd82de3a44fc7cc27137c 3.1.0 65m 00-worker 5ce9351ceb24e721e28cd82de3a44fc7cc27137c 3.1.0 65m 01-master-container-runtime 5ce9351ceb24e721e28cd82de3a44fc7cc27137c 3.1.0 65m 01-master-kubelet 5ce9351ceb24e721e28cd82de3a44fc7cc27137c 3.1.0 65m 01-worker-container-runtime 5ce9351ceb24e721e28cd82de3a44fc7cc27137c 3.1.0 65m 01-worker-kubelet 5ce9351ceb24e721e28cd82de3a44fc7cc27137c 3.1.0 65m 05-worker-kernelarg-selinuxpermissive 3.1.0 105s 99-master-generated-registries 5ce9351ceb24e721e28cd82de3a44fc7cc27137c 3.1.0 65m 99-master-ssh 3.1.0 77m 99-worker-generated-registries 5ce9351ceb24e721e28cd82de3a44fc7cc27137c 3.1.0 65m 99-worker-ssh 3.1.0 77m rendered-master-0f314bb55448c47e6776e16e608c5912 5ce9351ceb24e721e28cd82de3a44fc7cc27137c 3.1.0 42m rendered-master-c7761e6162e6c9538b0cdd7eef567d38 5ce9351ceb24e721e28cd82de3a44fc7cc27137c 3.1.0 65m
ノードを確認します。
$ oc get nodes
出力例
NAME STATUS ROLES AGE VERSION ip-10-0-136-161.ec2.internal Ready worker 28m v1.19.0 ip-10-0-136-243.ec2.internal Ready master 34m v1.19.0 ip-10-0-141-105.ec2.internal Ready,SchedulingDisabled worker 28m v1.19.0 ip-10-0-142-249.ec2.internal Ready master 34m v1.19.0 ip-10-0-153-11.ec2.internal Ready worker 28m v1.19.0 ip-10-0-153-150.ec2.internal Ready master 34m v1.19.0
変更が適用されているため、各ワーカーノードのスケジューリングが無効にされていることを確認できます。
ワーカーノードのいずれかに移動し、カーネルコマンドライン引数 (ホストの
/proc/cmdline
内) を一覧表示して、カーネル引数が機能することを確認します。$ oc debug node/ip-10-0-141-105.ec2.internal
出力例
Starting pod/ip-10-0-141-105ec2internal-debug ... To use host binaries, run `chroot /host` sh-4.2# cat /host/proc/cmdline BOOT_IMAGE=/ostree/rhcos-... console=tty0 console=ttyS0,115200n8 rootflags=defaults,prjquota rw root=UUID=fd0... ostree=/ostree/boot.0/rhcos/16... coreos.oem.id=qemu coreos.oem.id=ec2 ignition.platform.id=ec2 enforcing=0 sh-4.2# exit
enforcing=0
引数が他のカーネル引数に追加されていることを確認できるはずです。