Container Service for Kubernetes (ACK) では、Alibaba Cloud Linux 2 オペレーティングシステムを実行するノードを作成できます。これらのノードは、Alibaba Cloud Linux 2 の高性能カーネルを使用して、さまざまなシナリオ向けに最適化されたソリューションを提供します。本トピックでは、ACK クラスターで Alibaba Cloud Linux 2 を使用するメリットと、ACK がさまざまなシナリオ向けに提供する最適化について説明します。
Alibaba Cloud Linux 2 は 2024 年 3 月 31 日にサポート終了 (EOL) となりました。 クラスターまたはノードプールを作成する際は、[オペレーティングシステム] を Alibaba Cloud Linux 3 または ContainerOS に設定してください。 Alibaba Cloud Linux 2 の EOL の詳細については、「[製品変更] Alibaba Cloud Linux 2 と CentOS 7 のメンテナンス終了」をご参照ください。
背景情報
Alibaba Cloud Linux 2 は、Alibaba Cloud が開発した次世代クラウドネイティブ Linux オペレーティングシステムです。このオペレーティングシステムは、クラウドアプリケーションに安全で安定した高性能なカスタマイズ環境を提供します。Alibaba Cloud Linux 2 は、Alibaba Cloud インフラストラクチャ向けに深く最適化されており、強化されたランタイムエクスペリエンスを提供します。Alibaba Cloud Linux 2 のパブリックイメージを無料で使用でき、Alibaba Cloud から無償で長期サポートを受けることができます。
Alibaba Cloud Linux 2 OS イメージを使用するメリット
Alibaba Cloud Linux 2 オペレーティングシステムは、Alibaba Cloud Apsara 仮想化スタック向けに設計されています。Alibaba Cloud 環境に合わせた数多くの最適化と新機能を提供しており、次のような特長があります。
Alibaba Cloud 上で最も高速に起動する Linux ディストリビューション。
高スペックの ECS 仮想マシンおよび ECS ベアメタルインスタンス向けに深く最適化されており、特に大規模インスタンスでのマルチタスクシナリオへの対応。
Cloud Assistant CLI や cloud-init などの一般的な Alibaba Cloud ソフトウェアパッケージがプリインストールされており、クラウドリソース管理コストの削減。
攻撃対象領域を最小限に抑えた合理化されたシステムと、最小限のシステムリソース消費。
Alibaba Cloud 上でマルチチャネルの技術サポートを提供する包括的なサポートシステム。
ソフトウェアのセキュリティ脆弱性 (CVE) の迅速な修正。
カーネルライブパッチをサポートし、脆弱性パッチ適用中のビジネス継続性の確保。
Alibaba Cloud Linux 2 でアプリケーションインスタンスを実行する際のパフォーマンス上のメリットとして、以下が挙げられます。
ECS インスタンスの起動速度が大幅に最適化されています。これにより、システム負荷が増加した際にコンピューティングリソースを迅速にスケールアウトできます。起動速度は CentOS 7 と比較して 29% 高速化されています。
ECS インスタンスでのマルチタスクシナリオ向けに最適化されています。これにより、同じスペックで高スペックインスタンスのマルチタスクパフォーマンスが 16% 向上します。
より効率的なシステムコールにより、システムコールパフォーマンスが 11% 向上します。
Linux ネットワークスタックが最適化され、CentOS 7 と比較して全体的なネットワークパフォーマンスが 7.8% 向上します。
Alibaba Cloud Linux 2 には、Bottleneck Bandwidth and Round-trip propagation time (BBR) 輻輳制御アルゴリズムがプリコンパイルされています。パブリックネットワークアクセスが頻繁なシナリオでは、輻輳制御アルゴリズムを BBR に変更することで、パブリックネットワークアクセスの帯域幅安定性を向上させることができます。
TLS プロトコルの暗号化が最適化されています。
新しい Budget Fair Queueing (BFQ) I/O スケジューラーをサポートし、クラウドディスクのレイテンシーを削減します。
Alibaba Cloud Linux 2 を使用した ACK におけるシナリオベースの最適化
Alibaba Cloud のコンテナ化サービスは、カーネルレベルの最適化を使用して、オンラインサービスの応答時間に影響を与えることなく、共存するコンテナタスクの密度を高めます。Alibaba Cloud Linux 2 のオペレーティングシステムとカーネルには、これらの最適化が含まれています。ACK はこれらの機能を使用して、コンテナ化されたサービスがより高速かつスムーズに実行されるように、複数のシナリオ向けに最適化を提供します。
[IPVS の最適化]
シナリオ 1:多数の IPVS 仮想 IP を持つ高スペックマシン (64 CPU 以上)。
問題: IPVS 推定タイマーは、各コネクションの現在のレートを定期的に計算します。コネクション数が多いと、この処理が CPU を長時間占有するため、ネットワークパケットの受信に遅延が発生し、Ping コマンドへの応答に最大 200 ms の変動が生じます。
最適化: IPVS 推定タイマーはノードで実行されます。また、IPVS 統計を無効化するための sysctl コマンドが追加されています。
結果:推定タイマーによる変動が解消されます。
シナリオ 2:コンテナのローリングアップグレード。
問題:コンテナのローリングアップグレード中、5 タプルが変更されない場合、新しい TCP SYN パケットが古い IPVS 5 タプルの接続レコードにヒットする可能性があります。パケットを新しい宛先にスケジュールする必要がある場合、IPVS はデフォルトで SYN パケットをドロップします。これにより、SYN 再送信が発生し、1 秒の遅延が生じます。
最適化:新しい conntrack エントリがすでに存在する場合、TIME_WAIT 状態の接続が conntrack から解放され、その後スケジュールされて新しい接続に置き換えられます。
結果:新しいリアルサーバーへの切り替えがほぼ遅延なく行われます。
[CoreDNS の最適化]
シナリオ 1:コンテナ内の多数の DNS クエリにより conntrack テーブルがいっぱいになる。
問題:コンテナ内のアプリケーションが固定アドレスまたはポートの DNS をクエリすると、対応する conntrack エントリがストリームモードに入ります。DNS リクエストは UDP ベースでステートレス、短命であり、リクエスト-レスポンスパターンを使用するため、conntrack は多数の不要な UDP conntrack エントリを維持します。これらのエントリは速やかにクリアされないため、conntrack テーブルが増大し、Network Address Translation (NAT) のパフォーマンスが低下する可能性があります。
最適化:
UDP 接続は、2 秒以上継続した場合にのみストリームモードに設定されます。これにより、conntrack エントリの急速な増加が防止されます。
デフォルトの UDP conntrack 有効期間 (TTL) が 180 秒から 120 秒に短縮されています。これにより、エントリがより速く期限切れになり、conntrack テーブルへの影響が軽減されます。
結果:同じテストシナリオで、UDP conntrack エントリの数が半減します。
[コンテナネットワークパフォーマンスの最適化]
Alibaba Cloud Linux 2 ノードでは、コンテナサービス用の Terway ネットワークプラグインが IPVlan コンテナネットワークモードをサポートしています。小さいパケットを扱うシナリオでは、従来の Bridge およびポリシーベースルーティングと比較して、ネットワークパフォーマンスが 40% 向上します。Alibaba Cloud Linux 2 には BBR 輻輳制御アルゴリズムがプリコンパイルされています。パブリックネットワークアクセスが頻繁なシナリオでは、コンテナの輻輳制御アルゴリズムを BBR に変更することで、パブリックネットワークアクセスの帯域幅安定性を向上させることができます。これにより、コンテナのパブリックネットワーク接続のパフォーマンスと、パブリックネットワーク経由のイメージプル速度が大幅に向上します。
[サンドボックスコンテナのサポートと最適化]
Alibaba Cloud は、Kata Containers および Clear Linux コミュニティと連携しています。ECS ベアメタルインスタンスでは、Kata Containers ソリューション全体をシームレスにデプロイできます。ACK は、サンドボックスコンテナ (RunV) イメージの起動時間も最適化しており、Kata Containers ソリューション全体が適切に実行されるようにします。これに基づいて、ACK は通常のクラスターとほぼ同じエクスペリエンスを提供するサンドボックスコンテナクラスターを提供します。これにより、アプリケーションを軽量仮想マシンサンドボックス環境で実行できます。これは、複数のユーザー間のワークロードの分離や、信頼できないアプリケーションの分離に適しており、パフォーマンスへの影響を最小限に抑えながらセキュリティを強化します。
[AutoScaler の最適化]
Alibaba Cloud Linux 2 は ECS インスタンスの起動速度を最適化し、CentOS 7 と比較してノード起動時間を 60% 短縮します。ACK の柔軟で効率的な自動スケーリングと組み合わせることで、アプリケーション負荷が増加すると、ACK クラスターは負荷に基づいて ECS ノードを自動的に作成・起動し、クラスターに参加させます。また、アプリケーションインスタンスをスケジュールおよび起動します。Alibaba Cloud Linux 2 の迅速なスケールアウトと起動機能により、コンピューティングリソースがピークトラフィック需要に迅速に対応できます。
[リソース監視と制御の最適化]
Alibaba Cloud Linux 2 のカーネルは、Pressure Stall Information (PSI)、
per-cgroup kswapd、Memory Priority など、コンテナシナリオ向けのきめ細かい可視化および制御機能を提供します。Alibaba Cloud Linux 2 上の ACK クラスターでは、Cgroup コントローラーを使用してこれらの機能を活用できます。これにより、BufferIO Control、TCP、CPUSet、Mem、NUMA などのリソースのきめ細かい設定と動的更新が可能になります。これにより、アプリケーション間の干渉を最小限に抑えながら、リソース使用率を徐々に向上させることができます。[AI およびデータアクセラレーションの最適化]
Alibaba Cloud Linux 2 における、大規模モデルとマルチタスク向けの最適化により、高性能コンピューティング (HPC) タスクの速度が向上します。ストリーミング読み取りおよび書き込み向けのストレージ最適化により、大規模モデルファイルの読み取りおよび書き込みパフォーマンスも向上します。これらを組み合わせることで、AI および HPC タスクの効率が大幅に向上します。以下は実際のテストシナリオです。
64 スレッドで Alluxio を使用して OSS から 1,152 ファイル (144 GB) をロードする場合、CentOS では 3 分 25 秒かかります。Alibaba Cloud Linux 2 では 2 分 19.037 秒しかかからず、CentOS と比較して約 1.5 倍高速です。
Alluxio にキャッシュされたデータで ResNet50 Batch 128 モデルトレーニングを実行する場合、CentOS 上の V100 GPU は 5,212.00 images/s しか達成できません。Alibaba Cloud Linux 2 上の V100 GPU は 8,746.59 images/s に達し、CentOS と比較して 1.7 倍高速です。
[コンテナリソースの表示強化]
マルチコンテナ、シングルホストのセットアップでは、コンテナ内で直接表示されるリソースはホストのリソースです。これは多くのアプリケーションにとって分かりにくいものです。Alibaba Cloud Linux 2 は、カーネルで Cgroup リソース表示を最適化しています。これにより、コンテナが占有しているリソースがコンテナ内で正しく表示されます。たとえば、
TOPコマンドで表示される情報、およびCPUInfoとMemInfoインターフェースが修正されます。これにより、監視の要件が大幅に簡素化されます。[その他の最適化]
Linux 4.19 カーネルを使用しています。ACK は、Alibaba Cloud カーネルとコンテナ化のベストプラクティスをこのカーネルに統合しています。
OverlayFS のパフォーマンス損失を削減し、コンテナ化がストレージパフォーマンスに与える影響を最小限に抑えます。
ほとんどの sysctl 設定は名前空間化されています。4.19 カーネルでは、ほとんどの sysctl 設定をコンテナ内で個別に設定できます。たとえば、アプリケーションによって TCP タイムアウトと再送信時間の要件が異なります。これらの設定は CentOS 7 カーネルでは変更できませんが、Alibaba Cloud Linux 2 では Pod レベルで設定できます。
クラスターノードの OS イメージとしての Alibaba Cloud Linux 2 の使用
クラスターノードの OS イメージとして Alibaba Cloud Linux 2 を使用するには、クラスターの作成時に [オペレーティングシステム] を [Alibaba Cloud Linux 2.1903] に設定します。詳細については、「ACK マネージドクラスターの作成」をご参照ください。
Alibaba Cloud Linux 2 を選択すると、ACK はクラスターの作成、ノードのスケールアウト、ノードの追加、または自動スケーリングの使用時に、Alibaba Cloud Linux 2 のセキュリティパッチの更新を自動的にチェックし、パッチをインストールします。