Crea cargas de trabajo sin estado

En este documento, se explica cómo crear y administrar cargas de trabajo sin estado dentro de un clúster de Kubernetes de Google Distributed Cloud (GDC) aislado. Las cargas de trabajo sin estado te permiten escalar la implementación de tu aplicación según las demandas de la carga de trabajo, todo sin tener que administrar el almacenamiento persistente en un clúster de Kubernetes para almacenar datos o el estado de la aplicación. Este documento te ayuda a comenzar para que puedas optimizar y ajustar de manera eficiente la disponibilidad de tu aplicación.

Este documento está dirigido a los desarrolladores del grupo de operadores de aplicaciones, que son responsables de crear cargas de trabajo de aplicaciones para su organización. Para obtener más información, consulta Públicos de la documentación de GDC aislado.

Antes de comenzar

Para completar las tareas de este documento, debes solicitar los permisos necesarios.

Solicita roles de IAM

Debes tener roles específicos para obtener los permisos que necesitas para crear cargas de trabajo sin estado. Los roles que necesitas dependen de si trabajas en un clúster compartido con permiso de organización o en un clúster estándar con permiso de proyecto. Para obtener más información, consulta Parámetros de configuración de clústeres de Kubernetes.

Roles de clúster compartidos

Para crear, borrar, editar o ver cargas de trabajo sin estado en un clúster compartido, pídele a tu administrador de IAM del proyecto que te otorgue el rol de administrador de espacio de nombres (namespace-admin). Este rol está vinculado al espacio de nombres de tu proyecto.

Roles de clúster estándar

Para crear, borrar, editar o ver cargas de trabajo sin estado en un clúster estándar, pídele al administrador de proyectos de IAM que te otorgue el rol de desarrollador de clústeres (cluster-developer). Este rol está vinculado al espacio de nombres de tu proyecto.

Prepara el entorno

Para ejecutar comandos en un clúster de Kubernetes con la API, asegúrate de tener los siguientes recursos:

  • Busca el nombre del clúster de Kubernetes o pregúntale a un miembro del grupo de administradores de la plataforma cuál es el nombre del clúster.

  • Accede y genera el archivo kubeconfig para el clúster de Kubernetes.

  • Usa la ruta de acceso de kubeconfig del clúster de Kubernetes para reemplazar KUBERNETES_CLUSTER_KUBECONFIG en estas instrucciones.

Crear una implementación

Para crear un Deployment, escribe un manifiesto Deployment y ejecuta kubectl apply para crear el recurso. Con este método, también se retienen las actualizaciones realizadas en los recursos activos sin combinar los cambios en los archivos de manifiesto.

Para crear un Deployment a partir de su archivo de manifiesto, ejecuta lo siguiente:

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

Reemplaza lo siguiente:

  • KUBERNETES_CLUSTER_KUBECONFIG: Es el archivo kubeconfig del clúster de Kubernetes en el que implementas las cargas de trabajo de contenedores.

  • NAMESPACE: Es el espacio de nombres en el que se implementarán las cargas de trabajo de contenedores. En el caso de los clústeres compartidos, debe ser un espacio de nombres del proyecto. Para los clústeres estándar, puede ser cualquier espacio de nombres.

  • DEPLOYMENT_NAME: el nombre del objeto Deployment.

  • APP_NAME: Es el nombre de la aplicación que se ejecutará dentro de la implementación.

  • NUMBER_OF_REPLICAS: Es la cantidad de objetos Pod replicados que administra la implementación.

  • CONTAINER_NAME: Es el nombre del contenedor.

  • CONTAINER_IMAGE por el nombre de la imagen de contenedor Debes incluir la ruta de acceso al Container Registry y la versión de la imagen, como REGISTRY_PATH/hello-app:1.0. Para obtener más información sobre cómo configurar la ruta de acceso del registro de contenedores, consulta la descripción general del servicio de Harbor administrado.

Por ejemplo:

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

Si implementas cargas de trabajo de GPU en tus contenedores, consulta Administra cargas de trabajo de contenedores de GPU para obtener más información.

¿Qué sigue?