Diferencia entre revisiones de «Howto instalacion cluster kubernetes»
Línea 175: | Línea 175: | ||
kubectl get pods --all-namespaces | kubectl get pods --all-namespaces | ||
</pre> | </pre> | ||
Perfecto, lo anterior confirma que todos los pods están funcionando y en buen estado. Intentemos implementar pods, servicios e implementaciones para ver si nuestro clúster de Kubernetes funciona bien o no. | Perfecto, lo anterior confirma que todos los pods están funcionando y en buen estado. Intentemos implementar pods, servicios e implementaciones para ver si nuestro clúster de Kubernetes funciona bien o no. |
Revisión del 10:14 5 jul 2023
Cómo instalar Kubernetes (k8s) en el servidor Ubuntu 20.04 LTS
Kubernetes (k8s) es una herramienta de orquestación de contenedores gratuita y de código abierto. Se utiliza para implementar, escalar y administrar aplicaciones basadas en contenedores. En este artículo, demostraremos cómo instalar Kubernetes Cluster en Ubuntu 20.04 LTS Server (Focal Fossa) usando kubeadm. En la configuración de mi laboratorio, he usado tres servidores Ubuntu 20.04 LTS. Los siguientes son los requisitos del sistema en cada sistema Ubuntu.
Mínimo de 2 GB de RAM
- 2 núcleos (2 vCPU)
- 15 GB de espacio libre en /var
- Usuario privilegiado con derechos sudo
- Conexión estable a Internet
Los siguientes son los detalles de la configuración de mi laboratorio:
- VM1 (Servidor Ubuntu 20.04 LTS) – K8s-maestro – 192.168.0.10
- VM2 (Servidor Ubuntu 20.04 LTS) – K8s-nodo-0 – 192.168.0.11
- VM3 (Servidor Ubuntu 20.04 LTS) – K8s-nodo-1 – 192.168.0.12
Establecer nombre de host y agregar entradas en el archivo /etc/hosts
Use el comando hostnamectl para establecer el nombre de host en cada nodo, el ejemplo se muestra a continuación:
sudo hostnamectl set-hostname "k8s-maestro" // Correr el comando en el nodo maestro $ sudo hostnamectl set-hostname "k8s-nodo-0" // Correr el comando en el nodo-0 $ sudo hostnamectl set-hostname "k8s-nodo-1" // Correr el comando en el nodo-1
Agregue las siguientes entradas en los archivos /etc/hosts en cada nodo,
192.168.0.10 k8s-maestro 192.168.0.11 k8s-nodo-0 192.168.0.12 k8s-nodo-1
Instale Docker (Container Runtime) en los 3 nodos
Inicie sesión en cada nodo y ejecute los siguientes comandos para instalar Docker,
$ sudo apt update $ sudo apt install -y docker.io
Ahora inicie y habilite el servicio docker en cada nodo usando el comando systemctl debajo,
$ sudo systemctl enable docker.service --now
Ejecute el siguiente comando para verificar el estado del servicio docker y su versión,
$ systemctl status docker $ docker --version
Deshabilite el intercambio y habilite el reenvío de IP en todos los nodos
Para deshabilitar el intercambio, edite el archivo /etc/fstab y comente la línea que incluye la entrada, ya sea la partición de intercambio o el archivo de intercambio.
$ sudo vi /etc/fstab
Guardar y salir del archivo
Ejecute el comando swapoff para deshabilitar el intercambio sobre la marcha
$ sudo swapoff -a
Para habilitar el reenvío de ip de forma permanente, edite el archivo “/etc/sysctl.conf” y busque la línea “net.ipv4.ip_forward=1” y descoméntalo. Después de realizar los cambios en el archivo, ejecute el siguiente comando
$ sudo sysctl -p net.ipv4.ip_forward = 1 $
Instale Kubectl, kubelet y kubeadm en todos los nodos
Ejecute los siguientes comandos en los 3 nodos para instalar la utilidad kubectl, kubelet y kubeadm
$ sudo apt install -y apt-transport-https curl $ curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add $ sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main" $ sudo apt update $ sudo apt install -y kubelet kubeadm kubectl
Inicialice el clúster de Kubernetes mediante kubeadm (desde el nodo principal)
Inicie sesión en su nodo maestro (k8s-maestro) y ejecute debajo del comando 'kubeadm init' para inicializar el clúster de Kubernetes,
$ sudo kubeadm init
Una vez que el clúster se inicialice correctamente, obtendremos el siguiente resultado
Your Kubernetes control-plane has initialized successfully! To start using your cluster, you need to run the following as a regular user: mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config Alternatively, if you are the root user, you can run: export KUBECONFIG=/etc/kubernetes/admin.conf You should now deploy a pod network to the cluster. Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at: https://kubernetes.io/docs/concepts/cluster-administration/addons/ Then you can join any number of worker nodes by running the following on each as root: kubeadm join 192.168.0.10:6443 --token 8nukee.vkircqxe45zyj99m --discovery-token-ca-cert-hash sha256:55985531e26c194n89805gff17h6558gg4ws77q25a24b086nh5y9r99e159t
Para comenzar a usar el clúster como un usuario normal, ejecutemos los siguientes comandos, los comandos ya están allí en la salida, simplemente copie y pegue.
$ mkdir -p $HOME/.kube $ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config $ sudo chown $(id -u):$(id -g) $HOME/.kube/config
Ahora una los nodos trabajadores (k8s-nodo-0/1) al clúster, el comando para unirse al clúster ya está en la salida. Copie el comando "kubeadm join" y péguelo en ambos nodos (nodos de trabajo).
Inicie sesión en Nodo-0 y ejecute el siguiente comando,
kubeadm join 192.168.0.10:6443 --token 8nukee.vkircqxe45zyj99m --discovery-token-ca-cert-hash sha256:12345678a51a34a4a98508aaaa09a9085aa3ff99e52b1a4a086de5c8e58e489b
Inicie sesión en Nodo-1 y ejecute el siguiente comando para unirse al clúster,
kubeadm join 192.168.0.10:6443 --token 8nukee.vkircqxe45zyj99m --discovery-token-ca-cert-hash sha256:12345678a51a34a4a98508aaaa09a9085aa3ff99e52b1a4a086de5c8e58e489b
Desde el nodo principal, ejecute el comando "kubectl get nodes" para verificar el estado de los nodos
$ kubectl get nodes NAME STATUS ROLES AGE VERSION k8s-maestro NotReady master 27m v1.18.3 k8s-nodo-0 NotReady <none> 8m3s v1.18.3 k8s-nodo-1 NotReady <none> 7m19s v1.18.3 $
Como podemos ver, tanto los nodos trabajadores como el nodo maestro se han unido al clúster, pero el estado de cada nodo es "No está listo”. Para hacer el estado “Listo” debemos implementar complementos de red Pod basados en la interfaz de red de contenedores (CNI) como calicó, enrutador kube y red de tejido. Como sugiere el nombre, los complementos de red de pod permiten que los pods se comuniquen entre sí.
Implementar el complemento Calico Pod Network (nodo principal)
Desde el nodo maestro, ejecute el siguiente comando para instalar el complemento de red Calico pod,
kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/calico.yaml
Ejecute el siguiente comando para verificar el estado de los pods de todos los espacios de nombres
kubectl get pods --all-namespaces
Perfecto, lo anterior confirma que todos los pods están funcionando y en buen estado. Intentemos implementar pods, servicios e implementaciones para ver si nuestro clúster de Kubernetes funciona bien o no.
Nota: Para habilitar la función de finalización de bash en su nodo maestro, ejecute lo siguiente
$ echo 'source <(kubectl completion bash)' >>~/.bashrc $ source .bashrc
Instalación de LENS para Escritorio
- Obtener la clave de seguridad pública de la LENS y agregarla al conjunto de claves
curl -fsSL https://downloads.k8slens.dev/keys/gpg | gpg --dearmor | sudo tee /usr/share/keyrings/lens-archive-keyring.gpg > /dev/null
- Agregue el repositorio de LENS a /etc/apt/sources.list.d.
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/lens-archive-keyring.gpg] https://downloads.k8slens.dev/apt/debian stable main" | sudo tee /etc/apt/sources.list.d/lens.list > /dev/null
- Instalar Escritorio LENS
apt update apt install lens
- Ejecutar LENS
lens-desktop