ステートレス ワークロードを作成する

このドキュメントでは、Google Distributed Cloud(GDC)のエアギャップ Kubernetes クラスタ内でステートレス ワークロードを作成して管理する方法について説明します。ステートレス ワークロードを使用すると、Kubernetes クラスタで永続ストレージを管理してデータやアプリケーションの状態を保存することなく、ワークロードの需要に基づいてアプリケーションのデプロイをスケーリングできます。このドキュメントは、アプリケーションの可用性を効率的に最適化して調整できるように、スタートガイドとして役立ちます。

このドキュメントは、組織のアプリケーション ワークロードの作成を担当するアプリケーション オペレーター グループのデベロッパーを対象としています。詳細については、GDC エアギャップ ドキュメントの対象ユーザーをご覧ください。

始める前に

このドキュメントのタスクを完了するには、必要な権限をリクエストする必要があります。

IAM ロールをリクエストする

ステートレス ワークロードの作成に必要な権限を取得するには、特定のロールが必要です。必要なロールは、組織スコープの共有クラスタとプロジェクト スコープの標準クラスタのどちらで作業しているかによって異なります。詳細については、Kubernetes クラスタ構成をご覧ください。

共有クラスタロール

共有クラスタでステートレス ワークロードを作成、削除、編集、表示するには、プロジェクト IAM 管理者に Namespace 管理者namespace-admin)ロールの付与を依頼してください。このロールはプロジェクトの名前空間にバインドされます。

標準クラスタロール

標準クラスタでステートレス ワークロードを作成、削除、編集、表示するには、プロジェクト IAM 管理者に クラスタ デベロッパーcluster-developer)ロールの付与を依頼してください。このロールはプロジェクトの名前空間にバインドされます。

環境を準備する

API を使用して Kubernetes クラスタに対してコマンドを実行するには、次のリソースがあることを確認してください。

  • Kubernetes クラスタ名を確認するか、プラットフォーム管理者グループのメンバーにクラスタ名を確認します。

  • Kubernetes クラスタの kubeconfig ファイルにログインして生成します。

  • これらの手順では、Kubernetes クラスタの kubeconfig パスを使用して KUBERNETES_CLUSTER_KUBECONFIG を置き換えます。

Deployment の作成

デプロイを作成するには、Deployment マニフェストを作成し、kubectl apply を実行してリソースを作成します。この方法では、ライブリソースに対して行われた更新も保持され、マニフェスト ファイルに変更がマージされません。

マニフェスト ファイルから Deployment を作成するには、次のコマンドを実行します。

kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG -n NAMESPACE \
    apply -f - <<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
  name: DEPLOYMENT_NAME
spec:
  replicas: NUMBER_OF_REPLICAS
  selector:
    matchLabels:
      run: APP_NAME
  template:
    metadata:
      labels: # The labels given to each pod in the deployment, which are used
              # to manage all pods in the deployment.
        run: APP_NAME
    spec: # The pod specification, which defines how each pod runs in the deployment.
      containers:
      - name: CONTAINER_NAME
        image: CONTAINER_IMAGE
EOF

次のように置き換えます。

  • KUBERNETES_CLUSTER_KUBECONFIG: コンテナ ワークロードをデプロイする Kubernetes クラスタの kubeconfig ファイル。

  • NAMESPACE: コンテナ ワークロードをデプロイする Namespace。共有クラスタの場合、これはプロジェクト Namespace である必要があります。Standard クラスタの場合は、任意の Namespace を指定できます。

  • DEPLOYMENT_NAME: Deployment オブジェクトの名前。

  • APP_NAME: デプロイ内で実行するアプリケーションの名前。

  • NUMBER_OF_REPLICAS: Deployment が管理する複製 Pod オブジェクトの数。

  • CONTAINER_NAME: コンテナの名前。

  • CONTAINER_IMAGE: コンテナ イメージの名前。REGISTRY_PATH/hello-app:1.0 など、コンテナ レジストリのパスとイメージのバージョンを含める必要があります。コンテナ レジストリ パスの設定の詳細については、Managed Harbor Service の概要をご覧ください。

次に例を示します。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 3
  selector:
    matchLabels:
      run: my-app
  template:
    metadata:
      labels:
        run: my-app
    spec:
      containers:
      - name: hello-app
        image: REGISTRY_PATH/hello-app:1.0

GPU ワークロードをコンテナにデプロイする場合は、GPU コンテナ ワークロードを管理するをご覧ください。

次のステップ