LinuxParty
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 Docker ahora se ha eliminado del repositorio de paquetes predeterminado.
Con este movimiento, el equipo de Redhat pretende simplificar el proceso de creación y uso de contenedores, sin necesidad de permisos especiales, y al mismo tiempo, mantener la compatibilidad con las imágenes de Docker y operarlas sin necesidad de un demonio. Podman promete ofrecer más flexibilidad cuando se ejecuta en entornos Kubernetes , pero la decisión aún no ha llegado.
Para este artículo, repasaremos el proceso de instalación de Kubernetes en una plataforma CentOS 8 , ejecutándose en Docker-CE ( Community Edition ). En un artículo posterior, también realizaremos una instalación similar, usando podman para nuestros contenedores.
Requisitos previos
- Tres servidores que ejecutan CentOS 8 : 1 nodo maestro y 2 nodos trabajadores .
- 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 tus nodos. Recuperaremos 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, la que esté disponible.
- También necesitará acceso a una cuenta con privilegios sudo o root. 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, algunas máquinas virtuales pueden tener direcciones MAC idénticas. Por lo tanto, se recomienda confirmar que Product_UUID y la dirección MAC no son idénticas en ninguno de los nodos.
Kubernetes utiliza estos valores para identificar de forma única los nodos del 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 comparar, ejecute el siguiente comando.
# cat /sys/class/dmi/id/product_uuid
Arquitectura lógica
Nuestra instalación está diseñada para que el Master-Node controle los Worker Nodes . Al final de esta instalación, nuestra arquitectura lógica se verá así.
Nodo maestro : esta máquina generalmente actúa como 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 Kubernetes de 3 nodos se verá así:
Diagrama del clúster de Kubernetes
Instalación de Kubernetes Cluster en Master-Node
Para que Kubernetes funcione, necesitará un motor de contenedorización. Como se mencionó, usaremos Docker-CE .
Las siguientes instituciones se realizarán en CentOS 8 Master-Node .
Paso 1: preparar el nombre de host, el firewall y SELinux
En su CentOS 8 Master-Node , configure el nombre de host del sistema y actualice DNS en su archivo /etc/hosts .
# hostnamectl set-hostname master-node # cat <<EOF>> /etc/hosts 192.168.0.47 master-node 192.168.0.48 node-1 worker-node-1 192.168.0.49 node-2 worker-node-2 EOF
A continuación, haga ping a su nodo-trabajador-1 y nodo-2 para verificar si su archivo host actualizado funciona correctamente usando el comando ping .
# ping 192.168.0.48 # ping 192.168.0.49
A continuación, deshabilite Selinux , ya que esto es necesario para permitir que los contenedores accedan al sistema de archivos del host, que es necesario para las redes de pods y otros servicios.
# setenforce 0
Configurar setenforce en 0
configura efectivamente SELinux como permisivo, lo que efectivamente desactiva SELinux hasta el próximo reinicio. Para desactivarlo por completo, utilice el siguiente comando y reinicie.
# sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux # reboot
Kubernetes utiliza 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 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 # firewall-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
Primero deberá agregar el repositorio de Docker , 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
Instale también el paquete containerd.io , que está disponible como un demonio que gestiona 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 del contenedor, el almacenamiento de bajo nivel, los archivos 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
Paso 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 <<EOF > /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 le ayuda a iniciar un clúster de Kubernetes mínimo viable que se ajuste a las mejores prácticas. Con kubeadm , su clúster debería 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 tokens de arranque. Kubeadm también se integra fácilmente con otras herramientas de orquestación como Ansible y Terraform .
Con el repositorio de paquetes listo, puede continuar e instalar el paquete kubeadm .
# dnf install kubeadm -y
Cuando la instalación se complete exitosamente, habilite e inicie el servicio.
# systemctl enable kubelet # systemctl start kubelet
Paso 4: crear un plano de control maestro con kubeadm
El maestro de Kubernetes, que actúa como plano de control del 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 salen 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 poder ejecutar el comando " kubeadm init ".
# swapoff -a
La inicialización de Kubernetes master es un proceso completamente automatizado que se controla mediante 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, ya que necesitábamos ejecutar este comando en los nodos trabajadores más adelante.
kubeadm join 192.168.0.47:6443 --token nu06lu.xrsux0ss0ixtnms5 \ --discovery-token-ca-cert-hash ha256:f996ea35r4353d342fdea2997a1cf8caeddafd6d4360d606dbc82314683478hjmf7
Consejo : a veces, el comando anterior puede generar 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:f996ea35r4353d342fdea2997a1cf8caeddafd6d4360d606dbc82314683478hjmf7
Una vez que Kubernetes se inicializó exitosamente, debe permitir que su usuario comience a usar el clúster. En nuestro escenario, usaremos el usuario root. También puede iniciar el clúster usando sudo usuario 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 utilizar 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 nodes
Verificar el estado de los nodos
En este momento, verá que el estado del nodo maestro es " No listo ". Esto se debe a que aún tenemos que implementar la red de pods en el clúster.
La red 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 módulo.
Paso 5: configure su red 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 mantener nuestra instalación 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 excelente para nosotros. Si desea ver más opciones, consulte 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 del módulo
Ahora, si verifica el estado de su nodo maestro, debería ser " Listo ".
# kubectl get nodes
Verificar el estado de los nodos maestros
A continuación, agregamos los nodos trabajadores al clúster.
Agregar nodos trabajadores al clúster de Kubernetes
Las siguientes instrucciones se realizarán en cada nodo trabajador al unirse al clúster de Kubernetes.
Paso 1: preparar el nombre de host, el firewall y SELinux
Primero configure el nombre de host en su nodo-trabajador-1 y nodo-2 , y luego agregue las entradas del host al archivo /etc/hosts .
# hostnamectl set-hostname 'node-1' # cat <<EOF>> /etc/hosts 192.168.0.47 master-node 192.168.0.48 node-1 worker-node-1 192.168.0.49 node-2 worker-node-2 EOF
A continuación, haga ping a su nodo maestro desde sus nodos trabajadores para confirmar que su archivo host actualizado esté funcionando bien usando el comando ping.
# 192.168.0.47
A continuación, desactive SElinux y actualice las reglas de su 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: Configurar Docker-CE y Kubernetes Repo
Primero agregue el repositorio de Docker 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 servicio Docker.
# systemctl enable docker # systemctl start docker
Deberá agregar los repositorios de Kubernetes manualmente, ya que no vienen preinstalados en CentOS 8 .
# cat <<EOF > /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 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 requerimos 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 sugiere en la última línea, regrese a su nodo maestro y verifique si el nodo trabajador 1 y el nodo trabajador 2 se han unido al clúster usando el siguiente comando.
# kubectl get nodes
Verifique el estado de todos los nodos en el clúster de Kubernetes
Si todos los pasos se ejecutan correctamente, debería ver el nodo-1 y el nodo-2 en estado listo en el nodo maestro . En este punto, ya ha implementado con éxito un clúster de Kubernetes en CentOS 8 .
Algunas limitaciones
El clúster que hemos creado aquí tiene un único nodo maestro y, como tal, si el nodo maestro falla, su clúster puede perder datos y es posible que sea necesario volver a crearlo desde cero.
Por este motivo, recomiendo una configuración de alta disponibilidad.
-
Artículos
- La versión candidata a la versión GIMP 3.0 ya está disponible para pruebas públicas
- Cómo ejecutar aplicaciones Android en Linux
- Cómo formatear discos en Linux desde la línea de comandos
- Cuarenta y tres monos escapan de un laboratorio de investigación en Estados Unidos
- Intel observa una mejora del rendimiento del 3888,9 % en el kernel de Linux: a partir de una línea de código
- Cómo crear un túnel SSH en Linux
- Cómo configurar el firewall UFW en Ubuntu en 5 minutos
- Linux Lite acaba de incorporar una útil función de inteligencia artificial para el escritorio, y es más sutil de lo que cree
- Cómo instalar Linux en una unidad USB y ejecutarlo en cualquier PC
- Phoca Desktop System Plugin 4.0.5 publicado
- Herramientas de IA para Traducciones Precisas y Naturales: Cómo Optimizar el Proceso
- 6 características que desearía que MacOS copiara de Linux
- Malware en Android: VPN y Apps Peligrosas en Play Store
- Probar el micrófono en Linux usando terminal o shell
- ¿Qué es peor que atrasar el reloj una hora? El horario de verano permanente