このドキュメントでは、Google Distributed Cloud(GDC)のエアギャップ Kubernetes クラスタ内でステートレス ワークロードを作成して管理する方法について説明します。ステートレス ワークロードを使用すると、Kubernetes クラスタで永続ストレージを管理してデータやアプリケーションの状態を保存することなく、ワークロードの需要に基づいてアプリケーションのデプロイをスケーリングできます。このドキュメントは、アプリケーションの可用性を効率的に最適化して調整するための入門ガイドです。
このドキュメントは、組織のアプリケーション ワークロードの作成を担当するアプリケーション オペレーター グループのデベロッパーを対象としています。詳細については、GDC のエアギャップ環境のユーザー グループのドキュメントをご覧ください。
始める前に
このドキュメントのタスクを完了するには、次のリソースとロールが必要です。
Kubernetes クラスタに対してコマンドを実行するには、次のリソースがあることを確認してください。
Kubernetes クラスタ名を確認するか、プラットフォーム管理者グループのメンバーにクラスタ名を確認します。
まだ Kubernetes クラスタの kubeconfig ファイルがない場合は、ログインして生成します。
Kubernetes クラスタの kubeconfig パスを使用して、これらの手順の
KUBERNETES_CLUSTER_KUBECONFIGを置き換えます。
共有クラスタにステートレス ワークロードを作成するために必要な権限を取得するには、組織の IAM 管理者に、プロジェクトの Namespace で Namespace 管理者ロール(
namespace-admin)を付与するよう依頼してください。標準クラスタでステートレス ワークロードを作成するために必要な権限を取得するには、組織の IAM 管理者に、標準クラスタのクラスタ デベロッパー ロール(
cluster-developer)を付与するよう依頼してください。
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など、コンテナ レジストリのパスとイメージのバージョンを含める必要があります。コンテナ レジストリ パスの設定の詳細については、マネージド Harbor サービスの概要をご覧ください。
次に例を示します。
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 コンテナ ワークロードを管理するをご覧ください。