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

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

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

始める前に

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

  1. Kubernetes クラスタ名を確認するか、プラットフォーム管理者にクラスタ名を確認します。

  2. まだ Kubernetes クラスタの kubeconfig ファイルがない場合は、ログインして生成します。

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

ステートレス ワークロードを作成するために必要な権限を取得するには、組織の IAM 管理者に、プロジェクトの Namespace で Namespace 管理者ロール(namespace-admin)を付与するよう依頼してください。

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。

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

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

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

  • CONTAINER_NAME: コンテナの名前。

  • CONTAINER_IMAGE: コンテナ イメージの名前。REGISTRY_PATH/hello-app:1.0 など、コンテナ レジストリのパスとイメージのバージョンを含める必要があります。

次に例を示します。

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 コンテナ ワークロードを管理するをご覧ください。