Criar cargas de trabalho sem estado

Nesta página, explicamos como criar e gerenciar cargas de trabalho sem estado em um cluster do Kubernetes isolado do Google Distributed Cloud (GDC). Com as cargas de trabalho sem estado, é possível escalonar a implantação de aplicativos com base nas demandas de carga de trabalho, tudo sem precisar gerenciar o armazenamento permanente em um cluster do Kubernetes para armazenar dados ou estado do aplicativo. Esta página ajuda você a começar a otimizar e ajustar a disponibilidade do aplicativo de maneira eficiente.

Esta página é destinada a desenvolvedores do grupo de operadores de aplicativos, que são responsáveis por criar cargas de trabalho de aplicativos para a organização. Para mais informações, consulte Públicos-alvo para documentação isolada do GDC.

Antes de começar

Para executar comandos em um cluster do Kubernetes, verifique se você tem os seguintes recursos:

  1. Localize o nome do cluster do Kubernetes ou pergunte ao administrador da plataforma.

  2. Faça login e gere o arquivo kubeconfig para o cluster do Kubernetes se você não tiver um.

  3. Use o caminho kubeconfig do cluster do Kubernetes para substituir KUBERNETES_CLUSTER_KUBECONFIG nestas instruções.

Para receber as permissões necessárias para criar cargas de trabalho sem estado, peça ao administrador do IAM da organização para conceder a você a função de administrador do namespace (namespace-admin) no namespace do projeto.

Criar uma implantação

Para criar uma implantação, escreva um manifesto Deployment e execute kubectl apply para criar o recurso. Esse método também mantém atualizações feitas em recursos ativos sem mesclar as mudanças novamente nos arquivos de manifesto.

Para criar uma Deployment com base no arquivo de manifesto, execute:

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

Substitua:

  • KUBERNETES_CLUSTER_KUBECONFIG: o arquivo kubeconfig do cluster do Kubernetes em que você está implantando cargas de trabalho de contêiner.

  • NAMESPACE: o namespace do projeto em que as cargas de trabalho de contêiner serão implantadas.

  • DEPLOYMENT_NAME: o arquivo kubeconfig do cluster em que você está implantando cargas de trabalho de contêiner.

  • APP_NAME: o nome do aplicativo a ser executado na implantação.

  • NUMBER_OF_REPLICAS: o número de objetos Pod replicados que a implantação gerencia.

  • CONTAINER_NAME: o nome do contêiner.

  • CONTAINER_IMAGE: o nome da imagem do contêiner. Inclua o caminho do registro de contêiner e a versão da imagem, como REGISTRY_PATH/hello-app:1.0.

Exemplo:

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

Se você estiver implantando cargas de trabalho de GPU nos contêineres, consulte Gerenciar cargas de trabalho de contêiner de GPU para mais informações.