次の方法で共有


チュートリアル: 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 のホーム ページで [リソースの作成] を選択します。

Azure portal で新しい仮想ネットワークの作成を開始する方法を示すスクリーンショット。

[ネットワーク]>[仮想ネットワーク] を選びます。

Azure portal で作成する新しい仮想ネットワークを選択する方法を示すスクリーンショット。

[基本] ページで、サブスクリプションを選択し、次の値を入力します。

  • リソース グループ: 新規作成>virtualnodesresourcegroup
  • 仮想ネットワーク名: myvirtualnetwork
  • リージョン: East US

Azure portal で仮想ネットワークを作成するための [基本] ページを構成する方法を示すスクリーンショット。

[IP アドレス] ページで、次のアドレス空間とサブネットを構成します。

  • 10.0.0.0/16: サイズが /24 の default サブネット
  • 10.1.0.0/16: サイズが /16 の aks サブネット
  • 10.2.0.0/16: サイズが /16 の cg サブネット

Azure portal で仮想ネットワークを作成するための [IP アドレス] ページを構成する方法を示すスクリーンショット。

その他の設定はすべて既定値のままにして、[確認と作成] を選択します。

検証が完了すると、仮想ネットワークの設定の概要が表示されます。 [作成] を選択して、仮想ネットワークのデプロイ要求を送信します。

デプロイが開始されると、デプロイが進行中であることを示す通知が表示されます。 仮想ネットワークがデプロイされると、別の通知が表示されます。

AKS クラスターを作成する

Azure portal のホーム ページで [リソースの作成] を選択します。

Azure portal で新しい仮想ネットワークの作成を開始する方法を示すスクリーンショット。

[コンテナー]>[Azure Kubernetes Service (AKS)] を選択します。

Azure portal で作成する新しい AKS クラスターを選択する方法を示すスクリーンショット。

[基本] ページで、仮想ネットワークの作成に使用したのと同じサブスクリプションを選択し、次の値を入力します。

  • リソース グループ: virtualnodesresourcegroup
  • クラスターのプリセット構成: Dev/Test
  • Kubernetes クラスター名: virtualnodescluster
  • リージョン: East US
  • Kubernetes バージョン: 1.29. 以降の任意のバージョン (例: 1.29.10)
  • 自動アップグレード: Enabled with patch

Azure portal で AKS クラスターを作成するための [基本] ページを構成する方法を示すスクリーンショット。

[ノード プール] ページで、agentpool ノード プールに少なくとも 4 個の vCPU と 16 GB の RAM を備えた任意の VM SKU を選択します。 これらのノードは、仮想ノード インフラストラクチャをホストするために使用されます。 Enable virtual nodes を選択しないでください。これは、AKS の以前の仮想ノード オファリングを指します。

Azure portal で 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

Azure portal で AKS クラスターを作成するための [ネットワーク] ページを構成する方法を示すスクリーンショット。

その他の設定はすべて既定値のままにして、[確認と作成] を選択します。

検証が完了すると、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 コンテナー グループを挿入できます。

AKS マネージド ID に追加されたロールの割り当てを示すスクリーンショット。

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

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 分あたり数千個のポッド) をデプロイすることを計画している場合は、ベスト プラクティスと推奨事項を参照してください。