Creación de una Deployment
Escenario
Las Deployment son cargas de trabajo (por ejemplo, Nginx) que no almacenan ningún dato o estado. Puede crear Deployment en la consola de CCE o ejecutando los comandos de kubectl.
Requisitos previos
- Antes de crear una carga de trabajo, debe tener un clúster disponible. Para obtener más información sobre cómo crear un clúster, consulte Compra de un clúster de CCE.
- Para habilitar el acceso público a una carga de trabajo, asegúrese de que una EIP o un balanceador de carga se ha vinculado a al menos un nodo del clúster.
Si un pod tiene contenedores múltiples, asegúrese de que los puertos utilizados por los contenedores no entren en conflicto entre sí. De lo contrario, la creación de la Deployment fallará.
Uso de la consola de CCE
- Inicie sesión en la consola de CCE.
- Haga clic en el nombre del clúster para ir a la consola del clúster, elija Workloads en el panel de navegación y haga clic en Create Workload en la esquina superior derecha.
- Establezca información básica sobre la carga de trabajo.
Basic Info
- Workload Type: Seleccione Deployment. Para obtener más información sobre los tipos de carga de trabajo, consulte Overview.
- Workload Name: Introduzca el nombre de la carga de trabajo. Escriba de 1 a 63 caracteres que comienzan con una letra minúscula y terminan con una letra minúscula o un dígito. Solo se permiten letras minúsculas, dígitos y guiones (-).
- Namespace: Seleccione el espacio de nombres de la carga de trabajo. El valor predeterminado es default. También puede hacer clic en Create Namespace para crear uno. Para obtener más información, véase Creación de un espacio de nombres.
- Pods: Ingrese el número de pods.
- Container Runtime: Un clúster de CCE utiliza runC de forma predeterminada, mientras que un clúster de CCE Turbo soporta runC y Kata. Para obtener más información sobre las diferencias, consulte Contenedores de Kata y contenedores comunes.
- Time Zone Synchronization: Especifique si desea habilitar la sincronización de zona horaria. Una vez activada la sincronización de zona horaria, el contenedor y el nodo utilizan la misma zona horaria. La función de sincronización de zona horaria depende del disco local montado en el contenedor. No modifique ni elimine la zona horaria. Para obtener más información, véase Configuración de la sincronización de zona horaria.
Configuración del contenedor- Información del contenedor
Se pueden configurar múltiples contenedores en un pod. Puede hacer clic en Add Container a la derecha para configurar varios contenedores para el pod.
- Basic Info: Véase Configuración de información básica del contenedor.
- Lifecycle: Véase Setting Container Lifecycle Parameters.
- Health Check: Véase Configuración de la comprobación de estado de un contenedor.
- Environment Variables: Véase Setting an Environment Variable.
- Data Storage: Véase Almacenamiento de contenedores.
Si la carga de trabajo contiene más de un pod, los volúmenes de EVS no se pueden montar.
- Security Context: Establezca permisos de contenedor para proteger el sistema y otros contenedores de ser afectados. Introduzca el ID de usuario para establecer los permisos de contenedor y evitar que los sistemas y otros contenedores se vean afectados.
- Logging: Véase Uso de ICAgent para recopilar logs de contenedores.
- Image Access Credential: Seleccione la credencial utilizada para acceder al repositorio de imágenes. El valor predeterminado es default-secret. Puede usar default-secret para acceder a las imágenes en SWR. Para obtener más información acerca de default-secret, consulte default-secret.
- GPU graphics card: All está seleccionado de forma predeterminada. La instancia de carga de trabajo se programará en el nodo con el tipo de tarjeta gráfica de GPU especificado.
Configuración de servicio
Se utiliza un Service para el acceso a pods. Con una dirección IP fija, un Service reenvía el tráfico de acceso a los pods y realiza el balanceo de carga para estos pods.
También puede crear un Service después de crear una carga de trabajo. Para obtener más información sobre el Service, consulte Descripción general.
Configuración avanzada- Upgrade: Véase Configuración de la política de actualización de carga de trabajo.
- Scheduling: Véase Política de programación (afinidad/antiafinidad).
- Labels and Annotations: Véase Etiquetas y anotaciones de pod.
- Toleration: El uso de manchas y tolerancias permite (no a la fuerza) que el pod se programe en un nodo con las manchas correspondientes, y controla las políticas de desalojo del pod después de que el nodo donde se encuentra el pod esté contaminado. Para obtener más información, véase Tolerancias.
- DNS: Véase Configuración de DNS.
- APM Settings: Véase Configuración de la configuración de APM para el análisis de cuello de botella del rendimiento.
- Haga clic en Create Workload en la esquina inferior derecha.
Uso de kubectl
El siguiente procedimiento utiliza Nginx como ejemplo para describir cómo crear una carga de trabajo con kubectl.
- Utilice kubectl para conectarse al clúster. Para obtener más información, véase Conexión a un clúster con kubectl.
- Cree y edite el archivo nginx-deployment.yaml. nginx-deployment.yaml es un nombre de archivo de ejemplo. Puede cambiar el nombre según sea necesario.
vi nginx-deployment.yaml
El siguiente es un archivo YAML de ejemplo. Para obtener más información sobre las Deployments, consulte la documentación de Kubernetes.
apiVersion: apps/v1 kind: Deployment metadata: name: nginx spec: replicas: 1 selector: matchLabels: app: nginx strategy: type: RollingUpdate template: metadata: labels: app: nginx spec: containers: - image: nginx # If you use an image from an open-source image registry, enter the image name. If you use an image in My Images, obtain the image path from SWR. imagePullPolicy: Always name: nginx imagePullSecrets: - name: default-secret
Para obtener más información sobre estos parámetros, consulte Tabla 1.
Tabla 1 Parámetro de YAML de Deployment Parámetro
Descripción
Obligatorio/opcional
apiVersion
Versión de la API.
NOTA:Establezca este parámetro en función de la versión del clúster.
- Para los clústeres de v1.17 o posterior, el formato de apiVersion de las Deployments es apps/v1.
- Para los clústeres de v1.15 o versiones anteriores, el formato de apiVersion de las Deployments es extensions/v1beta1.
Obligatorio
kind
Tipo de un objeto creado.
Obligatorio
metadata
Metadatos de un objeto de recurso.
Obligatorio
name
Nombre de la Deployment.
Obligatorio
Spec
Descripción detallada de la Deployment.
Obligatorio
replicas
Número de pods.
Obligatorio
selector
Determina los pods de contenedor que puede gestionar la Deployment.
Obligatorio
strategy
Modo de actualización. Valores posibles:
- RollingUpdate
- ReplaceUpdate
De forma predeterminada, se utiliza la actualización acumulativa.
Opcional
template
Descripción detallada de un pod de contenedor creado.
Obligatorio
metadata
Metadatos.
Obligatorio
labels
metadata.labels: Etiquetas de contenedor.
Opcional
spec:
containers
- image (obligatorio): Nombre de una imagen de contenedor.
- imagePullPolicy (opcional): Política para la obtención de una imagen. Las opciones incluyen Always (intentando descargar imágenes cada vez), Never (solo usando imágenes locales) y IfNotPresent (utilizando imágenes locales si están disponibles; descargando imágenes si las imágenes locales no están disponibles). El valor predeterminado es Always.
- name (obligatorio): Nombre del contenedor.
Obligatorio
imagePullSecrets
Nombre del secreto utilizado durante la extracción de imágenes. Si se utiliza una imagen privada, este parámetro es obligatorio.
- Para extraer una imagen del Software Repository for Container (SWR), establezca este parámetro en default-secret.
- Para extraer una imagen de un repositorio de imágenes de terceros, establezca este parámetro en el nombre del secreto creado.
Opcional
- Cree una Deployment.
kubectl create -f nginx-deployment.yaml
Si se muestra la siguiente información, se está creando la Deployment.
deployment "nginx" created
- Consulte el estado de Deployment.
kubectl get deployment
Si se muestra la siguiente información, se está ejecutando la Deployment.
NAME READY UP-TO-DATE AVAILABLE AGE nginx 1/1 1 1 4m5s
Parameter description
- NAME: Nombre de la aplicación que se ejecuta en el pod.
- READY: indica el número de cargas de trabajo disponibles. El valor se muestra como "the number of available pods/the number of expected pods".
- UP-TO-DATE: indica el número de réplicas que se han actualizado.
- AVAILABLE: indica el número de pods disponibles.
- AGE: período en el que la Deployment sigue ejecutándose
- Si se accede a la Deployment con un Service de ClusterIP o de NodePort, agregue el Service correspondiente. Para obtener más información, véase Red.