Donado por Google a la comunidad Opensource, Kubernetes se ha convertido ahora en la herramienta de administración de contenedores preferida. Puede administrar y orquestar no solo los tiempos de ejecución de Docker, sino también los tiempos de ejecución de Containers y <strong>Rkt</strong> .
Un clúster de Kubernetes típico generalmente tendría un nodo maestro y varios nodos trabajadores o Minions. Luego, los nodos de trabajo 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 esto, puede usar Minikube , que es una herramienta que ejecuta un clúster de Kubernetes de un solo nodo en una máquina virtual en 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 de Kubernetes de varios nodos en CentOS 7 Linux. Este tutorial se basa en la línea de comandos, por lo que necesitará acceder a la ventana de su terminal.
Prerrequisitos
- Varios servidores ejecutando Centos 7 ( 1 nodo maestro , 2 nodos de trabajo ). Se recomienda que su nodo maestro tenga al menos 2 CPU, aunque este no es un requisito estricto.
- Conectividad a Internet en todos sus nodos. Vamos a ir a buscar Kubernetes y ventana acoplable paquetes 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.
- También necesitará acceso a una cuenta con privilegios de root o sudo. En este tutorial, usaré mi cuenta de root.
Nuestro clúster de 3 nodos se verá así:
Diagrama de clúster de Kubernetes
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: Prepare el nombre de host, el cortafuegos y SELinux
En su nodo principal, 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 de host actualizado está bien usando el comando ping.
# ping 10.128.0.29 # ping 10.128.0.30
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 # 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 ahora listo, puede continuar e instalar los paquetes kubeadm y docker .
# yum install kubeadm docker -y
Cuando la instalación se complete correctamente, habilite e inicie ambos servicios.
# systemctl enable kubelet # systemctl start kubelet # systemctl enable docker # systemctl start docker
Paso 4: inicializar Kubernetes Master y configurar el usuario predeterminado
Ahora estamos listos para inicializar kubernetes master, pero antes necesita deshabilitar el intercambio para ejecutar el comando ” <strong>kubeadm init</strong> “.
# swapoff -a
La inicialización del maestro de Kubernetes es un proceso totalmente automatizado que se administra mediante el comando ” <strong>kubeadm init</strong> ” que ejecutará.
# kubeadm init
Inicializar Kubernetes Master
Es posible que desee copiar la última línea y guardarla en algún lugar porque deberá 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 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 usar el clúster. En nuestro caso, queremos ejecutar esta instalación como usuario root , por lo tanto, seguiremos adelante 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 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 verifique si el comando kubectl está activado.
# kubectl get nodes
Verificar el estado de los nodos
En este punto, también notará que el estado del nodo maestro es ‘ NotReady ‘. Esto se debe a que aún no hemos implementado la red de pod en el clúster.
La red de pod es la red superpuesta para el clúster, que se implementa en la parte superior de la red de nodos actual. Está diseñado para permitir la conectividad a través del módulo.
Paso 5: configura tu 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 mantener nuestra instalación lo más simple posible, usaremos el complemento <strong>Weavenet</strong> 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 de pod
Ahora, si verifica el estado de su nodo maestro , debería estar ‘ Listo ‘.
# kubectl get nodes
Verificar el estado de los nodos maestros
A continuación, agregamos los nodos trabajadores al clúster.
Configuración de nodos de trabajo 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 de Kubernetes .
Paso 1: Prepare el nombre de host, el cortafuegos y SELinux
En su worker-node-1 y worker-node-2 , configure el nombre de host y, en caso de que no tenga un servidor DNS, actualice también sus nodos maestro y trabajador 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 nodo maestro para probar si su archivo de host actualizado está bien.
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
Establezca las siguientes reglas de firewall en los puertos. Asegúrese de que todos los comandos firewall-cmd devuelvan correctamente.
# 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 ahora 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: Únase al 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 algún lugar.
# kubeadm join 10.128.0.27:6443 --token nu06lu.xrsux0ss0ixtnms5 --discovery-token-ca-cert-hash sha256:f996ea3564e6a07fdea2997a1cf8caeddafd6d4360d606dbc82314688425cd41
Unir nodos al clúster de Kubernets
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
Verificar 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 principal .
Lectura recomendada : Cómo implementar Nginx en un clúster de Kubernetes
En este punto, hemos completado con éxito una instalación de un clúster de Kubernetes en Centos 7 y hemos <strong>incorporado</strong> con éxito dos nodos de trabajo . Ahora puede comenzar a crear sus pods e implementar sus servicios.
CentOS , Kubernetes