Introducción
Pequeños entornos virtuales, llamados contenedores , se han vuelto indispensables para desarrollar y administrar aplicaciones.
Trabajar en aplicaciones dentro de un contenedor aislado no afecta el sistema operativo host. Los contenedores son más eficientes que las máquinas virtuales ya que no necesitan su sistema operativo.
Kubernetes es una plataforma de código abierto que lo ayuda a implementar, escalar y administrar recursos en varios contenedores.
Siga este tutorial y aprenda a instalar Kubernetes en un sistema CentOS 7.
Requisitos previos
- Múltiples servidores Linux que ejecutan CentOS 7 (1 nodo principal, múltiples nodos de trabajo)
- Una cuenta de usuario en cada sistema con sudo o privilegios de root
- El mmm administrador de paquetes, incluido por defecto
- Línea de comando/ventana de terminal
Pasos para instalar Kubernetes en CentOS 7
Para usar Kubernetes, debe instalar un motor de contenedorización . Actualmente, la solución de contenedor más popular es Docker . Docker debe instalarse en CentOS, ambos en el Nodo Maestro y los Nodos Trabajadores.
Paso 1:configurar el repositorio de Kubernetes
Los paquetes de Kubernetes no están disponibles en los repositorios oficiales de CentOS 7. Este paso debe realizarse en el nodo maestro y en cada nodo trabajador que planee utilizar para la configuración de su contenedor. Ingrese el siguiente comando para recuperar los repositorios de Kubernetes.
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 2:Instalar kubelet , kubeadm y kubectl
Estos 3 paquetes básicos son necesarios para poder usar Kubernetes. Instale los siguientes paquetes en cada nodo:
sudo yum install -y kubelet kubeadm kubectl
systemctl enable kubelet
systemctl start kubelet
Ahora ha instalado correctamente Kubernetes, incluidas sus herramientas y paquetes básicos.
Antes de implementar un clúster, asegúrese de establecer nombres de host, configurar el firewall y la configuración del kernel.
Paso 3:establecer el nombre de host en los nodos
Para dar un nombre de host único a cada uno de sus nodos, use este comando:
sudo hostnamectl set-hostname master-node
o
sudo hostnamectl set-hostname worker-node1
En este ejemplo, el nodo maestro ahora se llama nodo maestro, mientras que un nodo trabajador se llama nodo trabajador 1.
Cree una entrada de host o un registro DNS para resolver el nombre de host de todos los nodos:
sudo vi /etc/hosts
Con la entrada:
192.168.1.10 master.phoenixnap.com master-node
192.168.1.20 node1. phoenixnap.com node1 worker-node
Paso 4:configurar el cortafuegos
Los nodos, contenedores y pods deben poder comunicarse a través del clúster para realizar sus funciones. Firewalld está habilitado en CentOS de forma predeterminada en el front-end. Agregue los siguientes puertos ingresando los comandos enumerados.
En el nodo maestro ingrese:
sudo firewall-cmd --permanent --add-port=6443/tcp
sudo firewall-cmd --permanent --add-port=2379-2380/tcp
sudo firewall-cmd --permanent --add-port=10250/tcp
sudo firewall-cmd --permanent --add-port=10251/tcp
sudo firewall-cmd --permanent --add-port=10252/tcp
sudo firewall-cmd --permanent --add-port=10255/tcp
sudo firewall-cmd --reload
Cada vez que se agrega un puerto, el sistema lo confirma con un mensaje de "éxito".
Introduzca los siguientes comandos en cada nodo trabajador:
sudo firewall-cmd --permanent --add-port=10251/tcp
sudo firewall-cmd --permanent --add-port=10255/tcp
firewall-cmd --reload
Paso 5:actualice la configuración de Iptables
Configure net.bridge.bridge-nf-call-iptables
a '1' en su archivo de configuración sysctl. Esto garantiza que las tablas de IP procesen correctamente los paquetes durante el filtrado y el reenvío de puertos.
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system
Paso 6:Deshabilitar SELinux
Los contenedores necesitan acceder al sistema de archivos del host. SELinux debe configurarse en modo permisivo, lo que deshabilita efectivamente sus funciones de seguridad.
Use los siguientes comandos para deshabilitar SELinux:
sudo setenforce 0
sudo sed -i ‘s/^SELINUX=enforcing$/SELINUX=permissive/’ /etc/selinux/config
Paso 7:deshabilitar SWAP
Por último, debemos deshabilitar SWAP para permitir que el kubelet funcione correctamente:
sudo sed -i '/swap/d' /etc/fstab
sudo swapoff -a
Cómo implementar un clúster de Kubernetes
Paso 1:crear un clúster con kubeadm
Inicialice un clúster ejecutando el siguiente comando:
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
El proceso puede tardar varios minutos en completarse según la velocidad de la red. Una vez que finaliza este comando, muestra un mensaje de unión de kubeadm. Tome nota de la entrada y utilícela para unir nodos trabajadores al clúster en una etapa posterior.
Paso 2:Administrar el clúster como usuario normal
Para comenzar a usar el clúster, debe ejecutarlo como un usuario normal escribiendo:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Paso 3:configurar la red de pods
Una red de pods permite que los nodos dentro del clúster se comuniquen. Hay varias opciones de red de Kubernetes disponibles. Utilice el siguiente comando para instalar la franela Complemento de red de pod:
sudo kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
Si decide usar flannel, edite las reglas de su cortafuegos para permitir el tráfico para el puerto predeterminado de flannel 8285 .
Paso 4:Comprobar el estado del clúster
Verifique el estado de los nodos ingresando el siguiente comando en el servidor maestro:
sudo kubectl get nodes
Una vez que se ha instalado una red de pod, puede confirmar que funciona comprobando que el pod de CoreDNS se está ejecutando escribiendo:
sudo kubectl get pods --all-namespaces
Paso 5:unir el nodo trabajador al clúster
Como se indica en el Paso 1 , puede usar kubeadm join
comando en cada nodo trabajador para conectarlo al clúster.
kubeadm join --discovery-token cfgrty.1234567890jyrfgd --discovery-token-ca-cert-hash sha256:1234..cdef 1.2.3.4:6443
Reemplace los códigos con los de su servidor maestro. Repita esta acción para cada nodo trabajador en su clúster.