Alibaba Cloud Container Compute Service (ACS) は、高性能なコンテナ化コンピューティングサービスを提供します。ACS を使用すると、クラウド内のコンテナ化アプリケーションを便利かつ効率的に実行できます。このトピックでは、kubectl を使用して ACS クラスタにコンテナ化アプリケーションをデプロイ、公開、および監視する方法について説明します。
背景情報
このトピックでは、イメージを使用して acs-kube という名前のアプリケーションを ACS クラスタにデプロイする方法を示します。このアプリケーションは、オンラインのマジックキューブゲームを提供します。このトピックの手順を実行すると、ACS クラスタが作成され、マジックキューブゲームを提供するアプリケーションがデプロイされます。
アプリケーションのデプロイに使用されるコンテナイメージは、オープンソースプロジェクトに基づいて構築されています。イメージアドレスは
registry.cn-hangzhou.aliyuncs.com/acr-toolkit/ack-cube
です。kubectl は、Kubernetes クラスタに接続して管理するために Kubernetes が提供するコマンドラインツールです。kubectl の詳細については、kubectl を参照してください。
Cloud Shell は、Alibaba Cloud が提供する Web ベースのコマンドラインツールです。ACS コンソールの Cloud Shell で kubectl を使用して、ACS クラスタを管理できます。インストールと構成は不要です。
手順
ACS の有効化と権限の付与
ACS を初めて使用する場合は、ACS を有効化し、クラウド リソースにアクセスするための権限を ACS に付与する必要があります。
ステップ 2: ACS クラスタを作成する
このステップでは、ACS クラスタを作成するときにクラスタパラメータを構成する方法を示します。
クラスタ ページの左上隅にある クラスタの作成 をクリックします。
ACS コンソール にログインします。左側のナビゲーションペインで、クラスタ をクリックします。
クラスタの作成 ページで、次の表に示すパラメータを設定します。
表に記載されていないパラメータには、デフォルト設定を使用します。
パラメータ
説明
例
クラスタ名
クラスタの名前を入力します。
ACS-Demo
リージョン
クラスタをデプロイするリージョンを選択します。
中国 (北京)
VPC
ACS クラスタは、仮想プライベートクラウド (VPC) にのみデプロイできます。クラスタと同じリージョンにある VPC を指定する必要があります。
VPC の作成 をクリックして、中国 (北京) リージョンに vpc-acs-demo という名前の VPC を作成します。詳細については、VPC の作成と管理 を参照してください。
vpc-acs-demo
vSwitch
クラスタ内のノードが相互に通信するための vSwitch を選択します。
Vswitch の作成 をクリックし、vpc-ack-demo VPC に vswitch-ack-demo という名前の vSwitch を作成します。次に、vSwitch リストで vswitch-ack-demo を選択します。詳細については、vSwitch の作成と管理 を参照してください。
vswitch-acs-demo
API サーバーアクセス設定
クラスタの Kubernetes API サーバーをインターネットに公開するかどうかを指定します。インターネット経由でクラスタを管理する場合は、エラスティック IP アドレス (EIP) を使用して Kubernetes API サーバーを公開する必要があります。
EIP で API サーバーを公開 を選択します。
サービスディスカバリ
クラスタのサービスディスカバリを有効にするかどうかを指定します。サービスディスカバリを有効にするには、CoreDNS を選択します。
CoreDNS を選択します。
注文の確認 をクリックし、利用規約を読んで選択してから、クラスタの作成 をクリックします。
説明クラスタの作成には約 10 分かかります。クラスタが作成されると、クラスタ ページでクラスタを表示できます。
ステップ 3: クラスタに接続する
このステップでは、kubectl クライアントまたは Cloud Shell を使用して ACS クラスタに接続する方法を示します。詳細については、クラスタの kubeconfig ファイルの取得と kubectl を使用してクラスタに接続する方法 および Cloud Shell で kubectl を使用して ACS クラスタを管理する を参照してください。
kubectl クライアントを使用してクラスタに接続する
ACS コンソール にログインします。左側のナビゲーションペインで、クラスタ をクリックします。
クラスタ ページで、作成したクラスタの名前 (この例では ACS-Demo) をクリックします。
クラスタ情報 ページで、接続情報 タブをクリックします。パブリックアクセス タブの [コピー] をクリックして、インターネット経由でクラスタにアクセスするために使用されるクレデンシャルをコピーします。
クレデンシャルを
$HOME/.kube
ディレクトリのconfig
ファイルに貼り付けて、ファイルを保存してから終了します。説明$HOME/
ディレクトリに.kube
フォルダとconfig
ファイルが存在しない場合は、フォルダとファイルを手動で作成する必要があります。次の kubectl コマンドを実行して、クラスタの接続性を確認します。
次のコマンドを実行して、クラスタの名前空間をクエリします。
kubectl get namespace
予期される出力:
NAME STATUS AGE arms-prom Active 4h39m default Active 4h39m kube-node-lease Active 4h39m kube-public Active 4h39m kube-system Active 4h39m
Cloud Shell を使用してクラスタに接続する
ACS コンソール にログインします。左側のナビゲーションペインで、クラスタ をクリックします。
クラスタ ページで、作成したクラスタを見つけて、
アクション 列で を選択します。Cloud Shell の起動には数秒かかります。Cloud Shell が起動すると、Cloud Shell インターフェースで kubectl コマンドを実行して、クラスタとクラスタにデプロイされたアプリケーションを管理できます。
ステップ 4: アプリケーションをデプロイして公開する
このステップでは、kubectl を使用して Deployment を作成することによりステートレスアプリケーションをデプロイし、LoadBalancer Service を使用してアプリケーションを公開する方法を示します。アプリケーションを公開する方法の詳細については、自動的に作成された SLB インスタンスを使用してアプリケーションを公開する を参照してください。
acs-cube.yaml という名前のファイルを作成し、次の内容をファイルにコピーします。
次のコマンドを実行して、acs-cube アプリケーションをデプロイします:
kubectl apply -f acs-cube.yaml
次のコマンドを実行して、アプリケーションのステータスをクエリします:
kubectl get deployment acs-cube
予期される出力:
NAME READY UP-TO-DATE AVAILABLE AGE acs-cube 2/2 2 2 96s
acs-cube-svc.yaml という名前のファイルを作成し、次の内容をファイルにコピーします。
selector
を ack-cube.yaml ファイルのmatchLabels
の値に設定します。この例では、値はapp: ack-cube
に設定されています。これにより、アプリケーションが Service のバックエンドに追加されます。apiVersion: v1 kind: Service metadata: labels: app: acs-cube name: acs-cube-svc namespace: default spec: ports: - port: 80 protocol: TCP targetPort: 80 selector: app: acs-cube # Deployment の作成に使用された YAML ファイルの matchLabels パラメータの値を指定する必要があります type: LoadBalancer
次のコマンドを実行して、ack-cube-svc という名前の Service を作成し、Service を使用してアプリケーションを公開します。
ACS は、インターネットに接続する Server Load Balancer (SLB) インスタンスを自動的に作成し、SLB インスタンスを Service に関連付けます。
kubectl apply -f acs-cube-svc.yaml
次のコマンドを実行して、LoadBalancer Service が作成されているかどうかを確認します。
作成したアプリケーションは、出力の EXTERNAL-IP 列の IP アドレスを使用して公開されます。
kubectl get svc acs-cube-svc
予期される出力:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE acs-cube-svc LoadBalancer 172.16.72.161 47.94.xx.xx 80:31547/TCP 32s
ステップ 5: アプリケーションをテストする
ブラウザのアドレスバーに IP アドレス (EXTERNAL-IP) を入力し、Enter キーを押してマジックキューブゲームを開始します。
関連情報
アプリケーション Pod の自動スケーリングを有効にするには、Horizontal Pod Autoscaler (HPA)、Cron Horizontal Pod Autoscaler (CronHPA)、および Vertical Pod Autoscaler (VPA) を構成できます。詳細については、自動スケーリングの概要 を参照してください。
Service を介したアプリケーションの公開に加えて、Ingress を使用してレイヤー 7 でアプリケーショントラフィックルーティングを有効にすることができます。詳細については、ALB Ingress の概要 を参照してください。
アプリケーションの監視情報を表示するには、クラスタの詳細ページに移動し、左側のナビゲーションペインで [操作] > [Prometheus 監視] を選択します。Prometheus 監視ページでは、CPU 使用率、メモリ使用率、ネットワーク I/O などの監視情報を表示できます。詳細については、Managed Service for Prometheus を使用して ACS クラスタを監視する を参照してください。