ノード構成をカスタマイズすることで、ワークロードのニーズに合わせてオペレーティング システム (OS) の設定または kubelet パラメーターを調整できます。 AKS クラスターを作成するか、クラスターにノード プールを追加すると、一般的に使用される OS と Kubelet の設定のサブセットをカスタマイズできます。 このサブセット以外の設定を構成するには、 デーモン セットを使用して、ノードの AKS サポートを失うことなく、必要な構成をカスタマイズします。
Prerequisites
サービスによって新しい設定と kubelet パラメーターのサポートが追加されるため、プレビュー機能フラグの登録が必要になる場合があります。 プレビュー フラグが必要な場合は、 カスタム ノード構成パラメーター参照 によって呼び出されます。
kubelet 設定の kubeReserved と hardEvictionThreshold のプレビュー要件
重要
AKS のプレビュー機能は、セルフサービスのオプトイン単位で利用できます。 プレビューは、"現状有姿のまま" および "利用可能な限度" で提供され、サービス レベル アグリーメントおよび限定保証から除外されるものとします。 AKS プレビューは、ベストエフォート ベースでカスタマー サポートによって部分的にカバーされます。 そのため、これらの機能は運用環境での使用を目的としていません。 詳細については、次のサポート記事を参照してください。
aks-preview Azure CLI 拡張機能をインストールする
aksプレビュー拡張機能をインストールして、次のコマンドを実行します:
az extension add --name aks-preview次のコマンドを実行して、最新バージョンの拡張機能に更新します。
az extension update --name aks-preview
プレビュー CustomNodeConfigPreview および kubeReserved kubelet 設定を使用する前に、Azure サブスクリプションに hardEvictionThreshold 機能フラグを登録してください。
CustomNodeConfigPreview フィーチャーフラグを登録する
CustomNodeConfigPreviewコマンドを使用して、az feature register機能フラグを登録します。az feature register --namespace "Microsoft.ContainerService" --name "CustomNodeConfigPreview"状態が [登録済み] と表示されるまでに数分かかります。
az feature showコマンドを使用して、登録状態を確認します。az feature show --namespace "Microsoft.ContainerService" --name "CustomNodeConfigPreview"状態がRegisteredと表示されたら、 コマンドを使用して、
az provider registerリソース プロバイダーの登録を更新します。az provider register --namespace "Microsoft.ContainerService"
AKS ノード プール用のカスタム ノード構成ファイルを作成する
OS と kubelet の構成を変更するには、必要なパラメーターと設定を含む新しい構成ファイルを作成します。 パラメーターの値を指定しない場合は、既定値が使用されます。
Note
次の例は、一般的な構成設定を示しています。 ワークロードの要件を満たすように設定を変更します。 サポートされているカスタム構成パラメーターの完全な一覧については、「 AKS のカスタム ノード構成パラメーター」を参照してください。
Kubelet の構成
次の内容を持つ新しいファイル linuxkubeletconfig.json を作成します。
{
"cpuManagerPolicy": "static",
"cpuCfsQuota": true,
"cpuCfsQuotaPeriod": "200ms",
"imageGcHighThreshold": 90,
"imageGcLowThreshold": 70,
"topologyManagerPolicy": "best-effort",
"allowedUnsafeSysctls": [
"kernel.msg*",
"net.*"
],
"failSwapOn": false
}
Linux ノード プールでノード カスタマイズ プレビュー kubelet 設定を使用するには、kubelet 構成ファイルに kubeReserved と hardEvictionThreshold を追加します。 次の例では、Kubernetes システム デーモンの CPU とメモリを予約し、kubelet ハード削除しきい値を構成します。
{
"cpuManagerPolicy": "static",
"kubeReserved": {
"cpuMillicores": 200,
"memoryMB": 1024
},
"hardEvictionThreshold": {
"memoryAvailable": "20%",
"nodeFsAvailable": "10%",
"nodeFsInodesFree": "5%"
}
}
kubeReservedとhardEvictionThresholdは、Linux ノード プールでのみ使用します。 どちらの設定でも、 CustomNodeConfigPreview 機能フラグが必要です。
OS 構成
次の内容を持つ新しいファイル linuxosconfig.json を作成します。
{
"transparentHugePageEnabled": "madvise",
"transparentHugePageDefrag": "defer+madvise",
"swapFileSizeMB": 1500,
"sysctls": {
"netCoreSomaxconn": 163849,
"netIpv4TcpTwReuse": true,
"netIpv4IpLocalPortRange": "32000 60000"
}
}
カスタム構成ファイルを使用して AKS クラスターを作成する
Note
新しい AKS クラスターを作成するときにカスタム構成ファイルを使用する場合は、次の情報に注意してください。
- クラスターの作成時に構成を指定した場合、構成は初期ノード プール内のノードにのみ適用されます。 クラスターは、JSON ファイルで構成されていない設定の既定値を保持します。
-
CustomLinuxOsConfigは、Windows OS の種類ではサポートされていません。 - プレビュー
kubeReservedとhardEvictionThresholdkubelet の設定は、Linux ノード プールでのみサポートされており、CustomNodeConfigPreview機能フラグが必要です。 クラスターまたはノード プールを作成する前に、kubeReservedとhardEvictionThresholdkubelet 設定のプレビュー要件の登録手順を完了します。
az aks create コマンドを実行し、--kubelet-configパラメーターと--linux-os-config パラメーターに構成ファイルを指定して、カスタム構成ファイルを使用して新しいクラスターを作成します。 次のコマンド例では、カスタムの ./linuxkubeletconfig.json ファイルと ./linuxosconfig.json ファイルを使用して新しいクラスターを作成します。
az aks create --name <cluster-name> --resource-group <resource-group-name> --kubelet-config ./linuxkubeletconfig.json --linux-os-config ./linuxosconfig.json
カスタム構成ファイルを使用してノード プールを追加する
Note
カスタム構成ファイルを使用して新しいノード プールを既存の AKS クラスターに追加する場合は、次の情報に注意してください。
- 既存のクラスターに Linux ノード プールを追加する場合は、Kubelet 構成、OS 構成、またはその両方を指定できます。 Windows ノード プールを既存のクラスターに追加する場合、kubelet 構成のみを指定できます。 ノード プールを追加するときに構成を指定した場合、構成は新しいノード プール内のノードにのみ適用されます。 ノード プールは、JSON ファイルで構成されていない設定の既定値を保持します。
-
CustomKubeletConfigは、Linux および Windows のノード プールでサポートされています。 - プレビュー
kubeReservedとhardEvictionThresholdkubelet の設定は、Linux ノード プールでのみサポートされており、CustomNodeConfigPreview機能フラグが必要です。 クラスターまたはノード プールを作成する前に、kubeReservedとhardEvictionThresholdkubelet 設定のプレビュー要件の登録手順を完了します。
az aks nodepool add コマンドを使用し、--kubelet-configおよび--linux-os-configパラメーターの構成ファイルを指定して、新しい Linux ノード プールを作成します。 次のコマンド例では、カスタム ./linuxkubeletconfig.json ファイルを使用して新しい Linux ノード プールを作成します。
az aks nodepool add --name <node-pool-name> --cluster-name <cluster-name> --resource-group <resource-group-name> --kubelet-config ./linuxkubeletconfig.json
設定が適用されたことを確認する
カスタム ノード構成を適用した後、 ホストに接続 し、ファイルシステムで sysctl または構成の変更が行われていることを確認することで、設定がノードに適用されたことを確認できます。
サポートされているカスタム構成パラメーターを確認する
サポートされている kubelet および Linux OS 構成パラメーター、許可される値、既定値、および説明の完全な一覧については、 AKS のカスタム ノード構成パラメーターを参照してください。
カスタム ノード構成に関する考慮事項
ノード構成をカスタマイズするときは、次の考慮事項に注意してください。
- ノード イメージのアップグレードにより、カスタム ノード構成が再適用されます。
- スケールアウト操作では、カスタム ノード構成が保持されます。
- AKS では、すべてのカスタム ノード構成パラメーターまたは値に対してフライト前検証が実行されるわけではありません。 クラスター ノードの潜在的な問題を回避するために、指定したカスタム ノード構成パラメーターと値がサポートされ、有効であることを確認します。
- プレビューの
kubeReservedとhardEvictionThresholdの設定は、Linux ノード プールでのみ使用できます。 -
kubeReservedを構成する場合、値は正である必要があり、ターゲット ノード プールで使用可能な CPU またはメモリ容量を超えることはできません。 -
hardEvictionThresholdを構成する場合は、サポートされているユニット (Ki、Mi、Gi、または%のmemoryAvailableとnodeFsAvailable)、および%の生の数値またはnodeFsInodesFreeのみを使用します。 - カスタム ノード構成パラメーターの既定値は、多くの場合、新しいオペレーティング システムバージョンで変更されます。 カスタム ノード構成を適用する場合は、構成するパラメーターの既定値を確認して、クラスター ノードの OS バージョンに対してカスタム設定が適切であることを確認します。
- クラスターの安定性とパフォーマンスに意図しない影響を与えないように、カスタム ノード構成を変更するアクセス許可を持つユーザーの数を制限します。 Kubernetes API に対する Microsoft Entra ID 承認を使用して、クラスター構成設定へのアクセスを制限することを検討してください。
- カスタム構成のあるノードプールは、カスタム構成のないノードプールと分離してください。これにより、特定の構成変更の影響を受けやすいワークロードへの意図しない影響を防ぐことができます。 たとえば、特定の kubelet 設定を必要とする重要なワークロードがある場合は、必要なカスタム kubelet 構成を使用して、そのワークロードを専用ノード プールに分離することを検討してください。
関連コンテンツ
- AKS クラスターを構成する方法を学習する。
- クラスター内 のノード イメージをアップグレードする 方法について説明します。
- 「Azure Kubernetes Service (AKS) クラスターのアップグレード」を参照し、クラスターを最新バージョンの Kubernetes にアップグレードする方法について学習する。
- AKS についてよく寄せられる質問に関する記事の一覧を参照し、AKS についての一般的な質問への回答を確認する。