Windows アプリケーションをデプロイする
適用対象: AKS on Azure Stack HCI 22H2、AKS on Windows Server
このチュートリアルでは、Windows Server コンテナー内の ASP.NET サンプル アプリケーションを、Arc によって有効になっている AKS のAzure Kubernetes Service (AKS) クラスターにデプロイし、アプリケーションをテストおよびスケーリングする方法について説明します。 また、Windows ノードを Active Directory ドメインに参加させる方法についても説明します。
このチュートリアルでは、Kubernetes の概念の基本的な理解を前提としています。 詳細については、「 Azure Arc で有効になっている AKS の Kubernetes のコア概念」を参照してください。
開始する前に
次の要件を満たしていることを確認します。
- 少なくとも 1 つの Windows ワーカー ノードが稼働しているAzure Kubernetes Service クラスター。
- クラスターにアクセスするための 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
のファイルをCreateし、次の 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 分と考えてください。
進行状況を監視するには、 コマンドを kubectl get service
引数と共に --watch
使用します。
kubectl get service sample --watch
最初は、サンプル サービスの 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 アドレスを使用できる場合があります。
アプリケーション ポッドをスケーリングする
アプリケーション フロントエンドの 1 つのレプリカを作成しました。 ご利用のクラスターに存在するポッドの数と状態を確認するには、次のように kubectl get
コマンドを使用します。
kubectl get pods -n default
"サンプル" デプロイのポッドの数を変更するには、kubectl scale
コマンドを使用します。 次の例では、フロントエンド ポッドの数を 3 に増やしています。
kubectl scale --replicas=3 deployment/sample
もう一度を実行 kubectl get pods
して、ポッドが作成されたことを確認します。 しばらくすると、追加したポッドがクラスターで利用できる状態になります。
kubectl get pods -n default
次の手順
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示