GNU/Linux >> Tutoriales Linux >  >> Ubuntu

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:

  • Máquina 1 (Servidor Ubuntu 20.04 LTS) – K8s-master – 192.168.1.40
  • Máquina 2 (Servidor Ubuntu 20.04 LTS) – K8s-node-0 – 192.168.1.41
  • Máquina 3 (Servidor Ubuntu 20.04 LTS) – K8s-node-1 – 192.168.1.42

Ahora pasemos a los pasos de instalación de Kubernetes

Paso 1) 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-master"     // Ejecute este comando en el nodo maestro$ sudo hostnamectl set-hostname "k8s-node-0"     // Ejecute este comando en el nodo-0$ sudo hostnamectl set-hostname "k8s-node-1"     // Ejecute este comando en el nodo-1

Agregue las siguientes entradas en los archivos /etc/hosts en cada nodo,

192.168.1.40    k8s-master192.168.1.41    k8s-nodo-0192.168.1.42    k8s-nodo-1

Paso 2) Instalar Docker (Tiempo de ejecución del contenedor) 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,

$ sudo systemctl enable docker.service --ahora

Ejecute el siguiente comando para verificar el estado del servicio docker y su versión,

$ systemctl status docker$ docker --version

Paso 3) 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 intercambio -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 -pnet.ipv4.ip_forward =1$

Paso 4) 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

Nota: Al momento de escribir este artículo, el repositorio Kubernetes de Ubuntu 16.04 (Xenial Xerus) estaba disponible, pero en el futuro, cuando el repositorio de Kubernetes esté disponible para Ubuntu 20.04, reemplace xenial con la palabra focal en el comando anterior 'apt-add-repository'.

Paso 4) Inicialice el clúster de Kubernetes mediante kubeadm (desde el nodo principal)

Inicie sesión en su nodo maestro (k8s-master) y ejecute debajo del comando 'kubeadm init' para inicializar el clúster de Kubernetes,

$ sudo kubeadm init

Una vez que el clúster se haya inicializado correctamente, obtendremos el siguiente resultado

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 péguelos.

[correo electrónico protegido]:~$  mkdir -p $HOME/.kube[correo electrónico protegido]:~$  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config[correo electrónico protegido]:~ $  sudo chown $(id -u):$(id -g) $HOME/.kube/config

Ahora una los nodos trabajadores (k8s-node-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 trabajadores).

Inicie sesión en Node-0 y ejecute el siguiente comando,

[correo electrónico protegido]:~$ sudo kubeadm unirse a 192.168.1.40:6443 --token b4sfnc.53ifyuncy017cnqq --discovery-token-ca-cert-hash sha256:5078c5b151bf776c7d2395cdae08080faa6f82973b98d9d58c2aaapre>e4 

Inicie sesión en Node-1 y ejecute el siguiente comando para unirse al clúster,

[correo electrónico protegido]:~$ sudo kubeadm unirse a 192.168.1.40:6443 --token b4sfnc.53ifyuncy017cnqq --discovery-token-ca-cert-hash sha256:5078c5b151bf776c7d2395cdae08080faa6f82973b98d9d58c2aaapre>e4 

Desde el nodo principal, ejecute el comando "kubectl get nodes" para verificar el estado de los nodos

 [correo electrónico protegido]:~ $ kubectl get nodesname roles de estado edad versionk8s-master noade Master 27m v1.18.3k8s-nodo-0 nodoewread  8m3s v1.18.3k8s-nodo-1 nodo notade  7m19s v1. 18.3[correo electrónico protegido]:~$

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 listo ”. Para hacer que el estado sea "Listo ” debemos implementar complementos de red Pod basados ​​en la interfaz de red de contenedores (CNI) como calico , enrutador Kube y tejido-red . Como sugiere el nombre, los complementos de red de pod permiten que los pods se comuniquen entre sí.

Paso 5) Implementar el complemento Calico Pod Network (nodo principal)

Desde el nodo maestro, ejecute el siguiente comando para instalar el complemento de red Calico pod,

[correo electrónico protegido]:~$ kubectl apply -f https://docs.projectcalico.org/v3.14/manifests/calico.yaml

Una vez que se haya implementado correctamente, el estado de los nodos estará listo, volvamos a ejecutar el comando kubectl para verificar el estado de los nodos

[email protected]:~$ kubectl get nodesNAME         STATUS   ROLES    AGE   VERSIONk8s-master   Ready    master   39m   v1.18.3k8s-node-0   Ready       19m   v1.18.3k8s-node-1   Ready      18.3[correo electrónico protegido]:~$

