Cómo instalar un clúster de Kubernetes en Centos 8

Cómo instalar un clúster de Kubernetes en Centos 8

El proceso de instalar un Clúster de Kubernetes en Centos 8 es casi similar al de Centos 7 (que puede pasar por aquí), pero el proceso aquí tiene algunos cambios. Estos cambios, principalmente giran en torno a la instalación de Estibador.

Empezando desde Centos 8 (y por extensión Rhel 8), estibador ahora ha sido reemplazado de forma nativa por podman y construcción que son herramientas de Sombrero rojo. De hecho, el paquete Docker ahora se ha eliminado del repositorio de paquete predeterminado.

Con este movimiento, el Sombrero rojo El equipo tiene como objetivo simplificar el proceso de creación y uso de contenedores, sin necesidad de permisos especiales, al tiempo que al mismo tiempo, manteniendo la compatibilidad con las imágenes de Docker y operarlos sin necesidad de un demonio. Podman promete ofrecer más flexibilidad cuando se ejecuta Kubernetes entornos, pero el jurado permanece por ahí.

Para este artículo, ejecutaremos el proceso de instalación Kubernetes en un Centos 8 plataforma, ejecutándose en Docker-ce (Edición comunitaria). En un artículo posterior, también ejecutaremos una instalación similar, utilizando podman Para nuestros contenedores.

Requisitos previos

  1. Tres servidores ejecutando CentOS 8 - 1 nodo maestro y 2 nodos de trabajadores.
  2. Se recomienda que sus nodos tengan al menos 2 CPU con 2 GB de RAM o más por máquina. Este no es un requisito estricto, pero está impulsado en gran medida por las necesidades de la aplicación que tiene la intención de ejecutar.
  3. Conectividad a Internet en todos sus nodos. Vamos a buscar Kubernetes y estibador Paquetes del repositorio. Igualmente, deberá asegurarse de que el Administrador de paquetes DNF esté instalado de forma predeterminada y pueda obtener paquetes de forma remota.
  4. Todos sus nodos también deben poder conectarse entre sí, ya sea en una red privada o pública, lo que esté disponible.
  5. También necesitará acceso a una cuenta con privilegios de sudo o raíz. En este tutorial, usaré mi cuenta raíz.

Precaución

La mayoría de los nodos generalmente vienen con únicos MAC direcciones, sin embargo, en algunos casos únicos, algunas Maquinas virtuales Puede tener direcciones MAC idénticas. Por lo tanto, se recomienda que confirme que el Product_UUid y el MAC la dirección no es idéntica en ninguno de los nodos.

Kubernetes usa estos valores para identificar de manera única los nodos en el clúster. Si estos valores no son exclusivos de cada nodo, el proceso de instalación puede fallar.

Para verificar la dirección MAC de la interfaz de red y compararla.

# enlace IP 

Para comprobar el Product_UUid y comparar, ejecute el siguiente comando.

# cat/sys/class/dmi/id/product_uuid 

Arquitectura lógica

Nuestra instalación está diseñada para tener el Nodo maestro controlando el Nodos trabajadores. Al final de esta instalación, nuestra arquitectura lógica se verá así.

Nodo maestro - Esta máquina generalmente actúa como el plano de control y ejecuta la base de datos del clúster y el servidor API (con el que se comunica la CLI Kubectl).

Nuestro 3 nodo Clúster de Kubernetes se verá algo así:

Diagrama de clúster de Kubernetes

Instalación del clúster Kubernetes en el nodo maestro

Para Kubernetes Para trabajar, necesitará un motor de contenedores. Como se mencionó, usaremos Docker-ce.

Las siguientes instituciones se realizarán en CentOS 8 nodo maestro.

Paso 1: Prepare el nombre de host, el firewall y Selinux

En tu CentOS 8 nodo maestro, Establezca el nombre de host del sistema y actualice DNS en su /etc/huéspedes archivo.

