Capítulo 15: Insights contenedor Linux

contenedor de ideas Linux

el contenido de hoy se divide en tres partes

  1. aislamiento de recursos y restricciones;
  2. configuración de espejo de contenedores;
  3. Contenedor de configuración del motor;

Las dos primeras partes es el aislamiento de recursos y restricciones, así como configuración de contenedor reflejado, la tercera rama de la industria a un ejemplo más madurar motor recipiente para explicar el motor recipiente constitución.

envase

Un contenedor es una tecnología de virtualización de peso ligero, ya que que con la máquina virtual hasta, es menos una capa de la capa de hipervisor. A continuación se muestra un vistazo a la gráfica, una descripción breve del proceso de inicio de un contenedor.

avatar

El resultado final es una imagen de disco se almacena en el contenedor por encima del disco. Un motor de recipiente superior, el motor puede ser recipiente acoplable, el recipiente puede ser otros motores. Motores hecho bajar una solicitud, por ejemplo, crear el contenedor, y esta vez se tomó el recipiente por encima de la duplicación de discos, un proceso que se ejecutan en el equipo host.

Para los contenedores, lo más importante es cómo garantizar que los recursos se utilizan en el proceso son aislados y se encuentran encerrados en el núcleo de Linux está por encima de una tecnología cgroup y espacio de nombres para asegurar los dos. Al lado de ventana acoplable por ejemplo, para explicar en detalle el aislamiento de recursos y contenedores de reflejo de dos partes.

En primer lugar, el aislamiento y las restricciones de recursos

espacio de nombres

espacio de nombres se utiliza para el aislamiento de los recursos, hay espacio de nombres de siete en el núcleo de Linux, cargador de muelle utilizado en los primeros seis. Séptimo espacio de nombres cgroup y no se utiliza en el propio cargador de muelle, pero para lograr un espacio de nombres en la implementación cgroup Runc.

avatar

Echemos un vistazo a desde el principio:

  • El primero es el espacio de nombres de montaje. mout vista espacio de nombres del contenedor está garantizado para ver el sistema de archivos es una imagen del sistema de ficheros proporcionado por el contenedor, lo que significa que no puede ver a otros archivos en el host, excepto que el conmutador -v modo obligado, el fregadero puede ser sede de algunos de los directorios y archivos anteriores, para que sea visible en el interior del contenedor. (Sistema de archivos)
  • La segunda es UTS espacio de nombres, este espacio de nombres es el nombre de host y de dominio sobre todo aislado. (Nombre de host y el nombre de dominio)
  • El tercero es el espacio de nombres PID, este espacio de nombres init proceso es asegurar que el contenedor es el número 1 para iniciar el proceso. (Proceso)
  • El cuarto es el espacio de nombres de red, además de host de la red de contenedores este modo, todos los demás modelo de red tiene su propio espacio de nombres de archivos de red. (Equipo de red, IPv4, y la pila de protocolo IPv6, tabla de encaminamiento IP, el servidor de seguridad, /, / sys / class / directorio de red proc / directorio de red, socket (Socket), etc.)
  • El quinto es el espacio de nombres de usuario, el espacio de nombres es un UID de usuario de control y mapeo GID en el recipiente y el interior del anfitrión, pero esto es relativamente pequeño, con el espacio de nombres. (Identificadores relacionados con la seguridad y atributos (ID de usuario, ID de usuario, grupo de directorio raíz, clave (key), un permiso especial))
  • El sexto es el espacio de nombres del IPC, este espacio de nombres es controlar el proceso y comunicar algo, digamos semáforo. (semáforos, colas de mensajes y memoria compartida)
  • El séptimo es espacio de nombres cgroup, hay dos a la derecha de la figura un diagrama esquemático, respectivamente, que muestran la abertura y el cierre de espacio de nombres cgroup. Uno de los beneficios generados por contenedor de espacio de nombres cgroup se ve en la forma de la vista cgroup raíz de render, y una vista del camino para que acogería el proceso anterior y ver cgroup espacio de nombres son los mismos. Otro de los beneficios es el uso de cgroup contenedor interno se convertirá en más seguro.