Ejecute el siguiente comando para verificar el estado de los pods de todos los espacios de nombres

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

[email protected]:~$ echo 'source <(kubectl complete bash)'>>~/.bashrc[email protected]:~$ source .bashrc

Paso 6) Probar y verificar el clúster de Kubernetes

Vamos a crear una implementación llamada nginx-web con la imagen del contenedor nginx en el espacio de nombres predeterminado, ejecute el siguiente comando kubectl desde el nodo principal,

[correo electrónico protegido]:~$ kubectl create deployment nginx-web --image=nginxdeployment.apps/nginx-web created[correo electrónico protegido]:~$

Ejecute el siguiente comando para verificar el estado de implementación

[email protected]:~$ kubectl get deployments.appsNAME        READY   UPTO-DATE   DISPONIBLE   AGenginx-web   1/1     1            1           41s[email protected]:~$ kubectl get deployments. -Conos de la edad de contenedores de edad disponibles SELECTORNORNX-WEB 1/1 1 1 56S nginx nginx app =nginx-web [correo electrónico protegido]:~ $ [correo electrónico protegido]:~ $ kubectl get podsname listado status se reinicia Agenginx-Web-7748f7f978-nk8b2 1 1 /1     En ejecución   0          2m50s[email protected]:~$

Como podemos ver, la implementación se ha creado correctamente con la réplica predeterminada.

Ampliemos la implementación, configure las réplicas como 4. Ejecute el siguiente comando,

[email protected]:~$ kubectl scale --replicas=4 deployment nginx-webdeployment.apps/nginx-web scaled[email protected]:~$

Ahora verifique el estado de su implementación usando los siguientes comandos,

[email protected]:~$ kubectl get deployments.apps nginx-webNAME        READY   ACTUALIZADO   DISPONIBLE   AGEnginx-web   4/4     4            4           13m[email protected]:~$[email protected describe]:~$ deployments.apps nginx-web

Lo anterior confirma que la implementación basada en nginx se ha escalado con éxito.

Realicemos una prueba más, creemos un pod llamado "http-web" y expóngalo a través del servicio llamado "http-service" con el puerto 80 y NodePort como tipo.

Ejecute el siguiente comando para crear un pod,

[correo electrónico protegido]:~$ kubectl ejecutar http-web --image=httpd --port=80pod/http-web creado[correo electrónico protegido]:~$

Cree un servicio usando el comando debajo y exponga el pod creado arriba en el puerto 80,

[correo electrónico protegido]:~$ kubectl exposición pod http-web --name=servicio-http --port=80 --type=NodePortservice/servicio-http expuesto[correo electrónico protegido]:~$[correo electrónico protegido]:~$ kubectl get service http-serviceNAME           TYPE       CLUSTER-IP       EXTERNAL-IP   PUERTO(S)        AGEhttp-service   NodePort   10.101.152.138           80:31098/TCP   10 s[e~ $proteted] 

Obtenga la IP del nodo o el nombre de host en el que se implementa el módulo web http y luego acceda al servidor web a través de NodePort (31098)

 [correo electrónico protegido]:~ $ kubectl get pods http-web -o wideename listos estatus reiniciados edad del nodo ip nodo nodo nodo>[correo electrónico protegido]:~$[correo electrónico protegido]:~$ curl http://k8s-node-0:31098

¡Funciona!

[correo electrónico protegido]:~$

Perfecto, está funcionando bien como se esperaba. Esto concluye el artículo y confirma que hemos configurado correctamente el clúster de Kubernetes en el servidor Ubuntu 20.04 LTS.

Lea también :Cómo configurar el controlador de entrada NGINX en Kubernetes

Leer tambiénCómo configurar el registro privado de Docker en Kubernetes (k8s)


Ubuntu
  1. Cómo instalar el servidor RabbitMQ en Ubuntu 18.04 y 16.04 LTS

  2. Cómo instalar el servidor Gitlab en Ubuntu 18.04 y 16.04 LTS

  3. Cómo instalar R en Ubuntu 18.04 LTS

  4. Cómo instalar el servidor Xrdp en Ubuntu 20.04 LTS

  5. Cómo instalar R en Ubuntu 20.04 LTS

Cómo instalar Kubernetes en Ubuntu 18.04 LTS

Cómo instalar Kubernetes en Ubuntu 20.04 LTS

Cómo instalar un servidor FTP en Ubuntu 20.04 LTS

Cómo instalar el servidor Pritunl VPN en Ubuntu 20.04 LTS

Cómo instalar el servidor de impresión CUPS en Ubuntu 20.04 LTS

Cómo instalar Kubernetes en Ubuntu 18.04 LTS