このページでは、Google Distributed Cloud(GDC)エアギャップ アプライアンス Kubernetes クラスタ内でステートレス ワークロードを作成して管理する方法について説明します。ステートレス ワークロードを使用すると、ワークロードの需要に基づいてアプリケーションのデプロイをスケーリングできます。データを保存したり、アプリケーションの状態を保存したりするために、Kubernetes クラスタで永続ストレージを管理する必要はありません。このページでは、アプリケーションの可用性を効率的に最適化して調整できるように、基本的な手順について説明します。
このページは、組織のアプリケーション ワークロードの作成を担当するアプリケーション オペレーター グループのデベロッパーを対象としています。
始める前に
このドキュメントの手順を完了するには、必要な権限をリクエストして環境を準備する必要があります。
IAM ロールをリクエストする
Kubernetes クラスタでステートレス ワークロードを作成、削除、編集、表示するには、組織の IAM 管理者に Namespace
管理者 (namespace-admin)ロールの付与を依頼してください。このロールは、プロジェクトの Namespace
にバインドされます。
環境を準備する
事前構成済みのベアメタル Kubernetes クラスタに対してコマンドを実行するには、次のリソースが必要です。
Kubernetes クラスタ名を確認するか、プラットフォーム管理者にクラスタ名を確認します。
ログインして生成します。Kubernetes クラスタの kubeconfig ファイルがない場合
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 コンテナ ワークロードの管理 をご覧ください。