# hostnamectl set-hostname nodo maestro # cat <> /etc /hosts 192.168.0.47 nodo maestro 192.168.0.48 nodo-1 trabajador-nodo-1 192.168.0.49 nodo-2 trabajador-nodo-2 EOF 

A continuación, ping tu Nodo trabajador-1 y trabajador-nodo-2 Para verificar si su archivo de host actualizado funciona correctamente usando el comando ping.

# Ping 192.168.0.48 # ping 192.168.0.49 

A continuación, deshabilitar Selinux, Como se requiere para permitir que los contenedores accedan al sistema de archivos host, que necesita POD Networks y otros servicios.

# setenforce 0 

Configuración setenforce a 0 Efectivamente establece Selinux a Permisive, lo que desactiva efectivamente a Selinux hasta el próximo reinicio. Para deshabilitarlo por completo, use el siguiente comando y reinicie.

# SED -i -Symlinks 'Selinux = Selinux = Selinux = Selinux = Disabled/G'/etc/sysconfig/Selinux # reboot 

Kubernetes utiliza varios puertos para comunicación y acceso y estos puertos deben ser accesibles para Kubernetes y no están limitados por el firewall.

Puertos de Kubernetes

Configurar las reglas de firewall en los puertos.

# firewall-cmd --Permanent --add-puerto = 6443/tcp # firewall-cmd --permanent --add-puerto = 2379-2380/tcp # firewall-cmd --permanent --add-port = 10250/tcp # firewall-cmd --Permanent --add-puerto = 10251/tcp # firewall-cmd --permanent --add-puerto = 10252/tcp # firewall-cmd --permanent --add-port = 10255/tcp # firewall -cmd--Reload # ModProbe BR_NETFILTER # echo '1' '>/proc/sys/net/bridge/bridge-nf-llame-iptables 

Paso 2: Instale Docker-CE en Centos 8

Necesitará agregar el Estibador Repositorio primero, ya que ya no está en la lista de paquetes predeterminados utilizando lo siguiente DNF Config-Manager dominio.

# dnf config-manager --add-repo = https: // descargar.estibador.com/Linux/Centos/Docker-Ce.repositorio 

Instalar también contenedor.IO Paquete que está disponible como un demonio que administra el ciclo de vida de contenedor completo de su sistema host, desde la transferencia de imágenes y el almacenamiento hasta la ejecución y supervisión del contenedor hasta el almacenamiento de bajo nivel y los accesorios de red y más allá.

# DNF Instalar https: // Descargar.estibador.com/linux/centos/7/x86_64/stable/paquetes/contenedord.IO-1.2.6-3.3.El7.x86_64.rpm 

Ahora instale la última versión de un docker-ce paquete.

# DNF Instalar Docker-CE 

Ahora puede habilitar e iniciar el servicio Docker.

# SystemCTL Habilitar Docker # SystemCTL Start Docker 

Paso 3: Instale Kubernetes (Kubeadm) en Centos 8

A continuación, deberá agregar Kubernetes repositorios manualmente, ya que no vienen instalados de forma predeterminada en Centos 8.

# gato < /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg EOF 

Kubeadm te ayuda a arranque un clúster mínimo de Kubernetes viable que se ajusta a las mejores prácticas. Con kubeadm, Su clúster debe pasar las pruebas de conformidad de Kubernetes.

Kubeadm También admite otras funciones del ciclo de vida del clúster, como actualizaciones, degradación y gestión de tokens de arranque. Kubeadm también es amigable con otras herramientas de orquestación como Ansible y Terraformado.

Con el repositorio del paquete ahora listo, puede seguir adelante e instalar kubeadm paquete.

# DNF Instalar kubeadm -y 

Cuando la instalación se complete con éxito, habilite e inicie el servicio.

# SystemCTL Habilitar kubelet # systemctl start kubelet 

Paso 4: crea un maestro de plano de control con kubeadm

