meta data de esta página
  •  

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
virtualizacion:kubernetes:instalacion [2021/02/24 11:06] lcvirtualizacion:kubernetes:instalacion [2023/01/18 14:37] (actual) – editor externo 127.0.0.1
Línea 14: Línea 14:
   * temporalmente (hasta que reiniciemos )con el comando **swapoff -a **   * 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   * 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   . Para ello tenemos que cargar el módulo  <sxh>modprobe br_netfilter</sxh> y activarlo al arrancar con <sxh>echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables</sxh> +  * Permitimos a iptable ver el trafico en modo bridge   . Para ello tenemos que cargar el módulo  <sxh>modprobe br_netfilter</sxh> y activarlo al arrancar con <sxh>echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables</sxh> o bien creamos un fichero de configuración para que se cargue en /etc/sysctl.d incluido el manager
-  * creamos un fichero de configuración para que se cargue en /etc/sysctl.d incluido el manager+
 <sxh>cat <<EOF >  /etc/sysctl.d/k8s.conf <sxh>cat <<EOF >  /etc/sysctl.d/k8s.conf
 net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-ip6tables = 1
Línea 22: Línea 21:
  
 y aplicamos los cambios con <sxh>sysctl --system</sxh> y aplicamos los cambios con <sxh>sysctl --system</sxh>
-  * deshabilitamos [[linux:centos:selinux|SElinux]]+  * deshabilitamos [[linux:centos:selinux|SElinux]] <sxh>sudo setenforce 0 
 +sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config</sxh> 
 +==== Instalamos Docker ====
   * instalamos los requisitos para instalar docker <sxh>yum install -y yum-utils device-mapper-persistent-data lvm2</sxh>   * instalamos los requisitos para instalar docker <sxh>yum install -y yum-utils device-mapper-persistent-data lvm2</sxh>
   * añadimos el repositorio e instalamos docker <sxh>yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo</sxh>   * añadimos el repositorio e instalamos docker <sxh>yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo</sxh>
 <sxh>sudo yum update -y && sudo yum install -y  containerd.io-1.2.13  docker-ce-19.03.11  docker-ce-cli-19.03.11</sxh> <sxh>sudo yum update -y && sudo yum install -y  containerd.io-1.2.13  docker-ce-19.03.11  docker-ce-cli-19.03.11</sxh>
 <note>A día de este tutorial estas son las versiones de docker-ce soportadas por kubernetes </note> <note>A día de este tutorial estas son las versiones de docker-ce soportadas por kubernetes </note>
 +  * Creamos el directorio /etc/docker <sxh>sudo mkdir /etc/docker</sxh>
 +  * Declaramos el demonio para docker <sxh>cat <<EOF | sudo tee /etc/docker/daemon.json
 +{
 +  "exec-opts": ["native.cgroupdriver=systemd"],
 +  "log-driver": "json-file",
 +  "log-opts": {
 +    "max-size": "100m"
 +  },
 +  "storage-driver": "overlay2",
 +  "storage-opts": [
 +    "overlay2.override_kernel_check=true"
 +  ]
 +}
 +EOF</sxh>
 +  * creamos el directorio del servicio <sxh>sudo mkdir -p /etc/systemd/system/docker.service.d</sxh>
 +  * Recargamos <sxh>systemctl daemon-reload && sudo systemctl restart docker</sxh> 
   * Lo ponemos para que arranque al inicio <sxh>systemctl enable docker && systemctl start docker</sxh>   * Lo ponemos para que arranque al inicio <sxh>systemctl enable docker && systemctl start docker</sxh>
 +<note>debemos comprobar con el comando **docker info | grep -i cgroup** que el docker está bajo systemd</note>
 ==== Instalación de Kubernetes ==== ==== Instalación de Kubernetes ====
 === Pasos a realizar en todos los nodos (incluido el manager) === === Pasos a realizar en todos los nodos (incluido el manager) ===
