第1章 チューニングプラグインを使用してシステムコントロールとインターフェイス属性を設定する
Linux では、管理者は sysctl を使用してランタイム時にカーネルパラメーターを変更できます。チューニング Container Network Interface (CNI) メタプラグインを使用して、インターフェイスレベルのネットワーク sysctl を変更できます。チューニング CNI メタプラグインは、図に示すように、メインの CNI プラグインとチェーンで動作します。
メインの CNI プラグインはインターフェイスを割り当て、それをランタイム時にチューニング CNI メタプラグインに渡します。チューニング CNI メタプラグインを使用して、ネットワーク namespace の一部の sysctl といくつかのインターフェイス属性 (プロミスキャスモード、オールマルチキャストモード、MTU、および MAC アドレス) を変更できます。
1.1. チューニング CNI を使用してシステム制御を設定する リンクのコピーリンクがクリップボードにコピーされました!
次の手順では、チューニング CNI を設定し、インターフェイスレベルのネットワーク net.ipv4.conf.IFNAME.accept_redirects
sysctl を変更します。この例では、ICMP リダイレクトパケットの受け入れと送信を有効にします。チューニング CNI メタプラグイン設定では、インターフェイス名は IFNAME
トークンで表され、ランタイム時にインターフェイスの実際の名前に置き換えられます。
手順
次の内容を含む、
tuning-example.yaml
などのネットワークアタッチメント定義を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 作成する追加のネットワーク割り当ての名前を指定します。名前は指定された namespace 内で一意である必要があります。
- 2
- オブジェクトが関連付けられている namespace を指定します。
- 3
- CNI 仕様のバージョンを指定します。
- 4
- 設定の名前を指定します。設定名をネットワークアタッチメント定義の名前の値と一致させることを推奨します。
- 5
- 設定するメイン CNI プラグインの名前を指定します。
- 6
- CNI メタプラグインの名前を指定します。
- 7
- 設定する sysctl を指定します。インターフェイス名は
IFNAME
トークンで表され、ランタイム時にインターフェイスの実際の名前に置き換えられます。
YAML ファイルの例を次に示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して YAML を適用します。
oc apply -f tuning-example.yaml
$ oc apply -f tuning-example.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
networkattachmentdefinition.k8.cni.cncf.io/tuningnad created
networkattachmentdefinition.k8.cni.cncf.io/tuningnad created
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のようなネットワークアタッチメント定義を使用して、
examplepod.yaml
などの Pod を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 設定済みの
NetworkAttachmentDefinition
の名前を指定します。 - 2
runAsUser
は、コンテナーが実行されるユーザー ID を制御します。- 3
runAsGroup
は、コンテナーが実行されるプライマリーグループ ID を制御します。- 4
allowPrivilegeEscalation
は、Pod が権限の昇格を許可するように要求できるかどうかを決定します。指定しない場合、デフォルトで true に設定されます。このブール値は、no_new_privs
フラグがコンテナープロセスに設定されるかどうかを直接制御します。- 5
capabilities
は、完全なルートアクセスを許可せずに権限操作を許可します。このポリシーにより、すべての機能が Pod から削除されます。- 6
runAsNonRoot: true
は、コンテナーが 0 以外の任意の UID を持つユーザーで実行されることを要求します。- 7
RuntimeDefault
は、Pod またはコンテナーワークロードのデフォルトの seccomp プロファイルを有効にします。
以下のコマンドを実行して yaml を適用します。
oc apply -f examplepod.yaml
$ oc apply -f examplepod.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、Pod が作成されていることを確認します。
oc get pod
$ oc get pod
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME READY STATUS RESTARTS AGE tunepod 1/1 Running 0 47s
NAME READY STATUS RESTARTS AGE tunepod 1/1 Running 0 47s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、Pod にログインします。
oc rsh tunepod
$ oc rsh tunepod
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 設定された sysctl フラグの値を確認します。たとえば、次のコマンドを実行して、値
net.ipv4.conf.net1.accept_redirects
を見つけます。sysctl net.ipv4.conf.net1.accept_redirects
sh-4.4# sysctl net.ipv4.conf.net1.accept_redirects
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 予想される出力
net.ipv4.conf.net1.accept_redirects = 1
net.ipv4.conf.net1.accept_redirects = 1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow