Búsqueda de sitios web

Cómo instalar un clúster de Kubernetes en CentOS 7


Donado por Google a la comunidad Opensource, Kubernetes se ha convertido ahora en la herramienta de gestión de contenedores preferida. Puede gestionar y orquestar no solo tiempos de ejecución de Docker sino también tiempos de ejecución de contenedores y Rkt.

Un clúster típico de Kubernetes generalmente tendría un nodo maestro y varios nodos trabajadores o Minions. Luego, los nodos trabajadores se administran desde el nodo maestro, lo que garantiza que el clúster se administre desde un punto central.

También es importante mencionar que también puede implementar un clúster de Kubernetes de un solo nodo, que generalmente se recomienda para cargas de trabajo muy livianas que no son de producción. Para ello, puede utilizar Minikube, que es una herramienta que ejecuta un clúster de Kubernetes de un solo nodo en una máquina virtual de su nodo.

Lectura recomendada: Cómo instalar un clúster de Kubernetes en CentOS 8

Para este tutorial, recorreremos una instalación de clúster Kubernetes de múltiples nodos en CentOS 7 Linux. Este tutorial se basa en la línea de comandos, por lo que necesitará acceso a la ventana de su terminal.

Requisitos previos

  1. Varios servidores ejecutando Centos 7 (1 nodo maestro, 2 nodos trabajadores). Se recomienda que su Master Node tenga al menos 2 CPU, aunque este no es un requisito estricto.
  2. Conectividad a Internet en todos tus nodos. Recuperaremos los paquetes Kubernetes y docker del repositorio. Del mismo modo, deberá asegurarse de que el administrador de paquetes yum esté instalado de forma predeterminada y pueda recuperar paquetes de forma remota.
  3. También necesitará acceso a una cuenta con privilegios sudo o root. En este tutorial, usaré mi cuenta raíz.

Nuestro clúster de 3 nodos se verá así:

Instalación de Kubernetes Cluster en Master-Node

Para que Kubernetes funcione, necesitará un motor de contenedorización. Para esta instalación usaremos docker ya que es el más popular.

Los siguientes pasos se ejecutarán en el Master-Node.

Paso 1: preparar el nombre de host, el firewall y SELinux

En su nodo maestro, configure el nombre de host y, si no tiene un servidor DNS, actualice también su archivo /etc/hosts.

hostnamectl set-hostname master-node
cat <<EOF>> /etc/hosts
10.128.0.27 master-node
10.128.0.29 node-1 worker-node-1
10.128.0.30 node-2 worker-node-2
EOF

Puede hacer ping a worker-node-1 y worker-node-2 para probar si su archivo host actualizado está bien usando el comando ping.

ping 10.128.0.29
ping 10.128.0.30

A continuación, deshabilite SElinux y actualice las reglas de su firewall.

setenforce 0
sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
reboot

Establezca las siguientes reglas de firewall en los puertos. Asegúrese de que cada comando firewall-cmd devuelva un éxito.

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: configurar el repositorio de Kubernetes

Deberá agregar los repositorios de Kubernetes manualmente, ya que no vienen instalados de forma predeterminada en CentOS 7.

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 y Docker

Con el repositorio de paquetes listo, puede continuar e instalar los paquetes kubeadm y docker.

yum install kubeadm docker -y 

Cuando la instalación se complete exitosamente, habilite e inicie ambos servicios.

systemctl enable kubelet
systemctl start kubelet
systemctl enable docker
systemctl start docker

Paso 4: Inicialice Kubernetes Master y configure el usuario predeterminado

Ahora estamos listos para inicializar Kubernetes Master, pero antes de eso debes deshabilitar el intercambio para poder ejecutar el comando “kubeadm init”.

swapoff -a

La inicialización de Kubernetes master es un proceso totalmente automatizado que se gestiona mediante el comando "kubeadm init" que ejecutará.

kubeadm init

Es posible que desees copiar la última línea y guardarla en algún lugar porque necesitarás ejecutarla en los nodos trabajadores.

kubeadm join 10.128.0.27:6443 --token nu06lu.xrsux0ss0ixtnms5  \ --discovery-token-ca-cert-hash sha256:f996ea3564e6a07fdea2997a1cf8caeddafd6d4360d606dbc82314688425cd41 

Consejo: A veces, este comando puede quejarse de los argumentos (args) pasados, así que edítelo para evitar cualquier problema. errores. Por lo tanto, eliminará el carácter ‘\’ que acompaña al --token y su comando final se verá así.

kubeadm join 10.128.0.27:6443 --token nu06lu.xrsux0ss0ixtnms5  --discovery-token-ca-cert-hash sha256:f996ea3564e6a07fdea2997a1cf8caeddafd6d4360d606dbc82314688425cd41

Una vez que haya inicializado Kubernetes correctamente, deberá permitir que su usuario comience a utilizar el clúster. En nuestro caso, queremos ejecutar esta instalación como usuario root, por lo tanto, continuaremos y ejecutaremos estos comandos como root. Puede cambiar a un usuario habilitado para sudo que prefiera y ejecutar lo siguiente usando sudo.

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 verifique si el comando kubectl está activado.

kubectl get nodes

En este punto, también notará que el estado del nodo maestro es "No listo". Esto se debe a que aún tenemos que implementar la red pod 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"

Ahora, si verificas el estado de tu nodo maestro, debería ser "Listo".

kubectl get nodes

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

Configuración de nodos trabajadores para unirse al clúster de Kubernetes

Los siguientes pasos se ejecutarán en los nodos trabajadores. Estos pasos deben ejecutarse en cada nodo trabajador al unirse al clúster Kubernetes.

Paso 1: preparar el nombre de host, el firewall y SELinux

En su nodo-trabajador-1 y nodo-trabajador-2, configure el nombre de host y, en caso de que no tenga un servidor DNS, actualice también su servidor maestro y trabajador. nodos en el archivo /etc/hosts.

hostnamectl set-hostname 'node-1'
cat <<EOF>> /etc/hosts
10.128.0.27 master-node
10.128.0.29 node-1 worker-node-1
10.128.0.30 node-2 worker-node-2
EOF

Puede hacer ping al master-node para probar si su archivo host actualizado está bien.

A continuación, deshabilite SElinux y actualice las reglas de su firewall.

setenforce 0
sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux

Establezca las siguientes reglas de firewall en los puertos. Asegúrese de que todos los comandos firewall-cmd sean exitosos.

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 el repositorio de Kubernetes

Deberá agregar los repositorios de Kubernetes manualmente, ya que no vienen preinstalados en CentOS 7.

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 y Docker

Con el repositorio de paquetes listo, puede continuar e instalar los paquetes kubeadm y docker.

yum install kubeadm docker -y 

Inicie y habilite ambos servicios.

systemctl enable docker
systemctl start docker
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. Puedes copiarlo y pegarlo en tu nodo-1 y nodo-2 si lo has copiado en alguna parte.

kubeadm join 10.128.0.27:6443 --token nu06lu.xrsux0ss0ixtnms5  --discovery-token-ca-cert-hash sha256:f996ea3564e6a07fdea2997a1cf8caeddafd6d4360d606dbc82314688425cd41 

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

Si todos los pasos se ejecutan correctamente, debería ver nodo-1 y nodo-2 en estado listo en el nodo maestro.

Lectura recomendada: Cómo implementar Nginx en un clúster de Kubernetes

En este punto, hemos completado con éxito la instalación de un clúster Kubernetes en Centos 7 y hemos incorporado con éxito dos nodos trabajadores. Ahora puede comenzar a crear sus pods e implementar sus servicios.