Windows アプリケーションをデプロイする
適用対象: AKS on Azure Stack HCI 22H2、Windows Server 上の AKS
このチュートリアルでは、Windows Server コンテナー内の ASP.NET サンプル アプリケーションを、Arc で有効になっている AKS の Azure Kubernetes Service (AKS) クラスターにデプロイし、アプリケーションをテストしてスケーリングする方法について説明します。 また、Windows ノードを Active Directory ドメインに参加させる方法についても説明します。
このチュートリアルでは、Kubernetes の概念の基本的な理解を前提としています。 詳細については、「 Azure Arc で有効になっている AKS のKubernetes の主要な概念」を参照してください。
開始する前に
次の要件を満たしていることを確認します。
- Azure Kubernetes Service クラスター少なくとも 1 つの Windows ワーカー ノードが稼働しています。
- クラスターにアクセスするための kubeconfig ファイル。
- AksHci PowerShell モジュールがインストールされています。
手順に従う場合:
- PowerShell 管理者ウィンドウでコマンドを実行します。
- OS 固有のワークロードが適切なコンテナー ホストに配置されていることを確認する。 Kubernetes クラスターに Linux と Windows ワーカー ノードが混在している場合は、ノード セレクターまたはテイントと容認を使用できます。 詳細については、ノード セレクター、テイントと容認の使用に関するページを参照してください。
アプリケーションを展開する
Kubernetes のマニフェスト ファイルでは、どのコンテナー イメージを実行するかなど、クラスターの望ましい状態を定義します。 これらの手順では、マニフェストを使用して、Windows Server コンテナーで ASP.NET サンプル アプリケーションを実行するために必要なすべてのオブジェクトを作成します。 このマニフェストには、ASP.NET サンプル アプリケーションの Kubernetes デプロイと、インターネットからアプリケーションにアクセスするための外部 Kubernetes サービスが含まれています。
ASP.NET サンプル アプリケーションは、.NET Framework サンプルの一部として提供され、Windows Server コンテナーで実行されます。 AKS Arc では、Windows Server コンテナーが Windows Server 2019 のイメージに基づいている必要があります。
Kubernetes マニフェスト ファイルでは、Windows Server コンテナーを実行できるノードで ASP.NET サンプル アプリケーションのポッドを実行するようにクラスターに指示するノード セレクターも定義する必要があります。
sample.yaml
という名前のファイルを作成し、次の YAML 定義をコピーして貼り付けます。
apiVersion: apps/v1
kind: Deployment
metadata:
name: sample
labels:
app: sample
spec:
replicas: 1
template:
metadata:
name: sample
labels:
app: sample
spec:
nodeSelector:
"beta.kubernetes.io/os": windows
containers:
- name: sample
image: mcr.microsoft.com/dotnet/framework/samples:aspnetapp
resources:
limits:
cpu: 1
memory: 800M
requests:
cpu: .1
memory: 300M
ports:
- containerPort: 80
selector:
matchLabels:
app: sample
---
apiVersion: v1
kind: Service
metadata:
name: sample
spec:
type: LoadBalancer
ports:
- protocol: TCP
port: 80
selector:
app: sample
kubectl apply
コマンドを使用してアプリケーションをデプロイし、YAML マニフェストの名前を指定します。
kubectl apply -f sample.yaml
次の出力例は、デプロイとサービスが正常に作成されたことを示しています。
deployment.apps/sample created
service/sample created
アプリケーションをテストする
アプリケーションが実行されると、Kubernetes サービスによってアプリケーション フロント エンドがインターネットに公開されます。 このプロセスが完了するまでに数分かかることがあります。 場合によっては、サービスのプロビジョニングに数分以上かかることがあります。 このような場合は、最大 10 分と考えてください。
進行状況を監視するには、--watch
引数と共に kubectl get service
コマンドを使用します。
kubectl get service sample --watch
最初に、sample サービスのEXTERNAL-IPは保留中として表示されます
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
sample LoadBalancer 10.0.37.27 <pending> 80:30572/TCP 6s
EXTERNAL-IP アドレスが "保留中" から実際のパブリック IP アドレスに変わったら、CTRL-C
を使用して kubectl
ウォッチ プロセスを停止します。 次の出力例は、サービスに割り当てられている有効なパブリック IP アドレスを示しています。
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
sample LoadBalancer 10.0.37.27 52.179.23.131 80:30572/TCP 2m
サンプル アプリが動作していることを確認するには、Web ブラウザーを開いてサービスの外部 IP アドレスにアクセスします。
ページを読み込もうとしたときに接続がタイムアウトになった場合は、 kubectl get pods --watch
コマンドを実行して、サンプル アプリの準備ができているかどうかを確認します。 場合によっては、Windows コンテナーが起動する前に外部 IP アドレスを使用できます。
アプリケーション ポッドをスケーリングする
アプリケーション フロントエンドの単一レプリカを作成しました。 ご利用のクラスターに存在するポッドの数と状態を確認するには、次のように kubectl get
コマンドを使用します。
kubectl get pods -n default
"サンプル" デプロイのポッドの数を変更するには、kubectl scale
コマンドを使用します。 次の例では、フロントエンド ポッドの数を 3 に増やしています。
kubectl scale --replicas=3 deployment/sample
kubectl get pods
をもう一度実行して、ポッドが作成されたことを確認します。 しばらくすると、追加したポッドがクラスターで利用できる状態になります。
kubectl get pods -n default