hostPath
hostPath se utiliza para montar el directorio de archivos del host donde se encuentra el contenedor en el punto de montaje especificado del contenedor. Si el contenedor necesita tener acceso a /etc/hosts, utilice hostPath para asignar /etc/hosts.
- Evite usar volúmenes de hostPath tanto como sea posible, ya que son propensos a riesgos de seguridad. Si se deben utilizar volúmenes hostPath, solo se pueden aplicar a archivos o rutas de acceso y montar en modo de solo lectura.
- Después de eliminar el pod en el que se monta un volumen hostPath, se conservan los datos del volumen hostPath.
Montar un volumen de hostPath en la consola
Puede montar una ruta de acceso en el host a una ruta de acceso de contenedor especificada. Un volumen hostPath se usa generalmente para almacenar permanentemente los logs de carga de trabajo o para cargas de trabajo que necesitan acceder a la estructura de datos interna del motor Docker en el host.
- Inicie sesión en la consola de CCE.
- Cuando cree una carga de trabajo, haga clic en Data Storage en Container Settings. Haga clic en Add Volume y elija hostPath en la lista desplegable.
- Establezca los parámetros para agregar un volumen local, tal como aparece en Tabla 1.
Tabla 1 Configuración de parámetros para el montaje de un volumen hostPath Parámetro
Descripción
Storage Type
Seleccione HostPath.
Host Path
Ruta del host en el que se va a montar el volumen local, por ejemplo, /etc/hosts.
NOTA:Host Path no se puede establecer en el directorio raíz /. De lo contrario, el montaje falla. Las rutas de montaje pueden ser las siguientes:
- /opt/xxxx (excepto /opt/cloud)
- /mnt/xxxx (excepto /mnt/paas)
- /tmp/xxx
- /var/xxx (excluidos directorios clave como /var/lib, /var/script y /var/paas)
- /xxxx (No puede entrar en conflicto con el directorio del sistema, como bin, lib, home, root, boot, dev, etc, lost+found, mnt, proc, sbin, srv, tmp, var, media, opt, selinux, sys y usr.)
No ajuste este parámetro a /home/paas, /var/paas, /var/lib, /var/script, /mnt/paas o /opt/cloud. De lo contrario, la instalación del sistema o del nodo fallará.
Add Container Path
Configure los parámetros siguientes:- Mount Path: Introduzca una ruta de acceso del contenedor. Por ejemplo, /tmp.
Este parámetro indica la ruta de contenedor en la que se montará un volumen de datos. No monte el volumen en un directorio del sistema como / o /var/run; esta acción puede causar errores de contenedor. Se recomienda montar el volumen en un directorio vacío. Si el directorio no está vacío, asegúrese de que no hay archivos que afecten al inicio de contenedor. De lo contrario, se reemplazarán los archivos, lo que provocará errores de inicio de contenedor o errores de creación de carga de trabajo.AVISO:
Cuando el contenedor está montado en un directorio de alto riesgo, se recomienda utilizar una cuenta con los permisos mínimos para iniciar el contenedor; de lo contrario, los archivos de alto riesgo en la máquina host podrían estar dañados.
- Subpath: Introduzca una ruta secundaria, por ejemplo, tmp.
Se utiliza una ruta secundaria para montar un volumen local de modo que se utilice el mismo volumen de datos en un solo pod. Si este parámetro se deja en blanco, la ruta raíz se utiliza de forma predeterminada.
- Permission
- Read-only: Solo puede leer los datos en los volúmenes montados.
- Read/Write: Puede modificar los volúmenes de datos montados en la ruta de acceso. Los datos recién escritos no se migran si se migra el contenedor, lo que puede causar la pérdida de datos.
Puede hacer clic en para agregar varias rutas y subrutas.
- Después de completar la configuración, haga clic en Create.
Montar un volumen hostPath usando kubectl
- Utilice kubectl para conectarse al clúster.
- Cree un archivo llamado nginx-hostpath.yaml y edítelo.
vi nginx-hostpath.yaml
El contenido del archivo YAML es el siguiente. Monte el directorio /data en el nodo en el directorio /data del nodo.
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-hostpath namespace: default spec: replicas: 2 selector: matchLabels: app: nginx-hostpath template: metadata: labels: app: nginx-hostpath spec: containers: - name: container-1 image: nginx:latest volumeMounts: - name: vol-hostpath # Volume name, which must be the same as the volume name in the volumes field. mountPath: /data # Mount path in the container. imagePullSecrets: - name: default-secret volumes: - name: vol-hostpath # Volume name, which can be customized. hostPath: path: /data # Directory location on the host node.
- Cree una carga de trabajo.
kubectl apply -f nginx-hostpath.yaml