チュートリアル: Azure Kubernetes Service クラスター内の Azure Container Instances に仮想ノードをデプロイする
このチュートリアルでは、Azure portal を使用して Azure Kubernetes Service (AKS) クラスターをデプロイします。 AKS クラスターをデプロイした後、Helm チャートを使用して Azure Container Instances に仮想ノードをデプロイします。
前提条件
このチュートリアルでは、次のツールがインストールされていることを前提としています。
- Azure CLI
- kubectl (バージョン 1.29 以降)
- Helm
- Git
Azure へのサインイン
Azure portal (https://portal.azure.com) にサインインする
Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。
AKS クラスター用に仮想ネットワークを作成する
Azure portal のホーム ページで [リソースの作成] を選択します。
[ネットワーク]>[仮想ネットワーク] を選びます。
[基本] ページで、サブスクリプションを選択し、次の値を入力します。
- リソース グループ: 新規作成>
virtualnodesresourcegroup
- 仮想ネットワーク名:
myvirtualnetwork
- リージョン:
East US
[IP アドレス] ページで、次のアドレス空間とサブネットを構成します。
- 10.0.0.0/16: サイズが /24 の
default
サブネット - 10.1.0.0/16: サイズが /16 の
aks
サブネット - 10.2.0.0/16: サイズが /16 の
cg
サブネットcg
サブネットにはMicrosoft.ContainerInstance/containerGroups
へのサブネット委任が必要です。- 仮想ノードで実行されているポッドに送信ネットワークが必要な場合は、NAT Gateway を設定し、それを使用するように
cg
サブネットを構成する必要があります。 このセットアップの手順については、「コンテナー グループからの送信トラフィックのための静的 IP アドレスの NAT Gateway を構成する」を参照してください。
その他の設定はすべて既定値のままにして、[確認と作成] を選択します。
検証が完了すると、仮想ネットワークの設定の概要が表示されます。 [作成] を選択して、仮想ネットワークのデプロイ要求を送信します。
デプロイが開始されると、デプロイが進行中であることを示す通知が表示されます。 仮想ネットワークがデプロイされると、別の通知が表示されます。
AKS クラスターを作成する
Azure portal のホーム ページで [リソースの作成] を選択します。
[コンテナー]>[Azure Kubernetes Service (AKS)] を選択します。
[基本] ページで、仮想ネットワークの作成に使用したのと同じサブスクリプションを選択し、次の値を入力します。
- リソース グループ:
virtualnodesresourcegroup
- クラスターのプリセット構成:
Dev/Test
- Kubernetes クラスター名:
virtualnodescluster
- リージョン:
East US
- Kubernetes バージョン:
1.29.
以降の任意のバージョン (例:1.29.10
) - 自動アップグレード:
Enabled with patch
[ノード プール] ページで、agentpool
ノード プールに少なくとも 4 個の vCPU と 16 GB の RAM を備えた任意の VM SKU を選択します。 これらのノードは、仮想ノード インフラストラクチャをホストするために使用されます。 Enable virtual nodes
を選択しないでください。これは、AKS の以前の仮想ノード オファリングを指します。
[ネットワーク]ページで、次の値を入力します。
- ネットワーク構成:
Azure CNI Node Subnet
- Bring your own Azure virtual network:
Enabled
- 仮想ネットワーク:
myvirtualnetwork
- クラスター サブネット:
aks
- Kubernetes サービスのアドレス範囲:
10.4.0.0/16
- Kubernetes DNS サービスの IP アドレス:
10.4.0.10
- ネットワーク ポリシー:
Calico
その他の設定はすべて既定値のままにして、[確認と作成] を選択します。
検証が完了すると、AKS クラスターの設定の概要が表示されます。 [作成] を選択して、AKS クラスターのデプロイ要求を送信します。
デプロイが開始されると、デプロイが進行中であることを示す通知が表示されます。 AKS クラスターがデプロイされると、別の通知が表示されます。
AKS クラスターのマネージド ID にアクセス許可を割り当てる
AKS クラスターをデプロイすると、クラスター インフラストラクチャをホストするために、AKS によって同じサブスクリプション内にノード リソース グループが作成されます。 既定では、このリソース グループの名前は MC_<resource group>_<AKS cluster>_<region>
のようになります。 このチュートリアルでは、ノード リソース グループに MC_virtualnodesresourcegroup_virtualnodescluster_eastus
という名前を付けます。
ノード リソース グループに作成されるリソースの 1 つは、 virtualnodescluster_agentpool
という名前のマネージド ID です。 このマネージド ID に移動し、[Azure ロールの割り当て] を選択します。 次に、次の 2 つのロールの割り当てを追加します。
- スコープ:
Resource group
- サブスクリプション:
<your subscription name>
- リソース グループ:
MC_virtualnodesresourcegroup_virtualnodescluster_eastus
- ロール:
Contributor
このロールの割り当てにより、ノード リソース グループ内に ACI コンテナー グループを作成できます。
- スコープ:
Resource group
- サブスクリプション:
<your subscription name>
- リソース グループ:
virtualnodesresourcegroup
- ロール:
Contributor
このロールの割り当てにより、このリソース グループで作成した仮想ネットワークに ACI コンテナー グループを挿入できます。
Helm チャートを使用して Azure Container Instances に仮想ノードをインストールする
Azure CLI を使用して、作成した AKS クラスターの構成と資格情報を取得します。 これにより、AKS クラスターの kubectl が構成されます。
az login
az account set --subscription <your subscription ID>
az aks get-credentials --name virtualnodescluster --resource-group virtualnodesresourcegroup
さらに、コンテナー グループをデプロイできるように、サブスクリプションに ACI リソース プロバイダーを登録します。
az provider register -n Microsoft.ContainerInstance
virtualnodesOnAzureContainerInstances GitHub リポジトリをクローンします。 Azure Container Instances に仮想ノードをインストールするための Helm チャートは、Helm/virtualnode
フォルダーにあります。
次のコマンドを使用して Helm チャートをインストールします。
helm install virtualnode <cloned repository location>\Helm\virtualnode
1 分以内に、新しい仮想ノードが AKS クラスターに登録され、準備完了状態になります。 kubectl を使用して、AKS クラスター ノードの状態を確認できます。
kubectl get nodes
最初のポッドを仮想ノードにデプロイする
他の Kubernetes ノードと同様に、仮想ノードと対話できます。 たとえば、以下のサンプル YAML は、AKS クラスターの仮想ノードにポッドをデプロイします。ポッドを適切に配置するために、ノード セレクターと許容値を使用していることに注意してください。 kubectl apply を使用して YAML をデプロイできます。
apiVersion: v1
kind: Pod
metadata:
annotations:
name: demo-pod
spec:
containers:
- command:
- /bin/bash
- -c
- 'counter=1; while true; do echo "Hello, World! Counter: $counter"; counter=$((counter+1)); sleep 1; done'
image: mcr.microsoft.com/azure-cli
name: hello-world-counter
resources:
limits:
cpu: 2250m
memory: 2256Mi
requests:
cpu: 100m
memory: 128Mi
nodeSelector:
virtualization: virtualnode2
tolerations:
- effect: NoSchedule
key: virtual-kubelet.io/provider
operator: Exists
ポッドがデプロイされたら、"通常の" Kubernetes ポッドとまったく同じように操作できます。
たとえば、ポッドの状態とイベントを表示するには (エラーを見つけるのに役立ちます):
kubectl describe pods demo-pod
ポッドのログを表示するには:
kubectl logs demo-pod
ポッドのシェルを取得するには:
kubectl exec demo-pod -it -- /bin/bash
次のステップ
このチュートリアルでは、Azure portal で AKS クラスターを作成し、Helm チャートを使用して Azure Container Instances に仮想ノードをデプロイし、ポッドを仮想ノードにデプロイしました。 これで、仮想ノードで Kubernetes ポッドを実行する方法に関する基本的な知識が得られたので、これらのポッドでほとんどの Kubernetes 機能とコンストラクトをすぐに利用できるようになりました。
ポッドに特化した仮想ノード機能または動作を利用する場合は、「ポッドのカスタマイズ」を参照してください。
仮想ノードのインストールをカスタマイズする場合は、「ノードのカスタマイズ」を参照してください。
仮想ノードに大規模なワークロード (1 分あたり数千個のポッド) をデプロイすることを計画している場合は、ベスト プラクティスと推奨事項を参照してください。