1.20 以降の Ubuntu ノードで移行したワークロードが動作しない
AppArmor を使用すると、システム管理者はデプロイ済みのコンテナの機能を制限できます。移行したコンテナ ワークロードをデプロイするには、Migrate to Containers で Linux LXC パッケージの AppArmor プロファイルが必要です。
ただし、Google Kubernetes Engine(GKE)1.20 へのアップデートの一環で、Ubuntu ノードイメージにはデフォルトで LXC パッケージが含まれなくなりました。Ubuntu ノードを使用する新しいデプロイ クラスタや、GKE 1.20 以降にアップグレードされた既存のデプロイ クラスタの Ubuntu ノードでは、移行したワークロードを実行できません。
GKE バージョン 1.20 以降の Ubuntu ノードにコンテナ ワークロードをデプロイすると、ワークロードがクラッシュ ループに入り、次の形式のエラー メッセージがログに出力されます。
D0806 01:59:15.000000 8 hcutil.py:136] SHELL CMD: aa-exec -p lxc-container-default echo 123 D0806 01:59:15.000000 8 hcutil.py:168] SHELL STDERR: b"aa-exec: ERROR: profile 'lxc-container-default' does not exist\n" D0806 01:59:15.000000 8 hcutil.py:168] SHELL STDERR: b'\n' D0806 01:59:15.000000 8 hcutil.py:210] SHELL COMPLETED: 1 (aa-exec -p lxc-container-default echo 123) required AppArmor profile 'lxc-container-default' does not exist, if this pod runs on a GKE node of type 'Container Optimized OS' (COS) please run `migctl setup install --cos-runtime` to install it E0806 01:59:15.000000 8 hcmain.py:22] Traceback (most recent call last): File "./hcmain.py", line 19, in safe_action File "./hcmain.py", line 74, in run_action File "./hcrunner.py", line 392, in validateSystem Exception: Invalid system or AppArmor profile E0806 01:59:15.000000 8 hcmain.py:23] Invalid system or AppArmor profile I0806 01:59:15.000000 8 termination_log.py:4] writing error to termination log at /dev/termination-log
この問題を解決するには:
次の形式のコマンドを使用してデプロイ クラスタに接続します。
gcloud container clusters get-credentials CLUSTER --zone ZONE --project PROJECT
次のコマンドを使用して、Linux LXC パッケージを手動でデプロイ クラスタにインストールします。
migctl setup install --cos-runtime