GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Cómo instalar y configurar Kubernetes (k8s) en Ubuntu 18.04 LTS

Kubernetes es una herramienta de orquestación de contenedores gratuita y de código abierto. Se usa para implementar aplicaciones basadas en contenedores automáticamente en un entorno de clúster, además de esto, también se usa para administrar contenedores Docker en los hosts del clúster de kubernetes. Kubernetes también se conoce como K8s .

En este artículo, demostraré cómo instalar y configurar dos nodos Kubernetes (1.13) usando kubeadm en sistemas Ubuntu 18.04 / 18.10. Los siguientes son los detalles de la configuración de mi laboratorio:

Usaré tres sistemas Ubuntu 18.04 LTS, donde un sistema actuará como nodo maestro de Kubernetes y otros dos nodos actuarán como asiento esclavo e y se unirá al clúster de Kubernetes. Asumo que hay un mínimo de 18.04 LTS instalado en estos tres sistemas.

  • Nodo principal de Kubernetes:(nombre de host:k8s-master, IP:192.168.1.70, sistema operativo:Ubuntu mínimo 18.04 LTS)
  • Nodo esclavo de Kubernetes 1:(nombre de host:k8s-worker-node1, IP:192.168.1.80, sistema operativo:Ubuntu mínimo 18.04 LTS)
  • Nodo esclavo de Kubernetes 2:(nombre de host:k8s-worker-node2, IP:192.168.1.90, sistema operativo:Ubuntu mínimo 18.04 LTS)

Nota: Kubernetes Slave Node también se conoce como Worker Node

Pasemos a los pasos de instalación y configuración de k8s.

Paso:1) Establecer nombre de host y actualizar el archivo de hosts

Inicie sesión en el nodo maestro y configure su nombre de host mediante el comando hostnamectl

[email protected]:~$ sudo hostnamectl set-hostname "k8s-master"
[email protected]:~$ exec bash
[email protected]:~$

Inicie sesión en Nodos esclavos/trabajadores y configure su nombre de host respectivamente usando el comando hostnamectl,

[email protected]:~$ sudo hostnamectl set-hostname k8s-worker-node1
[email protected]:~$ exec bash
[email protected]:~$

[email protected]:~$ sudo hostnamectl set-hostname k8s-worker-node2
[email protected]:~$ exec bash
[email protected]:~$

Agregue las siguientes líneas en el archivo /etc/hosts en los tres sistemas,

192.168.1.70     k8s-master
192.168.1.80     k8s-worker-node1
192.168.1.90     k8s-worker-node2

Paso:2) Instalar e iniciar el servicio Docker en los nodos maestro y esclavo

Ejecute el siguiente comando apt-get para instalar Docker en el nodo maestro,

[email protected]:~$ sudo apt-get install docker.io -y

Ejecute el siguiente comando apt-get para instalar Docker en nodos esclavos,

[email protected]:~$ sudo apt-get install docker.io -y
[email protected]:~$ sudo apt-get install docker.io -y

Una vez que los paquetes Docker estén instalados en los tres sistemas, inicie y habilite el servicio docker usando los siguientes comandos systemctl, estos comandos deben ejecutarse en los nodos maestro y esclavo.

~$ sudo systemctl start docker
~$ sudo systemctl enable docker
Synchronizing state of docker.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable docker
~$

Use el siguiente comando docker para verificar qué versión de Docker se ha instalado en estos sistemas,

~$ docker --version
Docker version 18.06.1-ce, build e68fc7a
~$

Paso:3) Configurar el repositorio de paquetes de Kubernetes en los nodos maestro y esclavo

Nota: Todos los comandos en este paso tienen el mandato de ejecutarse en nodos maestros y esclavos

Primero instalemos algunos paquetes necesarios, ejecute los siguientes comandos en todos los nodos, incluido el nodo maestro

~$ sudo apt-get install apt-transport-https curl -y

Ahora agregue la clave del repositorio del paquete Kubernetes usando el siguiente comando,

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

