APC 技術ブログ

株式会社エーピーコミュニケーションズの技術ブログです。

株式会社 エーピーコミュニケーションズの技術ブログです。

【不定期投稿 】 APC的Azureのコンテナ製品更新情報 ~4/30-5/9~

はじめに

こんにちは。ACS事業部の谷合です。
皆さんは、Azureの更新情報やAKSのChangelogが公開されていることはご存じでしょうか?
今回から私の得意分野であるコンテナ製品に焦点を当てて、個人的に気になった更新情報や、AKSのChangelogをご紹介していこうと思います。

早速やっていきましょう!

コンテナ製品Update

azure.microsoft.com

Azure Container Registry(以降ACR)で以下の機能強化がなされました。

  • レジストリサイズの拡大:これまで20TiBが上限だったACRのレジストリサイズが、すべてのお客様を対象に40TiBに自動アップグレードされました。この容量拡大により、より多くのコンテナイメージを制約なく保存できるようになります。

  • ジオ・レプリケーションの拡張:冗長性とディザスタリカバリのための重要な機能であるジオレプリケーションが、20TiBを超えるすべてのレジストリで有効になりました。さらに、パフォーマンスを最適化し、以前より10倍高速になりました。

現在、Microsoftではレジストリサイズを100TiB以上にさらに拡大すること取り組んでいるようです。これは、特に大規模な言語モデル(LLM)や機械学習(ML)モデルに起因する、より大きなワークロードに対する需要の高まりを見越したものです。

現状のACRの制限は以下のリンクをご確認ください。

Registry service tiers and features - Azure Container Registry | Microsoft Learn

azure.microsoft.com

Azure Container Apps(以降ACA)は、コンテナ化アプリケーションへのネットワークファイルシステム(NFS)Azure Filesボリュームのマウントをサポートするようになりました。
この機能はパブリックプレビューで公開されています。NFS Azure Filesボリュームは、アプリやジョブにスケーラブルで高性能なファイルシステムを提供します。NFS Azure Filesボリュームを使用して、アプリケーション内の複数のコンテナ間でデータを共有したり、コンテナの再起動にわたってデータを永続化したりできます。
現在ACAでのAzure FilesのプロトコルはSMBが正式にサポートされていますが、Unix/Linuxで最適化されているNFSもサポートされるとなると、多くのコンテナでNFS Azure Filesが選択されることが多くなるのではないでしょうか?

azure.microsoft.com

TaintはKubernetesの機能であり、ノードにTaintsを付与することで、Tolerationを設定していないPodを、スケジューリング対象から外すことができます。現在AKSノードに適用できるテイントには2種類あり、ノード初期化テイントが今回の新機能となります。

  • NodeTaint:これは、ノードアフィニティでPodをスケジューリングするために、ノード上に永続的に残ります。ノードテイントは AKS API を使用してのみ完全に削除できます。

  • Node Initialization Taints:現在プレビューで利用可能な初期化テイントは、ノードのセットアップに余分な時間が必要なシナリオなどで一時的に使用するためのものです。適用後すぐに削除するのが理想的です。ノードの初期化テイントはkubernetes APIを使って削除できますが、スケーリングやアップグレードの後に再び現れます。

初期化テイントを完全に削除したい場合は、Kubernetes APIを使用してノードの汚染を解除した後、AKS APIを使用して削除できます。AKS APIを使用してクラスタスペックから初期化テイントを削除すると、リイメージ操作後に新しく作成されたノードには初期化テイントが表示されなくなります。

azure.microsoft.com

Visual Studio CodeのAKS拡張機能がバージョン1.4.3に更新されました。この新しいリリースには、一般的な機能強化に加え、新しいコマンド「Retina capture」が含まれています。Retinaキャプチャは、クラウドにとらわれないオープンソースのeBPFネットワーク観測ツールであるRetinaを使用して、iptables-rulesなどのログのキャプチャを支援します。

AKS Changelog

github.com

Changelogでは、本記事の執筆時の最新のものを取り上げようと思います。

もうすでに対応済のところも多いかと思いますが、AKS v1.29からはcgroup v2がデフォルトになっています。
cgroup v1に依存するアプリケーションを運用中の場合は、v2に対応させることを推奨します。

