チュートリアル: Linux アプリをデプロイする
適用対象: AKS on Azure Stack HCI 22H2、AKS on Windows Server
このチュートリアルでは、Azure Arc によって有効になっている AKS の Kubernetes クラスターに、Web フロントエンドと Redis データベース インスタンスを含むマルチコンテナー アプリをデプロイする方法について説明します。また、アプリをテストしてスケーリングする方法についても説明します。
このチュートリアルでは、Kubernetes の概念の基本的な理解を前提としています。 詳細については、「 Kubernetes のコア概念」を参照してください。
開始する前に
次の要件の準備ができていることを確認します。
- 少なくとも 1 つの Linux ワーカー ノードが稼働している AKS クラスター。
- クラスターにアクセスするための kubeconfig ファイル。
- AksHci PowerShell モジュールがインストールされています。 詳細については、「 Install-AksHci」を参照してください。
チュートリアルの手順を実行する場合:
- 管理者特権で開かれた PowerShell ウィンドウでコマンドを実行します。
- OS 固有のワークロードが適切なコンテナー ホストに配置されていることを確認する。 Kubernetes クラスターに Linux と Windows ワーカー ノードが混在している場合は、ノード セレクターまたはテイントと容認を使用できます。 詳細については、ノード セレクター、テイントと容認の使用に関するページを参照してください。
注意
ネットワークを別のターゲット クラスターと共有するターゲット クラスターをデプロイすると、ロード バランサーの IP アドレスの競合が発生する可能性があります。
IP アドレスの競合は、同じ AksHciClusterNetwork
オブジェクトを共有するターゲット クラスターで異なるポートを使用する 2 つのワークロードをデプロイした場合に発生する可能性があります。 IP アドレスとポート マッピングが HA プロキシ内で割り当てられる方法により、重複する IP アドレスが割り当てられる可能性があります。 この場合、ワークロードを再デプロイするまで、一方または両方のワークロードでランダムなネットワーク接続の問題が発生する可能性があります。 ワークロードを再デプロイするときは、各ワークロードにサービス IP アドレスを割り当てる同じポートを使用するか、異なる AksHciClusterNetwork
オブジェクトを使用するターゲット クラスターにワークロードを再デプロイすることができます。
アプリケーションのデプロイ
Kubernetes マニフェスト ファイルは、実行するコンテナー イメージなど、クラスターの目的の状態を定義します。 このチュートリアルでは、マニフェストを使用して、 Azure 投票アプリの実行に必要なすべてのオブジェクトを作成します。 このマニフェストには、2 つの Kubernetes デプロイが含まれています。1 つはサンプルの Azure Vote Python アプリ用、もう 1 つは Redis インスタンス用です。 2 つの Kubernetes サービスも作成されます。Redis インスタンスの内部サービスと、インターネットから Azure Vote アプリにアクセスするための外部サービスです。
azure-vote.yaml という名前のファイルをCreateし、次の YAML 定義をコピー/貼り付けます。
apiVersion: apps/v1
kind: Deployment
metadata:
name: azure-vote-back
spec:
replicas: 1
selector:
matchLabels:
app: azure-vote-back
template:
metadata:
labels:
app: azure-vote-back
spec:
nodeSelector:
"beta.kubernetes.io/os": linux
containers:
- name: azure-vote-back
image: redis
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 250m
memory: 256Mi
ports:
- containerPort: 6379
name: redis
---
apiVersion: v1
kind: Service
metadata:
name: azure-vote-back
spec:
ports:
- port: 6379
selector:
app: azure-vote-back
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: azure-vote-front
spec:
replicas: 1
selector:
matchLabels:
app: azure-vote-front
template:
metadata:
labels:
app: azure-vote-front
spec:
nodeSelector:
"beta.kubernetes.io/os": linux
containers:
- name: azure-vote-front
image: mcr.microsoft.com/azuredocs/azure-vote-front:v1
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 250m
memory: 256Mi
ports:
- containerPort: 80
env:
- name: REDIS
value: "azure-vote-back"
---
apiVersion: v1
kind: Service
metadata:
name: azure-vote-front
spec:
type: LoadBalancer
ports:
- port: 80
selector:
app: azure-vote-front
コマンドを使用してアプリを kubectl apply
デプロイし、YAML マニフェストの名前を指定します。
kubectl apply -f azure-vote.yaml
次の出力例は、正常に作成されたデプロイとサービスを示しています。
deployment "azure-vote-back" created
service "azure-vote-back" created
deployment "azure-vote-front" created
service "azure-vote-front" created
アプリをテストする
アプリが実行されると、Kubernetes サービスによってアプリ フロントエンドがインターネットに公開されます。 このプロセスが完了するまでに数分かかることがあります。
進行状況を監視するには、 コマンドを kubectl get service
引数と共に --watch
使用します。
kubectl get service azure-vote-front --watch
最初は、 azure-vote-front サービスの EXTERNAL-IP は 保留中として表示されます。
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
azure-vote-front LoadBalancer 10.0.37.27 <pending> 80:30572/TCP 22m
EXTERNAL-IP アドレスが保留中から実際のパブリック IP アドレスに変更された場合は、Ctrl キーを押しながら C キーを押して、watch プロセスをkubectl
停止します。 次の出力例は、サービスに割り当てられている有効なパブリック IP アドレスを示しています。
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
azure-vote-front LoadBalancer 10.0.37.27 52.179.23.131 80:30572/TCP 24m
Azure Vote アプリが動作していることを確認するには、Web ブラウザーを開いてサービスの外部 IP アドレスにアクセスします。
アプリケーション ポッドをスケーリングする
Azure Voting App フロントエンドと Redis インスタンスの 1 つのレプリカを作成しました。 ご利用のクラスターに存在するポッドの数と状態を確認するには、kubectl get
コマンドを使用します。
kubectl get pods -n default
次の出力例を見ると、フロントエンド ポッドとバックエンド ポッドが 1 つずつ存在することがわかります。
NAME READY STATUS RESTARTS AGE
azure-vote-back-6bdcb87f89-g2pqg 1/1 Running 0 25m
azure-vote-front-84c8bf64fc-cdq86 1/1 Running 0 25m
azure-vote-front デプロイのポッド数を変更するには、kubectl scale
コマンドを使用します。 次の例では、フロントエンド ポッドの数を 5 に増やしています。
kubectl scale --replicas=5 deployment/azure-vote-front
もう一度実行 kubectl get pods
して、追加のポッドが作成されたことを確認します。 しばらくすると、追加したポッドがクラスターで利用できる状態になります。
kubectl get pods -n default
Name READY STATUS RESTARTS AGE
azure-vote-back-6bdcb87f89-g2pqg 1/1 Running 0 31m
azure-vote-front-84c8bf64fc-cdq86 1/1 Running 0 31m
azure-vote-front-84c8bf64fc-56h64 1/1 Running 0 80s
azure-vote-front-84c8bf64fc-djkp8 1/1 Running 0 80s
azure-vote-front-84c8bf64fc-jmmvs 1/1 Running 0 80s
azure-vote-front-84c8bf64fc-znc6z 1/1 Running 0 80s
次の手順
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示