GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Cómo instalar Kubernetes en Ubuntu 20.04

Los contenedores son una buena opción para agrupar y ejecutar nuestras propias aplicaciones. Cuando la cantidad de contenedores aumenta rápidamente y necesita administrarlos de manera conveniente. 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 administra 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 en Ubuntu 20.04.

Preparación del 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 el nodo 1 como maestro y el nodo 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, por lo que debe agregarlo manualmente.

Tanto en el nodo principal 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 nodos maestros y 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, instalaremos la versión 1.18.0-00 de kubeadm, 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 de 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 compatible con OCI (CRI). El tiempo de ejecución más utilizado es Docker. Desde el lanzamiento de Kubernetes 1.20, la corrección de compatibilidad 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).

Deberíamos usar el tiempo de ejecución del contenedor compatible con OCI para extraer y ejecutar imágenes 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í usaré cri-o que es un tiempo de ejecución compatible. Mantenga la versión de cri-o coincidente con la versión de Kubernetes.

Asegúrese de instalar la versión compatible.

Primero, usa modprobe comando para cargar la superposición y br_netfilter módulos en el nodo Maestro y 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 del filtro de red 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, el común Se instaló la utilidad (Supervisión de contenedores). Encuentra la ruta de acceso común:

$ 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 el cri-o y asegúrese de que esté funcionando:

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

Salida:

● 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 comunicarse con el servidor de la API en el nodo principal 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 en /etc/default/kubelet archivo:

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

En los nodos Maestro y 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, debemos instalar kubernetes-cni .

Ejecute el siguiente comando:

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

Implementación del clúster de Kubernetes

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

Inicializar nodo maestro

Para inicializar Kubernetes en nodo maestro , escriba:

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

Tardará unos minutos en terminar. Una vez realizada la inicialización, el terminal mostrará el resultado de la siguiente manera:

Tome nota de la línea para unirse al clúster marcada arriba, la usará en el siguiente paso para unir el nodo trabajador al 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 módulos en el clúster:

$ 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

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

Los resultados muestran detalles del nodo principal 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 vuelve 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 la nube comenzaron a admitir Kubernetes administrados, lo que facilita la vida.

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

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


Ubuntu
  1. Cómo instalar Odoo en Ubuntu

  2. Cómo instalar Maven en Ubuntu

  3. Cómo instalar Wine en Ubuntu

  4. Cómo instalar R en Ubuntu 16.04

  5. Cómo instalar Go en Ubuntu 18.04

Cómo instalar qt en Ubuntu 20.04

Cómo instalar Kubernetes minikube en Ubuntu 20.04

Cómo instalar Kubernetes en Ubuntu 18.04 LTS

Cómo instalar Kubernetes en Ubuntu 20.04 LTS

Cómo instalar Go en Ubuntu 20.04

Cómo instalar Go en Ubuntu 22.04