ProHoster > Blog > Administración > CRI-O como substituto de Docker como ambiente de execución para Kubernetes: configuración en CentOS 8
CRI-O como substituto de Docker como ambiente de execución para Kubernetes: configuración en CentOS 8
Ola! Chámome Sergey, son DevOps en Surf. O departamento de DevOps de Surf pretende non só establecer interacción entre especialistas e integrar procesos de traballo, senón tamén investigar e implementar activamente as tecnoloxías actuais tanto na súa propia infraestrutura como na do cliente.
A continuación falarei un pouco dos cambios na pila tecnolóxica dos contedores que atopamos ao estudar a distribución. CentOS 8 e sobre o que é CRI-O e como configurar rapidamente un ambiente executable para Kubernetes.
Por que Docker non está incluído en CentOS 8?
Despois de instalar as últimas versións principais rhel 8 ou CentOS 8 non se pode deixar de notar: estas distribucións e repositorios oficiais non conteñen a aplicación Estivador, que substitúen ideolóxica e funcionalmente os paquetes podman, Buildah (presente na distribución por defecto) e CRI-O. Isto débese á implementación práctica de estándares desenvolvidos, entre outras cousas, por Red Hat como parte do proxecto Open Container Initiative (OCI).
O obxectivo de OCI, que forma parte da Fundación Linux, é crear estándares industriais abertos para formatos de contedores e tempos de execución que resolvan varios problemas á vez. En primeiro lugar, non contradín a filosofía de Linux (por exemplo, na parte de que cada programa debería realizar unha acción e Estivador é unha especie de combinado todo en un). En segundo lugar, poderían eliminar todas as deficiencias existentes no software Estivador. En terceiro lugar, serían totalmente compatibles cos requisitos comerciais das principais plataformas comerciais para a implantación, xestión e servizo de aplicacións en contedores (por exemplo, Red Hat OpenShift).
Limitacións Estivador e as vantaxes do novo software xa foron descritas con certo detalle en Este artigo, e unha descrición detallada de toda a pila de software ofrecida dentro do proxecto OCI e as súas características arquitectónicas pódese atopar na documentación oficial e nos artigos da propia Red Hat (non é nada malo). artigo no blog de Red Hat) e en terceiros comentarios.
É importante ter en conta que funcionalidades teñen os compoñentes da pila proposta:
podman — interacción directa cos contedores e almacenamento de imaxes a través do proceso runC;
Buildah — montaxe e carga de imaxes ao rexistro;
CRI-O — un contorno executable para sistemas de orquestración de contedores (por exemplo, Kubernetes).
Creo que para comprender o esquema xeral de interacción entre os compoñentes da pila, é recomendable proporcionar aquí un diagrama de conexión Kubernetes c correrC e bibliotecas de baixo nivel usando CRI-O:
CRI-O и Kubernetes unirse ao mesmo ciclo de lanzamento e soporte (a matriz de compatibilidade é moi sinxela: versións principais Kubernetes и CRI-O coinciden), e isto, tendo en conta o foco na proba completa e completa do funcionamento desta pila por parte dos desenvolvedores, dános o dereito a esperar a máxima estabilidade alcanzable no funcionamento en calquera escenario de uso (a lixeireza relativa tamén é beneficiosa aquí). CRI-O en comparación con Estivador debido á limitación intencionada da funcionalidade).
Ao instalar Kubernetes "camino correcto" (segundo OCI, por suposto) usando CRI-O en CentOS 8 Atopamos algunhas dificultades menores que, con todo, superamos con éxito. Estarei encantado de compartir con vostede as instrucións de instalación e configuración, que en total levarán uns 10 minutos.
Como implementar Kubernetes en CentOS 8 usando o marco CRI-O
Requisitos previos: presenza de polo menos un host (2 núcleos, 4 GB de RAM, polo menos 15 GB de almacenamento) con CentOS 8 (recoméndase o perfil de instalación do "Servidor"), así como entradas para el no DNS local (como último recurso, podes facelo cunha entrada en /etc/hosts). E non esquezas desactivar o intercambio.
Realizamos todas as operacións no host como usuario root, teña coidado.
No primeiro paso, configuraremos o SO, instalaremos e configuraremos dependencias preliminares para CRI-O.
Actualicemos o sistema operativo:
dnf -y update
A continuación cómpre configurar o firewall e SELinux. Aquí todo depende do ambiente no que traballarán o noso anfitrión ou anfitrións. Podes configurar un firewall segundo as recomendacións de documentación, ou, se estás nunha rede de confianza ou utilizas un firewall de terceiros, cambia a zona predeterminada a de confianza ou desactiva o firewall:
establecer a versión requirida CRI-O (versión principal CRI-O, como xa se mencionou, coincide coa versión requirida Kubernetes), desde a última versión estable Kubernetes actualmente 1.18:
Preste atención ao primeiro matiz que atopamos durante o proceso de instalación: cómpre editar a configuración CRI-O antes de iniciar o servizo, xa que o compoñente común necesario ten unha localización diferente á especificada:
sed -i 's//usr/libexec/crio/conmon//usr/bin/conmon/' /etc/crio/crio.conf
O segundo matiz importante: xa que non usamos un daemon Estivador, pero usamos o daemon CRI-O, antes do lanzamento e inicialización Kubernetes cómpre facer as opcións adecuadas no ficheiro de configuración /var/lib/kubelet/config.yaml, tendo primeiro creado o directorio desexado:
O terceiro punto importante que atopamos durante a instalación: a pesar de que indicamos o controlador utilizado cgroup, e a súa configuración a través dos argumentos pasados cubeta está desactualizado (como se indica explícitamente na documentación), necesitamos engadir argumentos ao ficheiro, se non, o noso clúster non se inicializará:
Para personalizar plano de control ou traballador nodos en minutos, podes usar con este guión.
É hora de inicializar o noso clúster.
Para inicializar o clúster, execute o comando:
kubeadm init --pod-network-cidr=10.244.0.0/16
Asegúrate de anotar o comando para unirte ao clúster "kubeadm join...", que se lle pide que use ao final da saída, ou polo menos os tokens especificados.
Imos instalar o complemento (CNI) para a rede Pod. Recomendo usar chita. Posiblemente máis popular Flanela ten problemas de compatibilidade con nftables, si e chita - a única implementación CNI recomendada e totalmente probada polo proxecto Kubernetes:
Para conectar un nodo traballador ao noso clúster, cómpre configuralo segundo as instrucións 1 e 2, ou utilizalo guión, a continuación, execute o comando desde a saída "kubeadm init..." que anotamos no paso anterior:
Comprobamos que o noso clúster está inicializado e comezou a funcionar:
kubectl --kubeconfig=/etc/kubernetes/admin.conf get pods -A
Listo! Xa podes aloxar cargas útiles no teu clúster K8s.
O que nos espera por diante
Espero que as instrucións anteriores che axuden a aforrar tempo e nervios.
O resultado dos procesos que ocorren na industria a miúdo depende de como sexan aceptados pola maioría dos usuarios finais e desenvolvedores doutro software no nicho correspondente. Aínda non está do todo claro a que levarán as iniciativas da OCI nuns anos, pero estaremos vendo con pracer. Podes compartir a túa opinión agora mesmo nos comentarios.