meta data de esta página
Diferencias
Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
| virtualizacion:kubernetes:instalacion [262021/02/ 09:00] – [Problemas] lc | virtualizacion:kubernetes:instalacion [182023/01/ 13:37] (actual) – editor externo 127.0.0.1 | ||
|---|---|---|---|
| Línea 1: | Línea 1: | ||
| + | {{tag> | ||
| + | ===== Instalación de Kubernetes en Centos 7 ===== | ||
| + | La Wikipedida define [[https:// | ||
| + | A esta clase de software se la conoce como orquestadores, | ||
| + | |||
| + | Vamos a crear un cluster con almenos tres nodos , 1 manager y 2 workers (utilizar siempre un número impar de nodos) con unos requisitos mínimos de 2vCPUs y 2 GB de memoria por cada nodo. | ||
| + | |||
| + | Además necesitaremos conectividad de red entre todos los nodos | ||
| + | |||
| + | ==== Pasos previos ==== | ||
| + | Vamos a realizar los siguientes pasos tanto en el manager como en el resto de nodos | ||
| + | Lo primero será deshabilitar la swap | ||
| + | * temporalmente (hasta que reiniciemos )con el comando **swapoff -a ** | ||
| + | * Definitivamente editando el fichero /etc/fstab y comentando la línea de la partición del swap | ||
| + | * Permitimos a iptable ver el trafico en modo bridge | ||
| + | < | ||
| + | net.bridge.bridge-nf-call-ip6tables = 1 | ||
| + | net.bridge.bridge-nf-call-iptables = 1 | ||
| + | EOF</ | ||
| + | |||
| + | y aplicamos los cambios con < | ||
| + | * deshabilitamos [[linux: | ||
| + | sudo sed -i ' | ||
| + | ==== Instalamos Docker ==== | ||
| + | * instalamos los requisitos para instalar docker < | ||
| + | * añadimos el repositorio e instalamos docker < | ||
| + | < | ||
| + | < | ||
| + | * Creamos el directorio /etc/docker < | ||
| + | * Declaramos el demonio para docker < | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | }, | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | ] | ||
| + | } | ||
| + | EOF</ | ||
| + | * creamos el directorio del servicio < | ||
| + | * Recargamos < | ||
| + | * Lo ponemos para que arranque al inicio < | ||
| + | < | ||
| + | ==== Instalación de Kubernetes ==== | ||
| + | === Pasos a realizar en todos los nodos (incluido el manager) === | ||
| + | < | ||
| + | [kubernetes] | ||
| + | name=Kubernetes | ||
| + | baseurl=https:// | ||
| + | enabled=1 | ||
| + | gpgcheck=1 | ||
| + | repo_gpgcheck=1 | ||
| + | gpgkey=https:// | ||
| + | EOF | ||
| + | </ | ||
| + | |||
| + | Instalamos los paquetes | ||
| + | < | ||
| + | yum install -y kubelet kubeadm kubectl</ | ||
| + | <note warning> | ||
| + | * Lo ponemos para que arranque al inicio | ||
| + | < | ||
| + | |||
| + | Comprobamos que kubernetes y docker están en el mismo grupo de control ( cgroup) | ||
| + | |||
| + | Para verificar el cgroup de docker < | ||
| + | |||
| + | Para añadir kubernetes al mismo cgroup < | ||
| + | < | ||
| + | < | ||
| + | |||
| + | |||
| + | |||
| + | Reiniciamos los servicios < | ||
| + | systemctl restart kubelet</ | ||
| + | |||
| + | === Pasos a realizar sólo en el Manager === | ||
| + | Como el Firewalld está habilitado en CentOS de manera predeterminada, | ||
| + | <sxh> | ||
| + | firewall-cmd --permanent --add-port=6443/ | ||
| + | firewall-cmd --permanent --add-port=2379-2380/ | ||
| + | firewall-cmd --permanent --add-port=10250/ | ||
| + | firewall-cmd --permanent --add-port=10251/ | ||
| + | firewall-cmd --permanent --add-port=10252/ | ||
| + | firewall-cmd --permanent --add-port=10255/ | ||
| + | firewall-cmd –-reload | ||
| + | </ | ||
| + | |||
| + | Iniciamos el cluster < | ||
| + | < | ||
| + | |||
| + | <note > flannel por defecto usa el CIDR 10.244.0.0/ | ||
| + | |||
| + | Cuando este comando termina nos aparecerá un comando con el token y el hash para unir los nodos. Este comando deberemos de guardarlos para añadir los nodos. | ||
| + | |||
| + | Antes de usar Kubernetes deberemos de ejecutar los siguientes comandos para terminar la configuración. | ||
| + | |||
| + | * Si kubernetes lo vamos a lanzar como root sólo debemos ejecutar el siguiente comando < | ||
| + | * Si lo vamos a lanzar como otro usuario deberemos de crear un directorio para la configuración, | ||
| + | mkdir -p $HOME/.kube | ||
| + | sudo cp -i / | ||
| + | sudo chown $(id -u):$(id -g) $HOME/ | ||
| + | </ | ||
| + | |||
| + | Ahora debemos de definir el modelo de red que queremos usar en kubernetes , hay varias aproximaciones cada una con distitas características (https:// | ||
| + | |||
| + | Si por ejemplo vamos a usar [[https:// | ||
| + | |||
| + | Si usamos [[https:// | ||
| + | |||
| + | Si queremos comprobar si se ha instalado correctamente podemos ejecutar < | ||
| + | |||
| + | === Paso final en los nodos === | ||
| + | Abrimos los puertos para la comunicación con el resto de nodos | ||
| + | < | ||
| + | firewall-cmd --permanent --add-port=10255/ | ||
| + | firewall-cmd –-reload | ||
| + | </ | ||
| + | |||
| + | Como último punto tenemos que añadir los nodos al manager. Para ello usaremos el comando que habiamos guardado cuando iniciamos el cluster | ||
| + | < | ||
| + | < | ||
| + | |||
| + | ==== Funcionamiento ==== | ||
| + | Para ver que todo está funcionando y los nodos están registrados ejecutamos en el manager < | ||
| + | |||
| + | ==== Problemas ==== | ||
| + | === Cambiar el cgroup driver de Docker a systemd === | ||
| + | Editar el fichero / | ||
| + | <sxh> | ||
| + | ExecStart=/ | ||
| + | --exec-opt native.cgroupdriver=systemd | ||
| + | </ | ||
| + | === kube-flannel-ds in CrashLoopBackoff === | ||
| + | https:// | ||
| + | |||
| + | Si tenemos este problema con el driver kube-flannel es debido a que al ejecutar kubeadm init no especificamos la opción **--pod-network-cidr=< | ||
| + | < | ||
| + | |||
| + | Para definir el PodCIDR en un nodo | ||
| + | < | ||
| + | |||
| + | Por ejemplo < | ||
| + | ==== Referencias ==== | ||
| + | * https:// | ||
| + | * https:// | ||
| + | * https:// | ||
| + | * https:// | ||
| + | * https:// | ||
| + | * https:// | ||
| + | * https:// | ||
| + | * https:// | ||
| + | * https:// | ||