編集

次の方法で共有


AKS 上の Windows Server についてよく寄せられる質問

この記事では、Azure Kubernetes Service (AKS) 上での Windows Server コンテナーの使用に関する最も一般的な質問のいくつかに対する回答を提供します。

Windows ではどのような種類のディスクがサポートされていますか?

Azure Disk と Azure Files がサポートされているボリュームの種類であり、Windows Server コンテナー内で New Technology File System (NTFS) ボリュームとしてアクセスされます。

Windows は第 2 世代仮想マシン (VM) をサポートしていますか?

第 2 世代 VM は、Windows の WS2022 でのみサポートされています。

詳細については、「Azure での第 2 世代 VM のサポート」を参照してください。

Windows ノードに修正プログラムを適用するにはどうすればいいですか?

Windows ノードの最新の修正プログラムを入手するには、ノード プールをアップグレードするか、ノード イメージをアップグレードします。

クライアント ソース IP の保持はサポートされていますか?

現時点で、クライアント ソース IP 保持は Windows ノードではサポートされていません。

ノードあたりのポッドの最大数を変更できますか?

はい。 詳細については、「最大ポッド数」を参照してください。

Windows OS の既定の伝送制御プロトコル (TCP) タイムアウトはどの程度ですか?

Windows OS の既定の TCP タイムアウトは 4 分です。 この値は構成できません。 アプリケーションでタイムアウト時間が長くなる場合、同じノード内の異なるコンテナー間の TCP 接続は 4 分後に終了します。

新しい Windows エージェント プールを作成しようとしたときにエラーが表示されるのはなぜですか。

クラスターを作成したのが 2020 年 2 月より前であり、クラスターのアップグレード操作を一切行っていない場合、クラスターは古い Windows イメージを使用し続けています。 次の例のようなエラーが表示される場合があります。

"展開テンプレートから参照される次のリストのイメージが見つかりません: 発行元: MicrosoftWindowsServer、オファー: WindowsServer、SKU: 2019-datacenter-core-smalldisk-2004、バージョン: 最新。 利用可能なイメージを見つける方法については、「Azure PowerShell を使用した Azure Marketplace 仮想マシン イメージの検索と使用」を参照してください。"

この問題を解決するには、以下の手順を実行する必要があります。

  1. クラスター コントロール プレーンをアップグレードします。これによってイメージ オファーと発行元が更新されます。
  2. 新しい Windows エージェント プールを作成します。
  3. Windows ポッドを既存の Windows エージェント プールから新しい Windows エージェント プールに移動します。
  4. 古い Windows エージェント プールを削除します。

Windows ポッドをデプロイするとしたときにエラーが表示されるのはなぜですか?

--max-pods で作成したいポッドの数より小さい値を指定すると、No available addresses エラーが表示される場合があります。

このエラーを修正するには、十分高い --max-pods 値と共に az aks nodepool add コマンドを使用します。 次に例を示します。

az aks nodepool add \
    --cluster-name $CLUSTER_NAME \
    --resource-group $RESOURCE_GROUP \
    --name $NODEPOOL_NAME \
    --max-pods 3

詳細については、--max-podsドキュメント を参照してください。

仮想マシン ノードに "sshd" という名前の予期しないユーザーが存在するのはなぜですか?

AKS は、OpenSSH サービスのインストール時に "sshd" という名前のユーザーを追加します。 このユーザーは悪意のあるユーザーではありません。 この予期しないユーザー アカウントを無視するようにアラートを更新することをお勧めします。

Windows ノード プールのサービス プリンシパルはどのようにローテーションするのですか?

Windows ノード プールは、サービス プリンシパルのローテーションをサポートしていません。 サービス プリンシパルを更新するには、新しい Windows ノード プールを作成し、ポッドを古いプールから新しいものに移行します。 ポッドを新しいプールに移行した後、古いノード プールを削除します。

サービス プリンシパルの代わりに、マネージド ID を使用できます。 詳細については、「AKS でのマネージド ID の使用」を参照してください。

クラスター上の Windows Server ノードの管理者パスワードはどのように変更しますか?

Azure CLI を使用して管理者パスワードを変更するには、--admin-password パラメーターと共に az aks update コマンドを使用します。 次に例を示します。

az aks update \
    --resource-group $RESOURCE_GROUP \
    --name $CLUSTER_NAME \
    --admin-password <new-password>

Azure PowerShell を使用してパスワードを変更するには、-AdminPassword パラメーターと共に Set-AzAksCluster コマンドレットを使用します。 次に例を示します。

Set-AzAksCluster `
    -ResourceGroupName $RESOURCE_GROUP `
    -Name $CLUSTER_NAME `
    -AdminPassword <new-password>

クラスターの更新を実行すると再起動が発生し、Windows Server ノード プールのみが更新されることに注意してください。 Windows Server のパスワード要件については、「Windows Server のパスワード要件」を参照してください。

ノード プールはいくつ作成できますか?

Windows ノード プールを持つ AKS クラスターは、AKS サービスに指定された既定の制限と同じリソース制限を持ちます。 詳しくは、「Azure Kubernetes Service (AKS) のクォータ、仮想マシンのサイズの制限、およびリージョンの可用性」を参照してください。

Windows ノードでイングレス コントローラーを実行できますか?

はい。Windows Server コンテナーをサポートするイングレス コントローラーを実行できます。

Windows Server コンテナーで gMSA を使用できますか?

はい。 グループ管理サービス アカウント (gMSA) のサポートは、AKS 上の Windows で一般提供されています。 詳細については、「Azure Kubernetes Service (AKS) クラスター上の Windows Server ノードでのグループ管理サービス アカウント (GMSA) の有効化」を参照してください

Windows ノードを含むクラスター上のサービス数に制限はありますか?

Windows ノードを含むクラスターでは、ポート不足が発生するまで、約 500 個 (より少ない場合もあります) のサービスを設定できます。 この制限は、外部トラフィック ポリシーが "クラスター" に設定された Kubernetes サービスに適用されます。

サービス上の外部トラフィック ポリシーがクラスターとして構成されている場合、トラフィックはノード上で追加のソース NAT を受けます。 また、このプロセスにより、TCPIP 動的ポート プールからのポートの予約が発生します。 このポート プールは限られたリソース (既定では最大 16,000 個のポート) であり、サービスへのアクティブな接続が多数あると、動的ポート プールの枯渇が発生し、接続が切断される可能性があります。

Kubernetes Service が外部トラフィック ポリシーを "ローカル" に設定して構成されている場合、ポートの枯渇の問題が 500 個のサービスで発生する可能性は高くありません。

実行中のコンテナーのタイム ゾーンの変更方法を教えてください

実行中の Windows Server コンテナーのタイム ゾーンを変更するには、PowerShell セッションを使用して実行中のコンテナーに接続します。 次に例を示します。

kubectl exec -it CONTAINER-NAME -- powershell

実行中のコンテナーで、Set-TimeZone を使用して、実行中のコンテナーのタイム ゾーンを設定します。 次に例を示します。

Set-TimeZone -Id "Russian Standard Time"

実行中のコンテナーの現在のタイム ゾーンまたは使用可能なタイム ゾーンの一覧を表示するには、Get-TimeZone を使用します。