Ahora configure el repositorio de Kubernetes usando los siguientes comandos apt, en este momento el repositorio de paquetes de Kubernetes de Ubuntu 18.04 (bionic weaver) no está disponible, por lo que usaremos el repositorio de paquetes de Xenial Kubernetes.

:~$ sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"

Paso:4) Deshabilite el intercambio e instale Kubeadm en todos los nodos

Nota: Todos los comandos en este paso tienen el mandato de ejecutarse en nodos maestros y esclavos

Kubeadm es uno de los métodos más comunes que se utilizan para implementar un clúster de kubernetes o, en otras palabras, podemos decir que se utiliza para implementar varios nodos en un clúster de kubernetes.

Según el sitio web oficial de Kubernetes, se recomienda deshabilitar el intercambio en todos los nodos, incluido el nodo principal.

Ejecute el siguiente comando para deshabilitar el intercambio temporal,

:~$ sudo swapoff -a

Para deshabilitar el intercambio permanente, comente el archivo de intercambio o la entrada de la partición de intercambio en el archivo /etc/fstab.

Ahora instale el paquete Kubeadm en todos los nodos, incluido el maestro.

:~$ sudo apt-get install kubeadm -y

Una vez que los paquetes de kubeadm se hayan instalado correctamente, verifique la versión de kubeadm con el siguiente comando.

:~$ kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"13", GitVersion:"v1.13.2", GitCommit:"cff46ab41ff0bb44d8584413b598ad8360ec1def", GitTreeState:"clean", BuildDate:"2019-01-10T23:33:30Z", GoVersion:"go1.11.4", Compiler:"gc", Platform:"linux/amd64"}
:~$

Paso:5) Inicialice e inicie el clúster de Kubernetes en el nodo principal mediante Kubeadm

Use el siguiente comando kubeadm en el nodo maestro solo para inicializar Kubernetes

[email protected]:~$ sudo kubeadm init --pod-network-cidr=172.168.10.0/24

En el comando anterior, puede usar la misma red de pods o elegir su propia red de pods que se adapte a su entorno. Una vez que el comando se ejecute con éxito, obtendremos un resultado similar al siguiente:

El resultado anterior confirma que el nodo principal se ha inicializado con éxito, por lo que para iniciar el clúster, ejecute los siguientes comandos uno tras otro,

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

Verifique el estado del nodo maestro usando el siguiente comando,

[email protected]:~$ kubectl get nodes
NAME         STATUS     ROLES    AGE   VERSION
k8s-master   NotReady   master   18m   v1.13.2
[email protected]:~$

Como podemos ver en el resultado del comando anterior, nuestro nodo maestro no está listo porque hasta ahora no hemos implementado ningún pod.

Implementemos la red de pod, la red de pod es la red a través de la cual nuestros nodos de clúster se comunicarán entre sí. Desplegaremos franela como nuestra red de pods, Flannel proporcionará la red superpuesta entre nodos de clúster.

Paso:6) Implementar Flannel como red de pods desde el nodo maestro y verificar los espacios de nombres de los pods

Ejecute el siguiente kubectl comando para implementar la red de pods desde el nodo maestro

[email protected]:~$ sudo kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

La salida del comando anterior debería ser similar a la siguiente

clusterrole.rbac.authorization.k8s.io/flannel created
clusterrolebinding.rbac.authorization.k8s.io/flannel created
serviceaccount/flannel created
configmap/kube-flannel-cfg created
daemonset.extensions/kube-flannel-ds-amd64 created
daemonset.extensions/kube-flannel-ds-arm64 created
daemonset.extensions/kube-flannel-ds-arm created
daemonset.extensions/kube-flannel-ds-ppc64le created
daemonset.extensions/kube-flannel-ds-s390x created
[email protected]:~$

Ahora verifique el estado del nodo principal y los espacios de nombres de los pods mediante el comando kubectl,

[email protected]:~$ sudo  kubectl get nodes
NAME         STATUS   ROLES    AGE   VERSION
k8s-master   Ready    master   78m   v1.13.2
[email protected]:~$

