创建无状态工作负载

本文档介绍如何在 Google Distributed Cloud (GDC) 气隙 Kubernetes 集群中创建和管理无状态工作负载。借助无状态工作负载,您可以根据工作负载需求扩缩应用部署,而无需在 Kubernetes 集群中管理永久性存储空间来存储数据或应用状态。本文档可帮助您入门,以便您高效优化和调整应用的可用性。

本文档适用于应用运营团队中的开发者,他们负责为其组织创建应用工作负载。如需了解详情,请参阅 GDC 气隙文档的受众

准备工作

如需完成本文档中的任务,您必须请求必要的权限。

请求 IAM 角色

您必须拥有特定角色才能获得创建无状态工作负载所需的权限。您需要的角色取决于您是在组织范围的共享集群还是项目范围的标准集群中工作。如需了解详情,请参阅 Kubernetes 集群配置

共享集群角色

如需在共享集群中创建、删除、修改或查看无状态工作负载,请让您的 Project IAM 管理员授予您 Namespace Admin (namespace-admin) 角色。此角色绑定到您的项目命名空间。

标准集群角色

如需在标准集群中创建、删除、修改或查看无状态工作负载,请让您的 Project IAM 管理员授予您 Cluster Developer (cluster-developer) 角色。此角色绑定到您的项目命名空间。

准备环境

如需使用 API 对 Kubernetes 集群 运行命令,请确保您拥有以下资源:

  • 找到 Kubernetes 集群名称,或向平台管理员组的成员询问集群名称。

  • 登录并生成 Kubernetes 集群的 kubeconfig 文件。

  • 使用 Kubernetes 集群的 kubeconfig 路径替换这些说明中的 KUBERNETES_CLUSTER_KUBECONFIG

创建部署

您可以通过编写 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:用于部署容器工作负载的命名空间。对于共享集群,这必须是项目命名空间。 对于标准集群,它可以是任何命名空间。

  • DEPLOYMENT_NAMEDeployment 对象的名称。

  • APP_NAME:要在部署中运行的应用的名称。

  • NUMBER_OF_REPLICAS:部署管理的复制 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 容器工作负载 以了解详情。

后续步骤