Línea 44: Línea 62:
 <sxh>yum update <sxh>yum update
 yum install -y kubelet kubeadm kubectl</sxh> yum install -y kubelet kubeadm kubectl</sxh>
-Lo ponemos para que arranque al inicio +<note warning>Ojo al ser el um update y que no instale versiones más nuevas de Docker </note> 
 +  * Lo ponemos para que arranque al inicio 
 <sxh>systemctl enable kubelet && systemctl start kubelet</sxh> <sxh>systemctl enable kubelet && systemctl start kubelet</sxh>
  
Línea 72: Línea 91:
 </sxh> </sxh>
  
-Iniciamos el cluster <sxh>kubeadm init</sxh>  +Iniciamos el cluster <sxh>kubeadm init  --pod-network-cidr=10.244.0.0/16  --apiserver-advertise-address=<ip_del_nodo_manager> </sxh>  
-<note>hay varias [[https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-init/|opciones]] que podemos usar para definir el interfaz que da servicio o la red para los pods.  +<note>hay varias [[https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-init/|opciones]] que podemos usar para definir el interfaz que da servicio o la red para los pods. </note> 
-Por ejemplo kubeadm init --apiserver-advertise-address=192.168.1.99  --pod-network-cidr=192.168.0.0/16</note>+ 
 +<note > flannel por defecto usa el CIDR 10.244.0.0/16 . Calico por defecto usa el CIDR 192.168.0.0/16 el pod-network-cidr va acorde a esto. Aunque se puede cambiar para usar otros valores</note>
  
 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. 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.
Línea 109: Línea 129:
 Para ver que todo está funcionando y los nodos están registrados ejecutamos en el manager <sxh>kubectl get nodes</sxh> Para ver que todo está funcionando y los nodos están registrados ejecutamos en el manager <sxh>kubectl get nodes</sxh>
  
 +==== Problemas ====
 +===  Cambiar el cgroup driver de Docker a systemd ===
 +Editar el fichero /usr/lib/systemd/system/docker.service y cambiar la línea 
 +<sxh>
 +ExecStart=/usr/bin/dockerd \
 +          --exec-opt native.cgroupdriver=systemd
 +</sxh>
 +=== kube-flannel-ds in CrashLoopBackoff ===
 +https://github.com/flannel-io/flannel/blob/master/Documentation/troubleshooting.md
 +
 +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=<red para pods>.** Para comprobar  si está definida ejecutamos para cada nodo 
 +<sxh>kubectl get nodes -o jsonpath='{.items[*].spec.podCIDR}'</sxh>
 +
 +Para definir el PodCIDR en un nodo 
 +<sxh>kubectl patch node <NODE_NAME> -p '{"spec":{"podCIDR":"<SUBNET>"}}' </sxh>
 +
 +Por ejemplo <sxh>kubectl patch node slave1 -p '{"spec":{"podCIDR":"10.244.0.0/16"}}'"</sxh>
 ==== Referencias ==== ==== Referencias ====
   * https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/   * https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/
   * https://www.techrepublic.com/article/how-to-deploy-nginx-on-a-kubernetes-cluster/   * https://www.techrepublic.com/article/how-to-deploy-nginx-on-a-kubernetes-cluster/
   * https://www.techrepublic.com/article/how-to-install-a-kubernetes-cluster-on-centos-7/   * https://www.techrepublic.com/article/how-to-install-a-kubernetes-cluster-on-centos-7/
 +  * https://computingforgeeks.com/install-kubernetes-cluster-on-centos-with-kubeadm/
 +  * https://www.doblefactor.com/devops/como-instalar-un-cluster-de-kubernetes-en-centos-7/
 +  * https://phoenixnap.com/kb/how-to-install-kubernetes-on-centos
 +  * https://medium.com/liveness-y-readiness-probe/instalaci%C3%B3n-de-kubernetes-onpremise-638609f2bb1e
 +  * https://blog.mauriciovillagran.uy/2019/Kubernetes-Lab/
 +  * https://rescalante.com/blog/view/f08ff837-5fcf-4b3c-81ac-0592014c6631