Aquí nos fijamos en un ejemplo sencillo mediante el proceso de creación de espacio de nombres dejar de compartir. Contenedor de espacio de nombres de la creación de este sistema son, de hecho, llamada unshare crear con.

avatar

Figura en parte superior es un ejemplo el uso unshare, la mitad inferior es en realidad uso un pid espacio de nombres unshare este comando para crear. Podemos ver que el proceso de fiesta ya está en el interior de un nuevo espacio de nombres PID, entonces Bash el ps pid ver esto ahora es 1, lo que indica que se trata de un nuevo espacio de nombres PID.

cgroup

Dos tipos cgroup unidad

cgroup está haciendo las limitaciones de recursos, el contenedor ventana acoplable tiene dos unidades cgroup: uno es SystemD, el otro es de cgroupfs.

avatar

  • cgroupfs se entiende mejor. Por ejemplo, para limitar la cantidad de memoria, la cuota de CPU para su uso como mucho, de hecho, directamente a la correspondiente escritura pid un archivo cgroup, entonces la correspondiente necesidad de recursos límite también se escriben en el archivo cgroup memoria correspondiente y el archivo cgroup CPU en él .
  • Otro es SystemD un cgroup impulsada. Esto se debe a la propia unidad puede proporcionar una gestión cgroup systemd. Así que si lo hace cgroup conducción systemd, a continuación, todas las operaciones de escritura debe ser realizado por cgroup interfaz systemd, no se puede cambiar manualmente el archivo cgroup.

Recipiente cgroup comúnmente usados

Luego, busquen en los contenedores de uso general cgroup. El núcleo de Linux en sí proporciona una variedad cgroup, pero recipiente cargador de muelle utilizado es, probablemente, sólo los siguientes seis tipos:

avatar

  • La primera es la CPU, a la CPU conjunto generalmente cuota de CPU y cupset, el uso de control de la CPU.
  • El segundo es la memoria, el uso de memoria proceso de control.
  • El tercer dispositivo, dispositivo de control se puede ver en el equipo completo del dispositivo contenedor.
  • El cuarto congelador. Se y tercera cgroup (dispositivo) son para la seguridad. Al detener el buque, congelador proceso actual será todo cgroup escritura, a continuación, todos los procesos se congelan a cabo, el objetivo es evitar que se detuvo, el proceso tendrá que hacer tenedor. En este caso el equivalente evitar que el proceso se escape en el huésped ir más arriba, por razones de seguridad.
  • El quinto es blkio, blkio principalmente para limitar el número de IOPS no bps tasa de contenedor utilizado en el límite de disco. Debido cgroup no sólo palabras, sólo blkio limitar sincronización io, io ventana acoplable hay manera limitada.
  • El sexto es la cgroup pid, límite cgroup pid es el número máximo de procesos dentro del contenedor puede ser utilizado.

cgroup inusual

También forma parte del recipiente ventana acoplable no se utiliza cgroup. Contenedor común y poco común, esta distinción es estibador se debe a que, por Runc, además de la parte inferior de rdma, todo cgroup son en realidad en apoyo de runContainer dentro, pero no abrieron esta parte del soporte cargador de muelle , de manera que el recipiente es una ventana acoplable no soporta la vista de aquellos cgroup.

avatar

En segundo lugar, el espejo de contenedores

imágenes ventana acoplable

A continuación se habla de espejo a espejo contenedor, por ejemplo ventana acoplable a hablar de hacer un espejo contenedor.

imagen cargador de muelle se basa en la unión del sistema de archivos. Una descripción breve del sistema de fichero común: probablemente significa es que permite que los archivos que se almacenan en diferentes niveles de la anterior, pero al final se puede lograr a través de una visión unificada, ver todos los archivos por encima de estos niveles.

