Kubernetes CSI es una implementación de la especificación de la interfaz de almacenamiento de contenedores, que ofrece un mecanismo estandarizado para establecer la conectividad entre las herramientas de orquestación de contenedores y los sistemas de almacenamiento.
Bajo este modelo, la herramienta CO incorpora un complemento compatible con CSI que sirve como interfaz entre las cargas de trabajo en contenedores y el sistema de almacenamiento de terceros. Estos sistemas de almacenamiento incluyen entornos de almacenamiento de archivos, bloques y en la nube.
Para facilitar el proceso, el proveedor de almacenamiento debe proporcionar un controlador de volumen compatible con CSI que interactúe con el complemento CO. Juntos, el controlador y el complemento permiten que las cargas de trabajo en contenedores admitan operaciones como conectar o desconectar volúmenes, montar o desmontar volúmenes y aprovisionar o desaprovisionar volúmenes dinámicamente. Debido a que la especificación CSI estandariza la interfaz, un proveedor necesita desarrollar solo un controlador que funcione con cualquier complemento CO compatible con CSI.
Complementos de Kubernetes anteriores
Kubernetes ahora ofrece un complemento compatible con CSI que permite el almacenamiento persistente para cargas de trabajo en contenedores, sin muchos de los dolores de cabeza que solían surgir al integrar el almacenamiento en el entorno de Kubernetes. Antes de la iniciativa CSI de Kubernetes, los proveedores de almacenamiento solían confiar en los complementos de volumen en árbol de Kubernetes para facilitar la conectividad del almacenamiento. los en el árbol Este aspecto significaba que estaban integrados en el repositorio central de Kubernetes, lo que traía consigo una serie de desafíos.
Si un proveedor deseaba integrar su sistema de almacenamiento en el entorno de Kubernetes, necesitaba desarrollar un complemento de volumen y agregarlo a la base de código de Kubernetes. El mantenimiento del complemento se combinó estrechamente con las versiones de Kubernetes, y el complemento tenía amplios privilegios sobre los componentes de Kubernetes. Un error en el complemento podría derribar componentes críticos. Además, el proveedor de almacenamiento tenía que hacer que el código fuente del complemento estuviera disponible para el público como parte del proyecto Kubernetes.
Luego, Kubernetes lanzó el complemento FlexVolume, que expuso una API para llevar a cabo operaciones como montar, desmontar, adjuntar y desconectar volúmenes. Desafortunadamente, el complemento FlexVolume también tenía sus limitaciones. Aunque admitía controladores de volumen fuera del árbol de terceros, aún requería acceso a los sistemas de archivos raíz en el nodo y las máquinas maestras y venía con una serie de dependencias del sistema.
Kubernetes CSI facilita el proceso
El nuevo complemento de volumen CSI de Kubernetes ayuda a abordar estos problemas y simplifica el desarrollo de controladores. Al igual que los complementos de volumen tradicionales, el complemento CSI es un componente en árbol integrado en la base del código. Sin embargo, a diferencia de los modelos anteriores, el complemento de volumen CSI extiende las operaciones en contenedores fuera del entorno de Kubernetes, sin las limitaciones del complemento FlexVolume.
El complemento de volumen CSI actúa como un adaptador estandarizado en el entorno de Kubernetes, proporcionando una API para interactuar con controladores de volumen externos compatibles con CSI. El complemento permite que los componentes de nodo y maestro de Kubernetes descubran y registren controladores de volumen fuera del árbol implementados en el entorno de Kubernetes. El complemento también puede iniciar comunicaciones seguras con esos controladores para proporcionar almacenamiento persistente a las cargas de trabajo en contenedores.
Los proveedores de almacenamiento ahora pueden crear controladores de volumen CSI para implementar en el entorno de Kubernetes sin necesidad de preocuparse por los detalles de implementación de Kubernetes, como hacían en el pasado. Kubernetes impone relativamente pocos requisitos sobre cómo los proveedores implementan sus controladores, siempre que cumplan con el estándar CSI. De esta manera, los proveedores tienen mucha más flexibilidad para integrar sus sistemas de almacenamiento con el entorno de Kubernetes, así como con otros entornos de CO.