El maestro de Kubernetes que actúa como el plano de control para el clúster ejecuta algunos servicios críticos necesarios para el clúster. Como tal, el proceso de inicialización hará una serie de prececiones para garantizar que la máquina esté lista para ejecutar Kubernetes. Estas prequecks exponen advertencias y salen de errores. kubeadm init luego descarga e instala los componentes del plano de control del clúster.

Ahora es el momento de inicializar Kubernetes Master, pero antes de eso, debe deshabilitar el intercambio para ejecutar "kubeadm init" dominio.

# swapoff -a 

Inicialización Kubernetes Master es un proceso completamente automatizado que está controlado por el "kubeadm init"Comando como se muestra.

# kubeadm init 
Inicializar el maestro de Kubernetes

A continuación, copie el siguiente comando y guárdelo en algún lugar, ya que exigimos ejecutar este comando en los nodos de los trabajadores más tarde.

Kubeadm Únete 192.168.0.47: 6443 - -token nu06lu.XRSUX0SS0IXTNMS5 \ --DESCOVERY-TOKEN-CA-CERT-HASH HA256: F996EA35R4353D342FDEA2997A1CF8CAEDDAFD6D4360D606DBC82314683478HJMF777

Consejo: A veces, el comando anterior puede arrojar errores sobre los argumentos aprobados, por lo que para evitar errores, debe eliminar el '\' El personaje y tu comando final se verán así.

# kubeadm Únete 192.168.0.47: 6443 - -token nu06lu.XRSUX0SS0IXTNMS5 -Descubre-Token-Ca-Cert-Hash SHA256: F996EA35R4353D342FDEA2997A1CF8CAEDDAFD6D4360D606DBC82314683478HJMF777 

Una vez Kubernetes inicializado con éxito, debe habilitar su usuario comenzar a usar el clúster. En nuestro escenario, utilizaremos el usuario root. También puede iniciar el clúster usando el usuario de sudo como se muestra.

Usar raíz, correr:

# mkdir -p $ home/.kube # cp -i/etc/kubernetes/admin.conf $ casa/.Kube/config # chown $ (id -u): $ (id -g) $ home/.Kube/config 

Para usar un Usuario habilitado para sudo, correr:

$ mkdir -p $ home/.kube $ sudo cp -i/etc/kubernetes/admin.conf $ casa/.kube/config $ sudo chown $ (id -u): $ (id -g) $ home/.Kube/config 

Ahora confirme que el comando kubectl Está activado.

# kubectl obtener nodos 
Verifique el estado de los nodos

En este momento, verá que el estado del nodo maestro es 'No está listo'. Esto se debe a que todavía estamos que implementamos la red POD en el clúster.

La red POD es la red superpuesta para el clúster, que se implementa en la parte superior de la red de nodo actual. Está diseñado para permitir la conectividad a través de la cápsula.

Paso 5: Configurar su red POD

La implementación del clúster de red es un proceso altamente flexible dependiendo de sus necesidades y hay muchas opciones disponibles. Como queremos mantener nuestra instalación lo más simple posible, usaremos Tejido complemento que no requiere ninguna configuración o código adicional y proporciona una dirección IP por vaina que es excelente para nosotros. Si desea ver más opciones, consulte aquí.

Estos comandos serán importantes para obtener la configuración de la red POD.

# Exportar kubever = $ (versión kubectl | base64 | tr -d '\ n') # kubectl aplicar -f "https: // nube.tejido.obras/k8s/net?k8s-version = $ kubever " 
Configuración de la red de cápsula

Ahora, si verifica el estado de su nodo maestro, debería ser 'Listo'.

# kubectl obtener nodos 
Verifique el estado de los nodos maestros

A continuación, agregamos el nodos trabajadores al clúster.

Agregar nodos de trabajadores al clúster Kubernetes

Las siguientes instrucciones se realizarán en cada nodo de trabajador Al unirse al clúster de Kubernetes.