avatar

Un diagrama de configuración que se muestra anteriormente, la derecha es para hacerse cargo del recipiente de almacenamiento web oficial ventana acoplable. Este mapa muestra la misma imagen de la memoria de la ventana acoplable, que se basa en el sistema de archivos de almacenamiento ventana acoplable conjunta es jerárquica. Cada capa es una capa, la capa de éstos de diferentes archivos, puede ser multiplexado otro espejo. Puede parecer, cuando el espejo se ejecuta en un recipiente, la capa superior se leyó en un recipiente. La capa contenedor también puede escribir un commit ponerlo en una nueva capa superior del espejo.

ventana acoplable de almacenamiento duplicado, que se basa en diferentes sistemas de archivos subyacente, por lo que es una unidad de almacenamiento personalizada, como AUFS, btrfs, devicemapper así como la superposición de diferentes sistemas de archivos. estibador en estos sistemas de archivos qué algunos de conducción correspondiente a un controlador gráfico, es decir, la presencia de estas unidades de disco mediante la duplicación de los anteriores.

Para superponer un ejemplo

proceso de almacenamiento

Entonces superponemos este sistema de archivos como un ejemplo, vistazo a la ventana acoplable imagen se almacena en el disco. Echar un vistazo a esta tabla a continuación se describe brevemente el sistema de archivo de superposición principio de funcionamiento.

avatar

La capa más inferior es una capa inferior, es decir, una capa de espejo que es una capa de sólo lectura. capa superior derecha es una capa superior, se lee la capa superior del contenedor, la capa superior utiliza un mecanismo de replicación realista, es decir, cuando sólo ciertos archivos tendrán que ser modificado a partir de la capa inferior de arriba para copiar este archivo, después de todo serán modificados operaciones de modificación sobre una copia de la capa superior.

un workdir superior paralelo, su función es servir como un papel de la capa intermedia. Es decir, cuando una copia de la capa superior, que puede ser modificado, primero pondrá workdir y, a continuación, ir de allí se trasladaron a workdir superior, este es el mecanismo de trabajo de la superposición.

La parte superior es mergedir, es una capa de visión unificada. Se puede ver la integración de todos los datos de la parte superior e inferior mergedir el interior, y luego ventana acoplable ejecutivo en el interior de contenedores, vio un sistema de archivos es en realidad mergedir unificó capa de vista.

Operaciones con archivos

A continuación hablamos de esta superposición basada en almacenamiento, la forma de manipular archivos dentro del contenedor?

avatar

Tiempo para mirar a la operación de lectura, el contenedor simplemente crea a partir de, superior está realmente vacía. Si usted lee las palabras de este tiempo, todos los datos se leen desde la capa inferior a venir.

operación de escritura como se acaba de mencionar, superponer la capa superior tiene un mecanismo realista para los datos, cuando algunos de los archivos necesarios para operar, superposición va a hacer una copia a la acción, a continuación, se copia el archivo desde la capa inferior, después de algunos cambios serán escritos para operar en esta sección.

Luego, busquen en la operación de borrado, superposición que, de hecho, no es realmente operaciones de borrado. En realidad, se llama mediante la supresión de la marca de archivo, y luego fue a ver una visión unificada de la planta superior para ver si la marca de archivo, que hará que se muestre el archivo, y luego se piensa que se elimina este archivo. Esta etiqueta de dos maneras:

  • Una de ellas es la desorientación manera.
  • La segunda es una extensión de los privilegios estableciendo el directorio, elimine el directorio para hacerlo estableciendo la expansión de parámetros.

pasos

Luego, busquen en la ventana acoplable uso real ejecutar para iniciar el contenedor busybox, su superposición punto de montaje parece?

avatar

El segundo mapa que se puede montar, se puede ver un rootfs montar el contenedor, que es un tipo de superposición como un montaje. Que incluye la parte superior, inferior hay workdir tres niveles.

Luego, busquen en el nuevo archivo se escribe en el interior del contenedor. exec ventana acoplable para crear un nuevo archivo, dif Esto se puede ver de lo anterior, es un upperdir. Mira upperdir dentro del archivo, cuyo contenido está escrito ventana acoplable Exec.

Por último, mirada en la parte inferior es mergedir, dentro mergedir integrado upperdir y lowerdir contenido, también puede ver los datos que escribimos.

En tercer lugar, el motor del buque

arquitectura recipiente containerd detallada

Luego habla de motor del buque, que containerd basa en el motor de la CNCF de un contenedor, el contenedor en términos de lo que constituye aproximadamente motores. La cifra es tomar el relevo de la web oficial containerd de un diagrama de la arquitectura, basado en esta arquitectura diagrama de explicar brevemente la arquitectura containerd.

avatar

La figura si en los lados izquierdo y derecho, se puede considerar containerd proporciona dos funciones.

El primero es para el tiempo de ejecución, que es parte de la gestión del ciclo de vida del recipiente, salió de la gestión del almacenamiento es en realidad un almacenamiento duplicado. containerd será el encargado de tirar el espejo de la memoria.

De acuerdo con el nivel de la vista de jerarquía, entonces:

  • La primera capa es una GRPC, capa superior containerd es proporcionar servicios en forma de GRPC sirven capa superior. Métricas de esta parte es proporcionar algunos de los contenidos de cgroup métricas.
  • Esta capa se deja bajo un recipiente de almacenamiento reflejada, las imágenes de línea, contenedores siguiente es el de metadatos, que es parte Matadata por bootfs ** ** almacenados en el disco anteriormente. Tareas de la estructura de gestión de la derecha es un buque de contenedores, Events es un contenedor de algunas operaciones tendrán un evento enviado a la capa superior, la capa superior se puede suscribirse a este evento, por lo tanto saben qué cambios ocurren estado contenedor.
  • Runtimes es la capa más inferior, los tipos Runtimes distinguidos de, por ejemplo, el contenedor seguro runContainer o similares.

Lo cuña V1 / V2 es

Luego hablar de containerd aquí más o menos en la arquitectura en tiempo de ejecución. La imagen siguiente es tomar el relevo de la página oficial de Kata, la mitad superior es original, la mitad inferior añadió algo de ejemplo extendido, basado en esta tabla nos fijamos en este containerd arquitectura de capas en tiempo de ejecución.

avatar

Como se muestra en la figura: de acuerdo con un orden de izquierda a derecha, de la capa superior a un proceso que se ejecuta en el tiempo de ejecución final.

Nos fijamos en el extremo izquierdo, a la izquierda es un CRI de cliente. CRI es generalmente kubelet por la petición, envía una solicitud a containerd. Después de recibir la petición de contenedores containerd, que pasará a través de una cuña containerd. containerd cuña es gestionar el ciclo de vida de un contenedor, que es el principal responsable de dos aspectos:

  • La primera es que será remitida io.
  • La segunda señal es que va a ser transmitida.

La mitad superior de la figura pintura es contenedor seguro, que es un proceso de kata, esto no es lanzado específicamente. La mitad inferior, se puede ver que hay una variedad de diferentes cuña. Éstos son algunos arquitectura containerd cuña.

Comience con una cuña, que es una caja azul hacia arriba containerd-cuña en containerd en. Este medio de proceso que, independientemente de contenedor kata Ye Hao, contenedor Runc Ye Hao, contenedor gvisor o, con la anterior-shim son containerd.

