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

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

このページは、組織のアプリケーション ワークロードの作成を担当するアプリケーション オペレーター グループのデベロッパーを対象としています。

始める前に

このドキュメントの手順を完了するには、必要な権限をリクエストして環境を準備する必要があります。

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

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

環境を準備する

事前構成済みのベアメタル Kubernetes クラスタに対してコマンドを実行するには、次のリソースが必要です。

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

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

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

Deployment の作成

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

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

kubectl --kubeconfig 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
        resources:
          requests:
            nvidia.com/gpu-pod-NVIDIA_A100_80GB_PCIE: 1
          limits:
            nvidia.com/gpu-pod-NVIDIA_A100_80GB_PCIE: 1
EOF

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

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

  • NAMESPACE: コンテナ ワークロードをデプロイするプロジェクトの Namespace。

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

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

  • 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
        resources:
          requests:
            nvidia.com/gpu-pod-NVIDIA_A100_80GB_PCIE: 1
          limits:
            nvidia.com/gpu-pod-NVIDIA_A100_80GB_PCIE: 1

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