Crie cargas de trabalho sem estado

Este documento explica como criar e gerir cargas de trabalho sem estado num cluster Kubernetes isolado do ar do Google Distributed Cloud (GDC). As cargas de trabalho sem estado permitem-lhe dimensionar a implementação da sua aplicação com base nas exigências das cargas de trabalho, tudo sem ter de gerir o armazenamento persistente num cluster do Kubernetes para armazenar dados ou o estado da aplicação. Este documento ajuda a começar para que possa otimizar e ajustar de forma eficiente a disponibilidade da sua aplicação.

Este documento destina-se a programadores no grupo de operadores de aplicações, que são responsáveis por criar cargas de trabalho de aplicações para a respetiva organização. Para mais informações, consulte a documentação sobre públicos-alvo para GDC com isolamento de ar.

Antes de começar

Para concluir as tarefas neste documento, tem de ter os seguintes recursos e funções:

  • Para executar comandos num cluster do Kubernetes, certifique-se de que tem os seguintes recursos:

    • Localize o nome do cluster do Kubernetes ou pergunte a um membro do grupo de administradores da plataforma qual é o nome do cluster.

    • Inicie sessão e gere o ficheiro kubeconfig para o cluster do Kubernetes, se não tiver um.

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

  • Para receber as autorizações necessárias para criar cargas de trabalho sem estado num cluster partilhado, peça ao administrador de IAM da organização que lhe conceda a função de administrador do espaço de nomes (namespace-admin) no espaço de nomes do seu projeto.

  • Para receber as autorizações necessárias para criar cargas de trabalho sem estado num cluster padrão, peça ao administrador de IAM da organização para lhe conceder a função de programador de clusters (cluster-developer) num cluster padrão.

Cria uma implementação.

Crie uma implementação escrevendo um Deploymentmanifesto e executando kubectl apply para criar o recurso. Este método também retém as atualizações feitas aos recursos ativos sem incorporar novamente as alterações nos ficheiros de manifesto.

Para criar um Deployment a partir do respetivo ficheiro de manifesto, execute o seguinte comando:

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 o seguinte:

  • KUBERNETES_CLUSTER_KUBECONFIG: o ficheiro kubeconfig para o cluster do Kubernetes no qual está a implementar cargas de trabalho de contentores.

  • NAMESPACE: o espaço de nomes no qual implementar as cargas de trabalho do contentor. Para clusters partilhados, tem de ser um espaço de nomes do projeto. Para clusters padrão, pode ser qualquer espaço de nomes.

  • DEPLOYMENT_NAME: o nome do objeto Deployment.

  • APP_NAME: o nome da aplicação a executar na implementação.

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

  • CONTAINER_NAME: o nome do contentor.

  • CONTAINER_IMAGE: o nome da imagem do contentor. Tem de incluir o caminho do registo de contentores e a versão da imagem, como REGISTRY_PATH/hello-app:1.0. Para mais informações sobre como definir o caminho do registo de contentores, consulte a vista geral do serviço Harbor gerido.

Por 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 estiver a implementar cargas de trabalho de GPU nos seus contentores, consulte o artigo Gerir cargas de trabalho de contentores de GPU para mais informações.