LINUX

Cómo instalar Kubernetes en Ubuntu 20.04

instalar kubernetes ubuntu 20.04

Los contenedores son una buena opción para agrupar y ejecutar nuestras propias aplicaciones. Cuando el número de contenedores aumenta rápidamente y es necesario gestionarlos de forma cómoda. Esa es la razón por la que viene Kubernetes. Kubernetes (K8s) es un sistema de código abierto para automatizar la implementación, el escalado y la gestión de aplicaciones y servicios en contenedores.

El clúster de Kubernetes contiene nodos maestros y trabajadores. El nodo maestro controla y gestiona un grupo de nodos trabajadores. Puede tener varios nodos maestros para clústeres de alta disponibilidad.

Este tutorial muestra cómo instalar un Clúster de Kubernetes con kubeadm encendido Ubuntu 20.04.

Preparando el entorno

  • Utilice 2 hosts Linux con Ubuntu 20.04

Configuración de direcciones IP estáticas para el nodo maestro y el nodo trabajador

– Nodo maestro: 192.168.1.11
– Nodo trabajador: 192.168.1.12

  • Configure el nombre de host para cada máquina

Usaremos node-1 como maestro y node-2 como nodo trabajador.

$ sudo hostnamectl set-hostname node-1
$ sudo hostnamectl set-hostname node-2
  • Deshabilitar la memoria de intercambio en cada nodo de ubuntu
$ sudo swapoff -a

Agregar repositorio de Kubernetes

Kubernetes no está disponible en el repositorio predeterminado de Ubuntu, así que debes agregarlo manualmente.

Tanto en el nodo maestro como en el trabajador realice lo siguiente:

Agregar la clave de firma de Kubernetes de la siguiente manera:

$ sudo -i
# curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -

Luego, agregue el repositorio de Kubernetes, ejecute:

$ echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" >> ~/kubernetes.list
$ sudo mv ~/kubernetes.list /etc/apt/sources.list.d
$ sudo apt update

Instalación de herramientas de Kubernetes

En esta sección, instalaremos Kubeadm, cri-o, Kubelet y Kubernetes-cni. Todas estas herramientas deben instalarse en tanto los nodos maestros como los trabajadores.

Asegúrese de instalar la versión recomendada y compatible. Aquí estamos instalando la versión 1.18 de Kubernetes y crio.

Instalar Kubeadm

Kubeadm es una herramienta que forma parte del proyecto Kubernetes que ayuda a inicializar el clúster de Kubernetes.

En este tutorial, vamos a instalar kubeadm versión 1.18.0-00, escriba:

$ sudo apt install -y kubeadm=1.18.0-00 --allow-unauthenticated

Nota: puede encontrar la versión específica con el siguiente comando:

$ curl -s https://packages.cloud.google.com/apt/dists/kubernetes-xenial/main/binary-amd64/Packages | grep Version | awk '{print $2}'

Instalar Kubectl

Kubectl es la herramienta de línea de comandos de Kubernetes. Le permite ejecutar comandos en los clústeres de Kubernetes. Puede usar kubectl para implementar aplicaciones, administrar recursos del clúster y ver registros.

Instale kubectl v1.18.0-00 con el siguiente comando:

$ sudo apt install -y kubectl=1.18.0-00 --allow-unauthenticated

Instalar CRI-O

CRI-O es una interfaz de tiempo de ejecución de contenedor (CRI) compatible con OCI. El tiempo de ejecución más utilizado es Docker. Desde el lanzamiento de Kubernetes 1.20, la corrección de la interfaz de tiempo de ejecución del contenedor (CRI) para Docker está obsoleta. Docker produce imágenes que no son una imagen OCI (Open Container Initiative).

Debemos usar el tiempo de ejecución del contenedor compatible con OCI para extraer y ejecutar imágenes de OCI, especialmente si usa servicios de Kubernetes como GKE, EKS o AKS.

Todavía puede usar Docker, luego instalar usando sudo apt-get install docker.io

Aquí lo usaré cri-o que es un tiempo de ejecución compatible. Mantenga la versión cri-o coincidente con la versión de Kubernetes.

Asegúrese de instalar el versión compatible.

Primer uso modprobe comando para cargar el cubrir y br_netfilter módulos tanto en el nodo maestro como en el trabajador:

$ sudo modprobe overlay
$ sudo modprobe br_netfilter

Luego, cree un archivo de configuración sysctl para habilitar el reenvío de IP y la configuración de netfilter durante los reinicios insertando las siguientes líneas en /etc/sysctl.d/99-kubernetes-cri.conf archivo en el nodo maestro y trabajador:

net.bridge.bridge-nf-call-iptables  = 1
net.ipv4.ip_forward                 = 1
net.bridge.bridge-nf-call-ip6tables = 1

Aplique el archivo de configuración ejecutando:

$ sudo sysctl --system

Ahora, especificamos el sistema operativo Ubuntu y la versión cri-o de la siguiente manera:

$ sudo -i
# export OS=xUbuntu_20.04
# export VERSION=1.18

Luego ejecute los siguientes comandos como root usuario:

# echo "deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS/ /" > /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list
# echo "deb http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/$VERSION/$OS/ /" > /etc/apt/sources.list.d/devel:kubic:libcontainers:stable:cri-o:$VERSION.list

# curl -L https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable:cri-o:$VERSION/$OS/Release.key | apt-key add -
# curl -L https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS/Release.key | apt-key add -