[email protected]:~$ sudo  kubectl get pods --all-namespaces
NAMESPACE     NAME                                 READY   STATUS    RESTARTS   AGE
kube-system   coredns-86c58d9df4-px4sj             1/1     Running   0          79m
kube-system   coredns-86c58d9df4-wzdzk             1/1     Running   0          79m
kube-system   etcd-k8s-master                      1/1     Running   1          79m
kube-system   kube-apiserver-k8s-master            1/1     Running   1          79m
kube-system   kube-controller-manager-k8s-master   1/1     Running   1          79m
kube-system   kube-flannel-ds-amd64-9tn8z          1/1     Running   0          14m
kube-system   kube-proxy-cjzz2                     1/1     Running   1          79m
kube-system   kube-scheduler-k8s-master            1/1     Running   1          79m
[email protected]:~$

Como podemos ver en el resultado anterior, el estado de nuestro nodo maestro ha cambiado a "Listo ” y todos los espacios de nombres del pod están en estado de ejecución, por lo que esto confirma que nuestro nodo maestro está en buen estado y listo para formar un clúster.

Paso:7) Agregar nodos esclavos o trabajadores al clúster

Nota: En el Paso 5, la salida del comando kubeadm obtuvimos el comando completo que tendremos que usar en el nodo esclavo o trabajador para unirnos a un clúster

Inicie sesión en el primer nodo esclavo (k8s-worker-node1) y ejecute el siguiente comando para unirse al clúster,

[email protected]:~$ sudo kubeadm join 192.168.1.70:6443 --token cwxswk.hbkuu4jua82o80d1 --discovery-token-ca-cert-hash sha256:ff1b0cfe5aec94f90a42bdb45d2b8bfde34006017c0e3f3026a84388f46a5495

La salida del comando anterior debería ser algo como esto,

Del mismo modo, ejecute el mismo comando kubeadm join en el segundo nodo trabajador,

[email protected]:~$ sudo kubeadm join 192.168.1.70:6443 --token cwxswk.hbkuu4jua82o80d1 --discovery-token-ca-cert-hash sha256:ff1b0cfe5aec94f90a42bdb45d2b8bfde34006017c0e3f3026a84388f46a5495

La salida de arriba debería ser algo como abajo,

Ahora vaya al nodo maestro y ejecute el siguiente comando para verificar el estado del nodo maestro y esclavo

[email protected]:~$ kubectl get nodes
NAME               STATUS   ROLES    AGE    VERSION
k8s-master         Ready    master   100m   v1.13.2
k8s-worker-node1   Ready    <none>   10m    v1.13.2
k8s-worker-node2   Ready    <none>   4m6s   v1.13.2
[email protected]:~$

El comando anterior confirma que hemos agregado con éxito nuestros dos nodos de trabajo en el clúster y su estado es Listo. Esto concluye que hemos instalado y configurado correctamente el clúster de Kubernetes de dos nodos en los sistemas Ubuntu 18.04.

Obtenga más información sobre:​​Implementar pod, controlador de replicación y servicio en Kubernetes


Ubuntu
  1. Cómo instalar y configurar Redis en Ubuntu 18.04

  2. Cómo instalar y configurar Redmine en Ubuntu 18.04

  3. Cómo instalar y configurar Samba en Ubuntu 18.04

  4. Cómo instalar y configurar Ansible en Ubuntu 18.04 LTS

  5. Cómo instalar y configurar Fail2ban en Ubuntu 20.04 LTS

Cómo instalar y configurar GitLab CE en Ubuntu 18.04 LTS

Cómo instalar y configurar Kubernetes en Ubuntu

Cómo instalar y configurar Docker-CE en Ubuntu 18.04 LTS

Cómo instalar y configurar Odoo ERP en Ubuntu 20.04 LTS

Cómo instalar y configurar MySQL en Ubuntu 20.04 LTS

Cómo instalar y configurar el servidor DNS en Ubuntu 16.04 LTS