お知らせ

  • 1.30のKubernetesバージョンと1.27のLTSバージョンから、アップグレード時にベータ版アプリはデフォルトで無効になります。1.30のリリース近くには、明示的にベータ版アプリを有効にするオプションが提供される予定です。

  • 2027年3月15日、Kubernetes 1.34がプラットフォームのサポート終了に達すると、Windows Server 2022は引退する。Kubernetes 1.35以上でWindows Server 2022のノードプールを新規作成することはできなくなります。Windows Server 2025またはWindows Server Annual Channelの豊富な利点を得るために、2027年3月15日までに切り替えることをお勧めします。これらの新しいWindows OSバージョンは、Windows Server 2022が引退する前にAKSでサポートされます。

  • 2020年、Dockerは全ユーザーを対象としたレート制限ポリシーを制定しました。この変更に対応するため、マイクロソフトはDockerと直接協力し、Microsoft Azureのユーザーが影響を受けないようにしました。しかし、2024年6月30日から、Azureのお客様はこの制限の影響を受けるようになります。この制限による潜在的な影響を軽減するために、お客様には以下のことをお勧めします。Azure Container Registry内のArtifact Cache機能を使用するか、Docker Subscriptionにサインアップすることをお勧めします。

  • ListKubernetesVersions APIを使用してクラスタを作成する前に、Kubernetesのマイナーバージョンをリストして選択するプログラミング/スクリプトロジックを使用している場合、Kubernetes v1.27以降、APIはSupportPlanを[KubernetesOfficial, AKSLongTermSupport]として返すことに注意してください。AKSLongTermSupportバージョンを除外し、KubernetesOfficialサポートプランバージョンを選択するようにロジックを更新してください。そうでなければ、LTSが本当にあなたの進むべき道である場合、クラスタを作成する前に、まずListKubernetesVersions APIからPremiumティアとAKSLongTermSupportサポートプランバージョンにオプトインしてください。

リリースノート

特徴

  • このリリースにより、Azure Linux 2.0はv1.27でAKS Long Term Support(LTS)のサポート対象OSになりました。

  • 2024-01-02-preview 以降のプレビュー API バージョンを使用して、Get/List 操作コールを使用して、作成、アップグレード、スケールなどの進行中の操作の進行状況を把握できるようになりました。

  • AKSパッチバージョン1.29.4が利用可能になりました。

挙動の変化:

  • 手動でノードに追加したラベル、テイント、注釈は、サージドアップグレード中にノードにコピーされなくなりました。新しいノードにラベルやテイントが存在することを確認するには、AKSが提供するラベルやテイント機能を使用してください。

  • Istioベースのサービスメッシュアドオンは、メッシュのアップグレードまたはクラスタのアップグレードが試みられない限り、クラスタバージョンとの互換性の検証をスキップするようになりました。

  • Kubernetesバージョン1.29から、複数のアベイラビリティゾーンにまたがってAzure Kubernetes Service(AKS)クラスタをデプロイする場合、AKSはゾーン冗長ストレージ(ZRS)を利用して、組み込みのストレージクラス内にマネージドディスクを作成するようになりました。ZRSは、選択したリージョン内の複数のAzureアベイラビリティゾーンにまたがるAzureマネージドディスクの同期レプリケーションを保証します。この冗長戦略は、アプリケーションの回復力を強化し、データセンターの障害からデータを保護します。

バグ修正:

  • ダイナミックIP割り当てでAzure CNIを使用してエージェントプールをアップグレードする際に、サブネット内の空きIP数が正しく計算されないバグを修正しました。
  • プライベートリンクサービスを使用したサブネットの正しいIPアドレス計算を可能にするバグを修正しました。
  • ポッドに注入されるシステム環境変数の順序が変更されることがあるバグを修正しました。
  • アベイラビリティ・ゾーンを使用するステートフルなワークロードのデプロイメントにノード自動プロビジョニングを使用するクラスタにおけるバグを修正しました。
  • Node Autoprovisioning とマネージド ID を使用して Azure Container Registry を認証するクラスタのバグを修正しました。
  • Pod Identity を使用するクラスタが Azure CNI への移行に失敗する問題を修正しました。
  • Istio ベースのサービス メッシュ アドオン コンポーネントが、CriticalAddonsOnly テイントを持つシステム ノード プールでの実行に耐えられるようになりました。
  • 既存のノードプールでエフェメラルディスクの配置が誤って変更/更新される問題を修正しました。

ACS事業部のご紹介

私達ACS事業部はAzure・AKSなどのクラウドネイティブ技術を活用した内製化やGitHub Enterpriseの導入のご支援をしております。
www.ap-com.co.jp www.ap-com.co.jp また、一緒に働いていただける仲間も募集中です!
我々の事業部のCultureDeckはコチラ。

www.ap-com.co.jp 今年もまだまだ組織規模拡大中なので、ご興味持っていただけましたらぜひお声がけください。 www.ap-com.co.jp

本記事の投稿者: 谷合純也
AKS/ACA、GitHubをメインにインフラ系のご支援を担当しています。
junya0530さんの記事一覧 | Zenn