Container Service for Kubernetes (ACK) は、コンテナ化されたアプリケーションに高性能な管理サービスを提供します。 ACKを使用して、クラウド上で実行されるコンテナ化されたアプリケーションを便利かつ効率的に管理できます。 このトピックでは、kubectlを使用して、ACKクラスターにコンテナー化されたアプリケーションをデプロイ、公開、および監視する方法について説明します。
背景情報
このトピックでは、コンテナーイメージを使用してack ProクラスターにACK-cubeアプリケーションをデプロイする方法を示します。 このアプリケーションは、オンライン魔法のキューブゲームです。 このトピックの手順を実行すると、マジックキューブゲームがACK Proクラスターにデプロイされます。
サンプルアプリケーションのデプロイに使用されるコンテナーイメージは、オープンソースプロジェクトに基づいて作成されます。 画像アドレスは
registry.cn-hangzhou.aliyuncs.com/acr-toolkit/ack-cube:1.0
です。kubectlは、Kubernetesクラスターに接続して管理するためのコマンドラインツールです。 kubectlの詳細については、「コマンドラインツール (kubectl) | Kubernetes」をご参照ください。
Cloud Shellは、Alibaba Cloudが提供するwebベースのコマンドラインツールです。 ACKコンソールのCloud Shellでkubectlを使用して、ACKクラスターを管理できます。 インストールと設定は必要ありません。
Kubernetesで使用される用語に精通しています。 詳細については、「Container Service For Kubernetesの用語とKubernetesの用語の比較」をご参照ください。
手順
ステップ1: ACKの有効化とアクセス許可の付与
ACKを初めて使用する場合は、ACKを有効化し、ACKにクラウドリソースへのアクセス許可を付与する必要があります。
に移動します。Go to theContainer Service for Kubernetesページに移動します。
Container Service for Kubernetes利用規約を読み、[今すぐ有効化] をクリックします。
ACKコンソールにログインします。
[Container service needs to create default roles] ページで、[RAMコンソールに移動] をクリックします。 [クラウドリソースアクセス権限付与] ページで、[権限付与ポリシーの確認] をクリックします。
Resource Access Management (RAM) ロールをACKに割り当てた後、ACKコンソールに再度ログインして、ACKの使用を開始します。 承認プロセス中に他の問題が発生した場合は、「承認管理に関するFAQ」をご参照ください。
手順2: ACK Proクラスターの作成
この手順では、ACK Proクラスターを作成する方法を示します。 デフォルト設定は、ほとんどのクラスターパラメーターに使用されます。 クラスターパラメーターの詳細については、「ACK Proクラスターの作成」をご参照ください。
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページの右上隅にある [Kubernetesクラスターの作成] をクリックします。
[マネージドKubernetes] タブで、次の表の説明に従ってクラスターパラメーターを設定します。 テーブルに含まれていないパラメーターにはデフォルト設定を使用します。
パラメーター
説明
例
クラスター名
クラスターの名前を入力します。
ACK-デモ
クラスター仕様
クラスタータイプを選択します。 [Professional] または [Basic] を選択できます。 本番環境とテスト環境でACK Proクラスターを使用することを推奨します。 ACK Basicクラスターは、個々のユーザーの学習とテストのニーズを満たすことができます。
ACK Proクラスターの詳細については、「ACK Proクラスターの概要」をご参照ください。
Professional
リージョン
クラスターをデプロイするリージョンを選択します。
中国 (北京)
[VPC]
ACKクラスターは、仮想プライベートクラウド (VPC) にのみデプロイできます。 クラスターと同じリージョンにVPCを指定する必要があります。
この例では、[VPCの作成] をクリックし、中国 (北京) リージョンにVPC-ack-demoという名前のvpcを作成します。 詳細については、「VPCの作成と管理」をご参照ください。
vpc-ack-demo
vSwitch
相互に通信するクラスター内のノードのvSwitchを選択します。
この例では、[vSwitchの作成] をクリックし、vpc-ack-demo VPCにvSwitch-ack-demoという名前のvswitchを作成します。 次に、vswitchリストでvSwitch-ack-demoを選択します。 詳細については、「vSwitchの作成と管理」をご参照ください。
vswitch-ack-デモ
APIサーバーへのアクセス
クラスターのKubernetes APIサーバーをインターネットに公開するかどうかを指定します。 インターネット経由でクラスターを管理する場合は、EIP (elastic IP address) を使用してKubernetes APIサーバーを公開する必要があります。
この例では、[APIサーバーをEIPで公開] が選択されています。
[次へ: ノードプール設定] をクリックします。 説明に従って、次のパラメーターを設定します。 テーブルに含まれていないパラメーターにはデフォルト設定を使用します。
パラメーター
説明
例
[インスタンスタイプ]
ノードのデプロイに使用するインスタンスタイプを選択します。
vCoresの数とメモリの量を指定して、インスタンスタイプをフィルタリングできます。 検索ボックスでインスタンスタイプを指定して、インスタンスタイプを検索することもできます。
クラスターの安定性を確保するために、少なくとも4つのvCoresと8 GiBのメモリを持つインスタンスタイプを選択することを推奨します。 Elastic Compute Service (ECS) インスタンスタイプとインスタンスタイプの選択方法の詳細については、「ACKクラスターのECS仕様の選択に関する提案」および「インスタンスファミリーの概要」をご参照ください。
少なくとも4 vCoresと8 GiBのメモリを持つインスタンスタイプ
購入数
ワーカーノードの数を指定します。
2
システムディスク
ノードのシステムディスクを設定します。
この例では、拡張SSD (ESSD) がディスクタイプとして選択され、ディスクサイズは40 GiBに設定されています。
ログオンタイプ
ノードのログオンタイプを選択します。
この例では、ログインタイプとしてパスワードログインが選択され、パスワードが指定されています。
[次へ: コンポーネント設定] をクリックします。 すべてのコンポーネントパラメータにデフォルト設定を使用します。
[次へ: 注文の確認] をクリックし、ACK利用規約を読んで選択し、[クラスターの作成] をクリックします。
説明クラスターの作成には約10分かかります。 クラスターの作成後、[クラスター] ページでクラスターを表示できます。
ステップ3: クラスターへの接続
この手順では、kubectlクライアントまたはCloud Shellを使用してACKクラスターに接続する方法を示します。 詳細については、「クラスターのkubeconfigファイルを取得し、kubectlを使用してクラスターに接続する」および「Cloud Shellでkubectlを使用してACKクラスターを管理する」をご参照ください。
方法1: kubectlクライアントを使用したクラスターへの接続
ACKコンソールにログインします。
ACKコンソールの左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、ACK-Demoクラスターの名前をクリックします。
[クラスター情報] ページで、[接続情報] タブをクリックします。 [パブリックアクセス] タブの [コピー] をクリックします。 このようにして、インターネット経由でクラスターにアクセスするために使用される資格情報がコピーされます。
に資格情報を貼り付けます。設定ファイル内の$ホーム /.kubeディレクトリにファイルを保存し、終了します。
説明が. kubeフォルダーと設定ファイルが存在しない$ホーム /フォルダとファイルを手動で作成する必要があります。
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
方法2: Cloud Shellを使用したクラスターへの接続
ACKコンソールにログインします。
ACKコンソールの左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターを見つけ、 で、アクション列を作成します。
Cloud Shellを起動するには数秒かかります。 Cloud Shellの起動後、Cloud Shellインターフェイスでkubectlコマンドを実行して、クラスターとクラスターにデプロイされたアプリケーションを管理できます。
手順4: アプリケーションのデプロイと公開
この手順では、デプロイを作成してkubectlを使用してステートレスアプリケーションをデプロイし、LoadBalancerサービスを使用してアプリケーションを公開する方法を示します。 アプリケーションを公開する方法の詳細については、「自動作成されたSLBインスタンスを使用してアプリケーションを公開する」をご参照ください。
次のYAMLテンプレートを使用して、ack-cube.yamlファイルを作成します。
apiVersion: apps/v1 # for versions before 1.8.0 use apps/v1beta1 kind: Deployment metadata: name: ack-cube # The name of the application. labels: app: ack-cube spec: replicas: 2 # The number of replicated pods. selector: matchLabels: app: ack-cube # You must specify the same value for the selector of the Service that is used to expose the application. template: metadata: labels: app: ack-cube spec: containers: - name: ack-cube image: registry.cn-hangzhou.aliyuncs.com/acr-toolkit/ack-cube:1.0 # Replace with the address of the image that you want to use in the format of <image_name:tags>. ports: - containerPort: 80 # The container port that you want to expose. resources: limits: # The resource limits. cpu: '1' memory: 1Gi requests: # The resource requests. cpu: 500m memory: 512Mi
次のコマンドを実行して、ack-cubeアプリケーションをデプロイします。
kubectl apply -f ack-cube.yaml
次のコマンドを実行して、アプリケーションのステータスを照会します。
kubectl get deployment ack-cube
期待される出力:
NAME READY UP-TO-DATE AVAILABLE AGE ack-cube 2/2 2 2 96s
次のYAMLテンプレートを使用して、ack-cube-svc.yamlファイルを作成します。 ack-cube.yamlファイルの
selector
をmatchLabels
の値に設定します。 この例では、値はapp: ack-cube
です。 これにより、アプリケーションがサービスのバックエンドに追加されます。apiVersion: v1 kind: Service metadata: labels: app: ack-cube name: ack-cube-svc namespace: default spec: ports: - port: 80 protocol: TCP targetPort: 80 selector: app: ack-cube # You must specify the value of the matchLabels parameter in the YAML file that is used to create the Deployment. type: LoadBalancer
次のコマンドを実行して、ack-cube-svcという名前のサービスを作成し、サービスを使用してアプリケーションを公開します。
ACKは、インターネットに接続するServer Load Balancer (SLB) インスタンスを自動的に作成し、インスタンスをサービスに関連付けます。
kubectl apply -f ack-cube-svc.yaml
次のコマンドを実行して、LoadBalancerサービスが作成されていることを確認します。
作成したアプリケーションは、出力のEXTERNAL-IP列のIPアドレスを使用して公開されます。
kubectl get svc ack-cube-svc
期待される出力:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE ack-cube-svc LoadBalancer 172.16.72.161 47.94.xx.xx 80:31547/TCP 32s
ステップ5: アプリケーションのテスト
ブラウザのアドレスバーにIPアドレス (EXTERNAL-IP) を入力し、Enterキーを押してマジックキューブゲームを開始します。
リリースリソース
使用するACK Proクラスターに対して、クラスター管理料金とクラウドサービス料金が課金されます。 クラスター管理料金はACKで課金されます。 クラウドサービス料金は、ACK Proクラスターで使用されるクラウドサービスによって課金されます。 ACK Proクラスターを作成した後、次の項目に注意してください。
クラスターを使用する必要がなくなった場合は、ACKコンソールの [クラスター] ページに移動してクラスターを見つけ、[操作] 列の [詳細] > [削除] を選択します。 [クラスターの削除] ページで、[クラスターによって作成されたALBインスタンスの削除] 、[クラスターによって作成されたAlibaba Cloud DNS PrivateZoneインスタンスの削除] 、[関連するLog Serviceプロジェクトの削除] 、[上記の情報を理解し、指定したクラスターを削除したい] を選択します。 次に、[OK] をクリックします。 ACK Proクラスターを削除する方法の詳細については、「ACKクラスターの削除」をご参照ください。
クラスターを維持する必要がある場合は、アカウントの残高がCNY 100未満になったら、アカウントを補充します。 Alibaba Cloudサービスの課金ルールの詳細については、「クラウドサービス料金」をご参照ください。
関連ドキュメント
アプリケーションポッドの自動スケーリングを有効にするには、水平ポッドオートスケーラー (HPA) 、Cron水平ポッドオートスケーラー (CronHPA) 、および垂直ポッドオートスケーラー (VPA) を設定します。 詳細については、「Auto Scaling の概要」をご参照ください。
サービスを介してアプリケーションを公開するだけでなく、Ingressを使用してレイヤー7でアプリケーショントラフィックのルーティングを有効にできます。 詳細については、「NGINX Ingressの作成」をご参照ください。
コンテナーのパフォーマンスを監視するだけでなく、クラスターインフラストラクチャ、アプリケーションのパフォーマンス、およびワークロードの操作を監視できます。 詳細については、「Observability overview」をご参照ください。
アプリケーションに関するモニタリング情報を表示する場合は、クラスターの詳細ページに移動し、左側のナビゲーションウィンドウで [操作] > [Prometheusモニタリング] を選択します。 [Prometheusモニタリング] ページで、CPU使用率、メモリ使用率、ネットワークI/Oなどのモニタリング情報を表示できます。