Neste documento, explicamos como criar e gerenciar cargas de trabalho sem estado em um cluster do Kubernetes do Google Distributed Cloud (GDC) com isolamento físico. As cargas de trabalho sem estado permitem escalonar a implantação do aplicativo com base nas demandas de carga de trabalho, tudo sem precisar gerenciar o armazenamento permanente em um cluster do Kubernetes para armazenar dados ou o estado do aplicativo. Este documento ajuda você a começar a otimizar e ajustar a disponibilidade do aplicativo de maneira eficiente.
Este documento é destinado 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 da documentação do GDC com isolamento físico.
Antes de começar
Para concluir as tarefas neste documento, solicite as permissões necessárias.
Solicitar papéis do IAM
É preciso ter papéis específicos para receber as permissões necessárias para criar cargas de trabalho sem estado. Os papéis necessários dependem de você estar trabalhando em um cluster compartilhado com escopo de organização ou em um cluster padrão com escopo de projeto. Para mais informações, consulte Configurações de cluster do Kubernetes.
Papéis de cluster compartilhados
Para criar, excluir, editar ou visualizar cargas de trabalho sem estado em um cluster compartilhado, peça
ao administrador do projeto do IAM para conceder a você o papel de Administrador de namespace (namespace-admin). Esse papel está vinculado ao namespace do projeto.
Papéis de cluster padrão
Para criar, excluir, editar ou visualizar cargas de trabalho sem estado em um cluster padrão, peça
ao administrador do projeto do IAM para conceder a você o papel de Desenvolvedor de cluster
(cluster-developer). Esse papel está vinculado ao namespace do projeto.
Preparar o ambiente
Para executar comandos em um cluster do Kubernetes usando a API, verifique se você 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.
Faça login e gere o arquivo kubeconfig para o cluster do Kubernetes.
Use o caminho do kubeconfig do cluster do Kubernetes para substituir
KUBERNETES_CLUSTER_KUBECONFIGnestas instruções.
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 retém as atualizações feitas em recursos ativos sem mesclar as alterações nos arquivos de manifesto.
Para criar um 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 em que as cargas de trabalho do contêiner serão implantadas. Para clusters compartilhados, precisa ser um namespace de projeto. Para clusters padrão, pode ser qualquer namespace.DEPLOYMENT_NAME: o nome do objetoDeployment.APP_NAME: o nome do aplicativo a ser executado na implantação.NUMBER_OF_REPLICAS: o número de objetosPodreplicados que a implantação gerencia.CONTAINER_NAME: o nome do contêiner.CONTAINER_IMAGE: o nome da imagem do contêiner. É necessário incluir o caminho do Container Registry e a versão da imagem, comoREGISTRY_PATH/hello-app:1.0. Para mais informações sobre como definir o caminho do Container Registry, consulte a Visão geral do Serviço Gerenciado do Harbor.
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.
A seguir
- Inspecionar cargas de trabalho sem estado
- Atualizar cargas de trabalho sem estado
- Gerenciar pools de nós