すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:kubectlを使用したマジックキューブゲームのデプロイ

最終更新日:Dec 19, 2024

Container Service for Kubernetes (ACK) は、コンテナ化されたアプリケーションに高性能な管理サービスを提供します。 ACKを使用して、クラウド上で実行されるコンテナ化されたアプリケーションを便利かつ効率的に管理できます。 このトピックでは、kubectlを使用して、ACKクラスターにコンテナー化されたアプリケーションをデプロイ、公開、および監視する方法について説明します。

背景情報

  • このトピックでは、コンテナーイメージを使用してack ProクラスターにACK-cubeアプリケーションをデプロイする方法を示します。 このアプリケーションは、オンライン魔法のキューブゲームです。 このトピックの手順を実行すると、マジックキューブゲームがACK Proクラスターにデプロイされます。cube

  • サンプルアプリケーションのデプロイに使用されるコンテナーイメージは、オープンソースプロジェクトに基づいて作成されます。 画像アドレスは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の用語の比較」をご参照ください。

手順

workflow-kubectl

ステップ1: ACKの有効化とアクセス許可の付与

ACKを初めて使用する場合は、ACKを有効化し、ACKにクラウドリソースへのアクセス許可を付与する必要があります。

  1. に移動します。Go to theContainer Service for Kubernetesページに移動します。

  2. Container Service for Kubernetes利用規約を読み、[今すぐ有効化] をクリックします。

  3. ACKコンソールにログインします。

  4. [Container service needs to create default roles] ページで、[RAMコンソールに移動] をクリックします。 [クラウドリソースアクセス権限付与] ページで、[権限付与ポリシーの確認] をクリックします。

    Resource Access Management (RAM) ロールをACKに割り当てた後、ACKコンソールに再度ログインして、ACKの使用を開始します。 承認プロセス中に他の問題が発生した場合は、「承認管理に関するFAQ」をご参照ください。

手順2: ACK Proクラスターの作成

この手順では、ACK Proクラスターを作成する方法を示します。 デフォルト設定は、ほとんどのクラスターパラメーターに使用されます。 クラスターパラメーターの詳細については、「ACK Proクラスターの作成」をご参照ください。

  1. ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. [クラスター] ページの右上隅にある [Kubernetesクラスターの作成] をクリックします。

  3. [マネージド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で公開] が選択されています。

  4. [次へ: ノードプール設定] をクリックします。 説明に従って、次のパラメーターを設定します。 テーブルに含まれていないパラメーターにはデフォルト設定を使用します。

    パラメーター

    説明

    [インスタンスタイプ]

    ノードのデプロイに使用するインスタンスタイプを選択します。

    vCoresの数とメモリの量を指定して、インスタンスタイプをフィルタリングできます。 検索ボックスでインスタンスタイプを指定して、インスタンスタイプを検索することもできます。

    クラスターの安定性を確保するために、少なくとも4つのvCoresと8 GiBのメモリを持つインスタンスタイプを選択することを推奨します。 Elastic Compute Service (ECS) インスタンスタイプとインスタンスタイプの選択方法の詳細については、「ACKクラスターのECS仕様の選択に関する提案」および「インスタンスファミリーの概要」をご参照ください。

    少なくとも4 vCoresと8 GiBのメモリを持つインスタンスタイプ

    購入数

    ワーカーノードの数を指定します。

    2

    システムディスク

    ノードのシステムディスクを設定します。

    この例では、拡張SSD (ESSD) がディスクタイプとして選択され、ディスクサイズは40 GiBに設定されています。

    ログオンタイプ

    ノードのログオンタイプを選択します。

    この例では、ログインタイプとしてパスワードログインが選択され、パスワードが指定されています。

  5. [次へ: コンポーネント設定] をクリックします。 すべてのコンポーネントパラメータにデフォルト設定を使用します。

  6. [次へ: 注文の確認] をクリックし、ACK利用規約を読んで選択し、[クラスターの作成] をクリックします。

    説明

    クラスターの作成には約10分かかります。 クラスターの作成後、[クラスター] ページでクラスターを表示できます。

ステップ3: クラスターへの接続

この手順では、kubectlクライアントまたはCloud Shellを使用してACKクラスターに接続する方法を示します。 詳細については、「クラスターのkubeconfigファイルを取得し、kubectlを使用してクラスターに接続する」および「Cloud Shellでkubectlを使用してACKクラスターを管理する」をご参照ください。

方法1: kubectlクライアントを使用したクラスターへの接続

  1. ACKコンソールにログインします。

  2. ACKコンソールの左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  3. [クラスター] ページで、ACK-Demoクラスターの名前をクリックします。

  4. [クラスター情報] ページで、[接続情報] タブをクリックします。 [パブリックアクセス] タブの [コピー] をクリックします。 このようにして、インターネット経由でクラスターにアクセスするために使用される資格情報がコピーされます。

  5. に資格情報を貼り付けます。設定ファイル内の$ホーム /.kubeディレクトリにファイルを保存し、終了します。

    説明

    . kubeフォルダーと設定ファイルが存在しない$ホーム /フォルダとファイルを手動で作成する必要があります。

  6. 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を使用したクラスターへの接続

  1. ACKコンソールにログインします。

  2. ACKコンソールの左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  3. [クラスター] ページで、管理するクラスターを見つけ、もっと > Open Cloud Shellで、アクション列を作成します。

    Cloud Shellを起動するには数秒かかります。 Cloud Shellの起動後、Cloud Shellインターフェイスでkubectlコマンドを実行して、クラスターとクラスターにデプロイされたアプリケーションを管理できます。

手順4: アプリケーションのデプロイと公開

この手順では、デプロイを作成してkubectlを使用してステートレスアプリケーションをデプロイし、LoadBalancerサービスを使用してアプリケーションを公開する方法を示します。 アプリケーションを公開する方法の詳細については、「自動作成されたSLBインスタンスを使用してアプリケーションを公開する」をご参照ください。

  1. 次の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        
  2. 次のコマンドを実行して、ack-cubeアプリケーションをデプロイします。

    kubectl apply -f ack-cube.yaml
  3. 次のコマンドを実行して、アプリケーションのステータスを照会します。

    kubectl get deployment ack-cube

    期待される出力:

    NAME       READY   UP-TO-DATE   AVAILABLE   AGE
    ack-cube   2/2     2            2           96s
  4. 次のYAMLテンプレートを使用して、ack-cube-svc.yamlファイルを作成します。 ack-cube.yamlファイルのselectormatchLabelsの値に設定します。 この例では、値は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
  5. 次のコマンドを実行して、ack-cube-svcという名前のサービスを作成し、サービスを使用してアプリケーションを公開します。

    ACKは、インターネットに接続するServer Load Balancer (SLB) インスタンスを自動的に作成し、インスタンスをサービスに関連付けます。

    kubectl apply -f ack-cube-svc.yaml
  6. 次のコマンドを実行して、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などのモニタリング情報を表示できます。