Nesta página, explicamos como criar e gerenciar cargas de trabalho sem estado em um cluster do Kubernetes de um appliance isolado do Google Distributed Cloud (GDC). Com as cargas de trabalho sem estado, é possível escalonar a implantação do aplicativo com base nas demandas da 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.
Antes de começar
Para concluir as tarefas neste documento, peça as permissões necessárias e prepare seu ambiente.
Solicitar papéis do IAM
Para criar, excluir, editar ou visualizar cargas de trabalho sem estado em um cluster do Kubernetes, peça ao administrador do IAM da organização para conceder a você o papel de Administrador de namespace (namespace-admin). Essa função está vinculada ao namespace do projeto.
Preparar o ambiente
Para executar comandos no cluster do Kubernetes em bare metal pré-configurado, verifique se você tem os seguintes recursos:
Localize o nome do cluster do Kubernetes ou pergunte ao administrador da plataforma.
Faça login e gere o arquivo kubeconfig para o cluster do Kubernetes, se você não tiver um.
Use o caminho kubeconfig do cluster do Kubernetes para substituir
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 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 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
resources:
requests:
nvidia.com/gpu-pod-NVIDIA_A100_80GB_PCIE: 1
limits:
nvidia.com/gpu-pod-NVIDIA_A100_80GB_PCIE: 1
EOF
Substitua:
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 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. Inclua o caminho do registro de contêiner e a versão da imagem, comoREGISTRY_PATH/hello-app:1.0. Para mais informações sobre como definir o caminho do registro de contêiner, 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
resources:
requests:
nvidia.com/gpu-pod-NVIDIA_A100_80GB_PCIE: 1
limits:
nvidia.com/gpu-pod-NVIDIA_A100_80GB_PCIE: 1
Se você estiver implantando cargas de trabalho de GPU nos contêineres, consulte Gerenciar cargas de trabalho de contêineres de GPU para mais informações.