# apt update
# apt install cri-o cri-o-runc

Una vez finalizada la instalación, conmon Se instaló la utilidad (Monitoreo de contenedores). Encuentra el camino de conmon:

$ which conmon

/usr/bin/conmon

Edite el /etc/crio/crio.conf archivo de la siguiente manera:

...
# Path to the conmon binary, used for monitoring the OCI runtime.
conmon = "/usr/bin/conmon"         #<-- Edit this line. Around line 108

...

registries = [                     #<-- Edit and add registries. Around line 351
        "docker.io",
        "quay.io",
]
....

Habilite cri-o y asegúrese de que se esté ejecutando:

$ sudo systemctl daemon-reload
$ sudo systemctl enable crio
$ sudo systemctl start crio
$ sudo systemctl status crio

Producción:

● crio.service - Container Runtime Interface for OCI (CRI-O)
   Loaded: loaded (/usr/lib/systemd/system/crio.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2020-12-10 15:46:37 UTC; 3 days ago
     Docs: https://github.com/cri-o/cri-o
...

Instalar Kubelet

Kubelet es un agente que se ejecuta en cada nodo y es responsable de hablar con el servidor API en el nodo maestro y de impulsar el tiempo de ejecución del contenedor para iniciar las cargas de trabajo.

Configurar kubelet para entender cómo interactuar con cri-o insertando la siguiente línea para /etc/default/kubelet expediente:

KUBELET_EXTRA_ARGS=--feature-gates="AllAlpha=false,RunAsGroup=true" --container-runtime=remote --cgroup-driver=systemd --container-runtime-endpoint="unix:///var/run/crio/crio.sock" --runtime-request-timeout=5m

Tanto en el nodo maestro como en el trabajador, ejecute el siguiente comando para instalar kubelet:

$ sudo apt install -y kubelet=1.18.0-00 --allow-unauthenticated

Instalar Kubernetes-cni

Para habilitar la red de contenedores en el clúster, tenemos que instalar kubernetes-cni.

Ejecute el siguiente comando:

$ sudo apt-get install -y kubernetes-cni --allow-unauthenticated

Implementar el clúster de Kubernetes

La implementación del clúster de Kubernetes consta de 2 pasos. El primer paso sería inicializar el nodo maestro y el segundo paso es unir el nodo trabajador al clúster.

Inicializar el nodo maestro

Para inicializar Kubernetes en Nodo maestro, escribe:

$ sudo kubeadm init --apiserver-advertise-address=192.168.1.11 --pod-network-cidr=10.244.0.0/16
kubeadm init
kubeadm init

Tardará unos minutos en terminar. Una vez que se realizó la inicialización, el terminal mostrará la salida de la siguiente manera:

inicializado con éxito
inicializado con éxito

Tome nota de la línea para unirse al clúster marcado arriba, la usará en el siguiente paso para unir nodo trabajador a clúster.

Ahora, ejecute el siguiente comando para crear el directorio de configuración de Kubernetes en el nodo principal:

$ mkdir -p $HOME/.kube
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config

A continuación, implemente una red de pod para agrupar:

$ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

Verificación de que todos los componentes del plano de control se hayan instalado correctamente:

$ kubectl get pod --all-namespaces
obtener pod –todos los espacios de nombres
obtener pod –todos los espacios de nombres

Unir el nodo trabajador al clúster

Ahora inicie sesión en el nodo trabajador y únase al nodo trabajador al clúster.

En la máquina del nodo trabajador, ejecute el siguiente comando:

$ sudo kubeadm join 192.168.1.11:6443 --token 9ii02d.nsmrmu1asascv2yg 
    --discovery-token-ca-cert-hash sha256:1104bf70b03a2d030ffc0a462f9dbcbcdd9975393e9a9ac2a1f18500f1b6b74e

Una vez finalizado el proceso de unión, vuelva al nodo principal y ejecute:

$ kubectl get node
NAME     STATUS   ROLES    AGE     VERSION
node-1   Ready    master   2m37s   v1.18.0
node-2   Ready    none     22s     v1.18.0

Para obtener más información sobre el nodo, escriba:

$ kubectl get node -owide
NAME     STATUS   ROLES    AGE   VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION   CONTAINER-RUNTIME
node-1   Ready    master   9h    v1.18.0   10.2.0.4              Ubuntu 20.04.1 LTS   5.4.0-1029-gcp   cri-o://1.18.4
node-2   Ready    none     9h    v1.18.0   10.2.0.5              Ubuntu 20.04.1 LTS   5.4.0-1029-gcp   cri-o://1.18.4

Las salidas muestran detalles del nodo maestro y los nodos que se han unido al clúster.

Lea también: Cómo instalar Kubernetes localmente usando Vagrant / Minikube

Conclusión

A medida que la contenedorización se está volviendo popular, la necesidad de administrar cargas de trabajo y servicios en contenedores hace que Kubernetes sea tan popular. La mayoría de los principales proveedores de nube comenzaron a admitir Kubernetes administrado, lo que facilita la vida.

Kubernetes es completamente gratuito y se puede descargar en cualquier momento desde su repositorio. Espero que haya disfrutado de la instalación de Kubernetes en Ubuntu. Puede intentar implementar aplicaciones como MySQL o WordPress en el clúster K8.

Gracias por leer y deje su sugerencia en la sección de comentarios a continuación.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar