Table of Contents
Cómo instalar un clúster de Kubernetes en CentOS 8
El proceso de instalación de un Kubernetes Cluster. en CentOS 8. es casi similar al de CentOS 7. (por el que puede pasar aquí), pero el proceso aquí tiene algunos cambios. Estos cambios, en su mayoría, giran en torno a la instalación de Docker.
A partir de CentOS 8. (y por extensión RHEL 8. , docker. ahora ha sido reemplazado de forma nativa por podman. y buildah. que son herramientas de Redhat. De hecho, el paquete de la ventana acoplable ahora se ha eliminado del repositorio de paquetes predeterminado.
Con este movimiento, el equipo de Redhat. tiene como objetivo simplificar el proceso de creación y uso de contenedores., sin necesidad de permisos especiales, mientras que al mismo tiempo, mantiene la compatibilidad con las imágenes de la ventana acoplable y las opera sin necesidad de un demonio. Podman. promete ofrecer más flexibilidad cuando se ejecuta en entornos Kubernetes. pero el jurado permanece ahí.
Para este artículo, repasaremos el proceso de instalar Kubernetes. en una plataforma CentOS 8. que se ejecuta en Docker-CE. ( Community Edition. . En un artículo posterior, también realizaremos una instalación similar, utilizando podman. para nuestros contenedores.
Requisitos previos
- Tres servidores que ejecutan CentOS 8- 1 nodo maestro. y 2 nodos de trabajo.
- 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 depende en gran medida de las necesidades de la aplicación que desea ejecutar.
- Conectividad a Internet en todos sus nodos. Obtendremos paquetes de Kubernetes. y docker. del repositorio. Del mismo modo, deberá asegurarse de que el administrador de paquetes DNF esté instalado de forma predeterminada y pueda recuperar paquetes de forma remota.
- Todos sus nodos también deberían poder conectarse entre sí, ya sea en una red pública o privada, lo que esté disponible.
- También necesitará acceso a una cuenta con privilegios de root o sudo. En este tutorial, usaré mi cuenta raíz.
Precaución
La mayoría de los nodos generalmente vienen con direcciones MAC. únicas, sin embargo, en algunos casos únicos, algunos
freestar.config.enabled_slots.push ( LocationName: “tecmint_incontent”, slotId: “tecmint_incontent”);
Kubernetes. usa estos valores para identificar de forma única los nodos en el clúster. Si estos valores no son únicos para cada nodo, el proceso de instalación puede fallar.
Para verificar la dirección MAC de la interfaz de red y compararla.
# ip link
Para verificar product_uuid. y compare, ejecute el siguiente comando.
# cat/sys/class/dmi/id/product_uuid Arquitectura lógica
Nuestra instalación está diseñada para tener el Master-Node. controlando los Nodos de trabajo. 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 de kubectl).
Nuestro Clúster de Kubernetes. de 3 nodos se verá así:
Diagrama de clúster de Kubernetes
Instalación del clúster de Kubernetes en el nodo principal
Para que Kubernetes. funcione, deberá nordeste ed un motor de contenedorización. Como se mencionó, usaremos Docker-CE.
Las siguientes instituciones se realizarán en CentOS 8 Master-Node.
Paso 1: Prepare el nombre de host, el cortafuegos y SELinux
En su Nodo maestro de CentOS 8. configure el nombre de host del sistema y actualice el DNS en su archivo /etc/hosts.
# hostnamectl set-hostname master-node # cat <
A continuación, haga ping a su nodo-trabajador-1. y al nodo-trabajador-2. para comprobar si su archivo de host actualizado funciona correctamente mediante el comando ping.
# ping 192.168.0.48 # ping 192.168.0.49
A continuación, desactive Selinux. ya que esto es necesario para permitir que los contenedores accedan al sistema de archivos del host, que necesitan las redes de pod y otros servicios. .
# setenforce 0
Establecer setenforce. en 0 efectivamente establece SELinux en permissive, lo que efectivamente deshabilita SELinux hasta el próximo reinicio. Para deshabilitarlo completamente, use el siguiente comando y reinicie.
# sed-i–follow-symlinks ‘s/SELINUX = enforcing/SELINUX = disabled/g’/etc/sysconfig/selinux # reboot
Kubernetes hace uso de varios puertos para la comunicación y el acceso y estos puertos deben ser accesibles para Kubernetes y no estar limitados por el firewall.
Puertos de Kubernetes
Configure las reglas del firewall en los puertos.
# firewall-cmd–permanent–add-port = 6443/tcp # firewall-cmd–permanent–add-port = 2379-2380/tcp # firewall-cmd–permanent–add-port = 10250/tcp # firew all-cmd–permanent–add-port = 10251/tcp # firewall-cmd–permanent–add-port = 10252/tcp # firewall-cmd–permanent–add-port = 10255/tcp # firewall-cmd–reload # modprobe br_netfilter # echo ‘1’>/proc/sys/net/bridge/bridge-nf-call-iptables Paso 2: Instale Docker-CE en CentOS 8
Deberá agregar el Repositorio de Docker. primero, ya que ya no está en la lista de paquetes predeterminados usando el siguiente comando dnf config-manager.
# dnf config-manager–add-repo = https://download.docker.com/linux/centos/docker-ce.repo
También instale el paquete containerd.io. que está disponible como un demonio que administra el ciclo de vida completo del contenedor de su sistema host, desde la transferencia y el almacenamiento de imágenes hasta la ejecución y supervisión de contenedores, el almacenamiento de bajo nivel, los adjuntos de red y más.
# dnf install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm
Ahora instale la última versión de un paquete docker-ce.
# dnf install docker-ce
Ahora puede habilitar e iniciar el servicio docker.
# systemctl enable docker # systemctl start docker Step 3: Instale Kubernetes (Kubeadm) en CentOS 8
A continuación, deberá agregar los repositorios de Kubernetes. manualmente, ya que no vienen instalados de forma predeterminada en CentOS 8.
# cat <
Kubeadm. lo ayuda a iniciar un clúster de Kubernetes viable mínimo que se ajuste 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 administración de bootstrap tokens. Kubeadm también es fácil de integrar con otras herramientas de orquestación como Ansible. y Terraform.
Con el repositorio de paquetes ahora listo, puede continuar e instalar kubeadm.
# dnf install kubeadm-y
Cuando la instalación se complete correctamente, habilite e inicie el servicio.
# systemctl enable kubelet # systemctl start kubelet Paso 4: Crear 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 realizará una serie de comprobaciones previas para garantizar que la máquina esté lista para ejecutar Kubernetes. Estas comprobaciones previas exponen advertencias y finalizan en caso de errores. kubeadm init. luego descarga e instala los componentes del plano de control del clúster.
Ahora es el momento de inicializar el maestro de Kubernetes, pero antes de eso, debe deshabilitar el intercambio para ejecutar “ comando kubeadm init. “.
# swapoff-a
La inicialización de Kubernetes. master es un proceso completamente automatizado que está controlado por el comando “ kubeadm init. como se muestra.
# kubeadm init
Inicializar Kubernetes Master
A continuación, copie el siguiente comando y guárdelo en algún lugar, según sea necesario para ejecutar este comando en los nodos de trabajo más tarde.
kubeadm join 192.168.0.47:6443–token nu06lu.xrsux0ss0ixtnms5 \–discovery-token-ca-cert-hash ha256: f996ea35r4353d342fdea2997a1cf8caeddafd6d6d783 color: red; “> Sugerencia. A veces, el comando anterior puede arrojar errores sobre los argumentos pasados, por lo que para evitar errores, debe eliminar el carácter ‘\’ y su comando final se verá así.
# kubeadm join 192.168.0.47:6443–token nu06lu.xrsux0ss0ixtnms5 –discovery token-ca-cert-hash sha256: f996ea35r4353d342fdea2997a1cf8caeddafd6d4360d606dbc823ddafd6d4360d606dbc8231468734tesh
ong> inicializado correctamente, debe permitir que su usuario comience a utilizar el clúster. En nuestro escenario, usaremos el usuario root. También puede iniciar el clúster usando sudo user como se muestra.
Para usar root. ejecute:
# mkdir-p $ HOME/.kube # cp-i/etc/kubernetes/admin.conf $ HOME/.kube/config # chown $ (id-u): $ (id-g) $ HOME/.kube/config
Para usar un usuario habilitado para sudo. ejecute:
$ mkdir-p $ HOME/.kube $ sudo cp-i/etc/kubernetes/admin.conf $ HOME/.kube/config $ sudo chown $ (id-u): $ ( id-g) $ HOME/.kube/config
Ahora confirme que el comando kubectl. está activado.
# kubectl get nodos
Verificar el estado de los nodos
En este momento, verá que el estado del nodo principal es ‘ NotReady. . Esto se debe a que todavía tenemos que implementar la red de pod en el clúster.
La red de pod es la red superpuesta para el clúster, que se implementa sobre la red de nodos actual. Está diseñado para permitir la conectividad a través del pod.
Paso 5: Configure su red de pod
La implementación del clúster de red es un proceso muy flexible según sus necesidades y hay muchas opciones disponibles. Como queremos que nuestra instalación sea lo más simple posible, usaremos el complemento Weavenet. que no requiere ninguna configuración ni código adicional y proporciona una dirección IP por pod, lo cual es genial para nosotros. Si desea ver más opciones, marque aquí.
Estos comandos serán importantes para configurar la red del pod.
# export kubever = $ (kubectl version | base64 | tr-d ‘\ n’) # kubectl apply-f “https://cloud.weave.works/k8s/net?k8s-version=$kubever”
Configurar la red de pods
Ahora, si verifica el estado de su nodo principal, debería ser ‘ Listo. ‘.
# kubectl obtener nodos
Verificar el estado de los nodos maestros
A continuación, agregamos los nodos trabajadores. al clúster.
Agregar nodos trabajadores a Kubernetes Clúster
Las siguientes instrucciones se llevarán a cabo en cada nodo trabajador. al unirse al clúster de Kubernetes.
Paso 1: Prepare el nombre de host, el firewall y SELinux
Primer conjunto el nombre de host en su worker-node-1. y worker-node-2. y luego agregue las entradas de host al archivo /etc/hosts. .
# hostnamectl set-hostname ‘node-1’ # cat <
A continuación, haga ping a su nodo maestro. de sus nodos de trabajo. para confirmar que su archivo de host actualizado está funcionando bien usando el comando ping.
# 192.168.0.47
A continuación, deshabilite 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-port = 30000-32767/tcp # firewall-cmd–reload # echo ‘1’>/proc/sys/net/bridge/bridge-nf-call-iptables Paso 2: Configure Docker-CE y Repositorio de Kubernetes
Agregue el repositorio de Docker primero usando DNF config-manager.
# dnf config-manager–add-repo = https://download.docker.com/linux/centos/docker-ce.repo
A continuación, agregue el paquete containerd.io.
# dnf install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd. io-1.2.6-3.3.el7.x86_64.rpm
Con estos dos paquetes instalados, instale la última versión de docker-ce.
# dnf install docker-ce
Habilite e inicie el docker service.
# systemctl enable docker # systemctl start docker
Deberá agregar repositorios de Kubernetes. manualmente ya que no vienen preinstalados en CentOS 8. .
# cat <
Con el repositorio de paquetes listo, puede continuar e instalar kubeadm.
# dnf install kubeadm-y
Inicie y habilite el servicio.
# systemctl enable kubelet # systemctl start kubelet Paso 4: Unir el nodo trabajador al clúster de Kubernetes
Ahora necesitamos el token que generó kubeadm init. para unirse al clúster. Puede copiarlo y pegarlo en su nodo-1. y nodo-2. si lo ha copiado en alguna parte.
# kubeadm join 192.168.0.47:6443-token nu06lu.xrsux0ss0ixtnms5–discovery-token-ca-cert-hash sha256: f996ea35r4353d342fdea2997a1cf8caeddafd6d4360d606dbc82314683478hjmf78
Como se sugirió en la última línea de nodo de trabajo, vuelva a su nodo maestro. y verifique-1. y nodo trabajador-2. se han unido al clúster mediante el siguiente comando.
# kubectl get nodes
Comprobar el estado de todos los nodos en el clúster de Kubernetes
Si todos los pasos se ejecutan correctamente, debería ver nodo-1. y nodo-2. en estado listo en el nodo principal. En este punto, ha implementado con éxito un clúster de Kubernetes en CentOS 8.
Lectura recomendada. Cómo implementar Nginx en un clúster de Kubernetes
Algunas limitaciones
El clúster que hemos creado aquí tiene un solo nodo principal. y, como tal, si el nodo principal. falla, su clúster puede perder datos y necesitan ser recreados desde cero.
Por esta razón, recomiendo una configuración de alta disponibilidad.