Copias de los diferentes tipos de tiempo de ejecución, containerd hacer una extensión. Esta extensión es a través de esta interfaz Shim-v2 do, lo que significa que el tiempo para alcanzar este Shim-v2 de la interfaz, diferente tiempo de ejecución puede personalizar diferentes una cuña propia. Por ejemplo: Runc puede hacer usted mismo una cuña, llamado Shim-Runc; gvisor puede hacer usted mismo una cuña llamada cuña-gvisor; kata como la de arriba también puede hacer su propia cuña es una cuña-kata. La cuña puede ser reemplazado por encima de la caja azul containerd-cuña.

Hay muchos beneficios de hacerlo, dar un ejemplo más vívido. Después de kata puede mirar a esta imagen, por encima de ella con el original si Shim-v1, entonces, de hecho hay tres componentes, la razón por la que hay tres componentes porque kata sí mismo un límite, pero con una cuña-v2 este marco, los tres componentes se puede convertir en un binario, es decir, los tres componentes originales pueden ahora ser convertidos en un componentes shim-Kata, esto puede reflejar un beneficio de shim-v2.

buque containerd detallado de arquitectura - proceso ejemplar buque

A continuación tenemos dos ejemplos para explicar en detalle cómo el contenedor de procesos de trabajo, los dos gráficos siguientes se basan en una arquitectura containerd contenedor de flujo de trabajo de la pintura.

iniciar el proceso de

Mira el inicio del contenedor de procesos:

avatar

Este mapa se compone de tres partes:

  • La primera parte de la pieza de motor es un contenedor, el contenedor puede ser el motor de Docker, puede ser otro.
  • Dos línea de puntos caja junto containerd y containerd-shim, que pertenecen a dos porciones arquitectura containerd.
  • Es decir, la parte inferior del recipiente, esta parte es que pasar por un tiempo de ejecución tire hacia arriba, se puede considerar una cuña para operar un comando contenedor Runc creado.

Vistazo a cómo este proceso está funcionando, la carta que también marcó 1,2,3,4. Esta es 1,2,3,4 containerd cómo crear un flujo de contenedores.

En primer lugar, se destinará a crear un matadata, entonces irá para enviar la solicitud al servicio de trabajo dijo que se iba a crear un contenedor. A través de una serie de componentes intermedios, la solicitud final emitida a una cuña. containerd interactivo y la cuña se hace realmente por la interacción GRPC, containerd emitida después de la solicitud de creación de una cuña, cuña va a crear un contenedor de tiempo de ejecución para llamar a cabo, que es un ejemplo del inicio de contenedores.

exec proceso

A continuación, mirar esta imagen de abajo, es cómo exec un recipiente. E iniciar el proceso de estructura muy similar o menos el mismo, excepto que parte de ella es containerd cómo hacer frente a esta parte del proceso. Y la tabla de arriba, también entiendo trazan 1,2,3,4, estos pasos representan una secuencia de containerd hacer el ejecutivo.

avatar

Se puede ver en la figura, el funcionamiento ejecutivo se envía a la containerd-cuña. Contenedor, el contenedor y para iniciar un ejecutivo a un contenedor, de hecho, no es esencialmente diferente.

La final no es más que una diferencia, si el contenedor de procesos en ejecución no crear un espacio de nombres:

  • exec tiempo, este proceso necesita ser añadido a un espacio de nombres en el interior existente;
  • hora de inicio, proceso de contenedor de espacio de nombres es la necesidad de crear especializado.

Esta sección resume

Por último, espero que los estudiantes que leen esta sección, para tener un conocimiento más profundo del contenedor de Linux. Nosotros resumimos brevemente aquí:

  1. Cómo hacer espacio de nombres de contenedores aislamiento de recursos y hacer las limitaciones de recursos cgroup;
  2. Breve contenedor de almacenamiento basado en el sistema de archivos de superposición de imágenes;
  3. Cargador de muelle + containerd un ejemplo para describir la forma en que el motor trabaje buque.

Supongo que te gusta

Origin www.cnblogs.com/passzhang/p/12544614.html
Recomendado
Clasificación