Paso 1: Prepare el nombre de host, el firewall y Selinux

Primero establece el nombre de host en tu Nodo trabajador-1 y trabajador-nodo-2, y luego agregue las entradas de host al /etc/huéspedes archivo.

# hostnamectl set-hostname 'node-1' # cat <> /etc /hosts 192.168.0.47 nodo maestro 192.168.0.48 nodo-1 trabajador-nodo-1 192.168.0.49 nodo-2 trabajador-nodo-2 EOF 

A continuación, ping tu nodo maestro de tu nodos trabajadores Para confirmar que su archivo de host actualizado funciona bien usando el comando ping.

# 192.168.0.47 

A continuación, deshabilitar Selinux y actualice sus reglas de firewall.

# setenforce 0 # sed -i --follow-Symlinks 'S/selinux = Enforcing/Selinux = Disabled/G'/etc/sysconfig/Selinux # firewall-cmd --Permanent --Add-Port = 6783/tcp # firewall-- CMD --Permanent --Add-Port = 10250/TCP # Firewall-CMD --Permanent --add-port = 10255/tcp # firewall-cmd --Permanent --add-puer = 30000-32767/tcp # firewall- CMD-Reload # echo '1'>/proc/sys/net/puente/puente-nf-llame-iptables 

Paso 2: Configurar Docker-Ce y Kubernetes Repo

Agregue el repositorio de Docker primero usando DNF config-manager.

# dnf config-manager --add-repo = https: // descargar.estibador.com/Linux/Centos/Docker-Ce.repositorio 

A continuación, agregue el contenedor.IO paquete.

# DNF Instalar https: // Descargar.estibador.com/linux/centos/7/x86_64/stable/paquetes/contenedord.IO-1.2.6-3.3.El7.x86_64.rpm 

Con estos dos paquetes instalados, instale la última versión de docker-ce.

# DNF Instalar Docker-CE 

Habilitar e iniciar el servicio Docker.

# SystemCTL Habilitar Docker # SystemCTL Start Docker 

Necesitarás agregar Kubernetes repositorios manualmente, ya que no vienen preinstalados en Centos 8.

# gato < /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg EOF 

Paso 3: Instale Kubeadm en Centos 8

Con el repositorio del paquete ahora listo, puede seguir adelante e instalar kubeadm.

# DNF Instalar kubeadm -y 

Iniciar y habilitar el servicio.

# SystemCTL Habilitar kubelet # systemctl start kubelet 

Paso 4: Únase al nodo del trabajador al clúster Kubernetes

Ahora requerimos la token que kubeadm init generado, para unirse al clúster. Puede copiarlo y pegarlo a su nodo-1 y nodo-2 Si lo hubieras copiado en alguna parte.

# kubeadm Únete 192.168.0.47: 6443 - -token nu06lu.XRSUX0SS0IXTNMS5-Descubrido-token-ca-cert-hash sha256: f996ea35r4353d342fdea2997a1cf8caeddafd6d4360d606dbc82314683478hjmf78 

Como se sugirió en la última línea, vuelva a su nodo maestro y verificar si trabajador nodo-1 y Nodo de trabajador-2 se han unido al clúster usando el siguiente comando.

# kubectl obtener nodos 
Verifique todos los nodos del estado en el clúster de Kubernetes

Si todos los pasos se ejecutan con éxito, entonces, debería ver nodo-1 y nodo-2 en estado listo en el nodo maestro. En este punto, ahora ha implementado con éxito un clúster de Kubernetes en Centos 8.

Leído recomendado: Cómo implementar Nginx en un clúster de Kubernetes

Algunas limitaciones

El clúster que hemos creado aquí tiene un solo Nodo maestro, y como tal, si el Nodo maestro falla, su clúster puede perder datos y puede necesitar ser recreado desde cero.

Por esta razón, recomiendo una configuración altamente disponible.