GNU/Linux >> Tutoriales Linux >  >> Cent OS

Cómo instalar un clúster Docker de Kubernetes en CentOS 7

Kubernetes es una plataforma de código abierto para administrar aplicaciones en contenedores desarrollada por Google. Le permite administrar, escalar e implementar automáticamente sus aplicaciones en contenedores en el entorno agrupado. Con Kubernetes, podemos orquestar nuestros contenedores en múltiples hosts, escalar las aplicaciones en contenedores con todos los recursos sobre la marcha y tener un entorno de administración de contenedores centralizado.

En este tutorial, le mostraré paso a paso cómo instalar y configurar Kubernetes en CentOS 7. Usaremos 1 servidor 'k8s-master' como Kubernetes Host Master y 2 servidores como nodo de Kubernetes, 'node01' y 'nodo02'.

Requisitos

  • 3 servidores CentOS 7
    • 10.0.15.10      k8s-maestro
    • 10.0.15.21      nodo01
    • 10.0.15.22      nodo02
  • Privilegios de raíz

¿Qué haremos?

  1. Instalación de Kubernetes
  2. Inicialización del clúster de Kubernetes
  3. Agregar node01 y node02 al clúster
  4. Pruebas:crear el primer pod

Paso 1:instalación de Kubernetes

En este primer paso, prepararemos esos 3 servidores para la instalación de Kubernetes, así que ejecute todos los comandos en los servidores maestro y de nodo.

Prepararemos todos los servidores para la instalación de Kubernetes cambiando la configuración existente en los servidores y también instalando algunos paquetes, incluidos docker-ce y kubernetes.

- Configurar hosts

Edite el archivo de hosts en todos los servidores usando el editor vim.

vim /etc/hosts

Pegue la lista de anfitriones a continuación.

10.0.15.10      k8s-master
10.0.15.21      node01
10.0.15.22      node02

Guardar y salir.

- Deshabilitar SELinux

En este tutorial, no cubriremos la configuración de SELinux para Docker, por lo que lo deshabilitaremos.

Ejecute el siguiente comando para deshabilitar SELinux.

setenforce 0
sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux

- Habilitar módulo kernel br_netfilter

El módulo br_netfilter es necesario para la instalación de kubernetes. Habilite este módulo de kernel para que los paquetes que atraviesan el puente sean procesados ​​por iptables para el filtrado y el reenvío de puertos, y los pods de kubernetes en todo el clúster puedan comunicarse entre sí.

Ejecute el siguiente comando para habilitar el módulo kernel br_netfilter.

modprobe br_netfilter
echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables

- Deshabilitar SWAP

Deshabilite la instalación de SWAP para kubernetes ejecutando los siguientes comandos.

swapoff -a

Y luego edite el archivo '/etc/fstab'.

vim /etc/fstab

Comente el UUID de la línea de intercambio como se muestra a continuación.

- Instalar Docker CE

Instale la última versión de Docker-ce desde el repositorio de docker.

Instale las dependencias del paquete para docker-ce.

yum install -y yum-utils device-mapper-persistent-data lvm2

Agregue el repositorio docker al sistema e instale docker-ce usando el comando yum.

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce

Espere a que se instale docker-ce.

- Instalar Kubernetes

Agregue el repositorio de kubernetes al sistema centos 7 ejecutando el siguiente comando.

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg
        https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF

Ahora instale los paquetes de kubernetes kubeadm, kubelet y kubectl usando el siguiente comando yum.

yum install -y kubelet kubeadm kubectl

Una vez completada la instalación, reinicie todos esos servidores.

sudo reboot

Vuelva a iniciar sesión en el servidor e inicie los servicios, docker y kubelet.

systemctl start docker && systemctl enable docker
systemctl start kubelet && systemctl enable kubelet

- Cambiar el controlador de cgroup

Necesitamos asegurarnos de que docker-ce y kubernetes estén usando el mismo 'cgroup'.

Verifique docker cgroup usando el comando docker info.

docker info | grep -i cgroup

Y ves que la ventana acoplable está usando 'cgroupfs ' como controlador de cgroup.

Ahora ejecute el siguiente comando para cambiar el controlador cgroup de kuberetes a 'cgroupfs'.

sed -i 's/cgroup-driver=systemd/cgroup-driver=cgroupfs/g' /etc/systemd/system/kubelet.service.d/10-kubeadm.conf

Vuelva a cargar el sistema systemd y reinicie el servicio kubelet.

systemctl daemon-reload
systemctl restart kubelet

Ahora estamos listos para configurar el clúster de Kubernetes.

Paso 2:inicialización del clúster de Kubernetes

En este paso, inicializaremos la configuración del clúster maestro de kubernetes.

Mueva el shell al servidor maestro 'k8s-master' y ejecute el siguiente comando para configurar el maestro kubernetes.

kubeadm init --apiserver-advertise-address=10.0.15.10 --pod-network-cidr=10.244.0.0/16

Nota:

--apserver-advertise-address =determina en qué dirección IP Kubernetes debe anunciar su servidor API.

--pod-red-cidr =especificar el rango de direcciones IP para la red de pod. Estamos usando la red virtual 'franela'. Si desea utilizar otra red de pod, como weave-net o calico, cambie la dirección IP del rango.

Cuando se complete la inicialización de Kubernetes, obtendrá el siguiente resultado.

Nota:

Copie el 'kubeadm join ... ... ... ' comando a su editor de texto. El comando se usará para registrar nuevos nodos en el clúster de kubernetes.

Ahora, para usar Kubernetes, necesitamos ejecutar algunos comandos como en el resultado.

Cree un nuevo directorio de configuración '.kube' y copie la configuración 'admin.conf'.

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 la red de franela en el clúster de kubernetes mediante el comando kubectl.

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

La red de franela se implementó en el clúster de Kubernetes.

Espere un minuto y luego verifique el nodo y los pods de Kubernetes usando los comandos a continuación.

kubectl get nodes
kubectl get pods --all-namespaces

Y obtendrá que el nodo 'k8s-master' se está ejecutando como un clúster 'maestro' con el estado 'listo', y obtendrá todos los pods que se necesitan para el clúster, incluido el 'kube-flannel-ds' para el pod de red configuración.

Asegúrese de que el estado de todos los pods del sistema kube sea 'en ejecución'.

Se ha completado la inicialización y configuración del maestro de clúster de Kubernetes.

Paso 3:agregar node01 y node02 al clúster

En este paso, agregaremos node01 y node02 para unir el clúster 'k8s'.

Conéctese al servidor node01 y ejecute el comando kubeadm join como lo copiamos en la parte superior.

kubeadm join 10.0.15.10:6443 --token vzau5v.vjiqyxq26lzsf28e --discovery-token-ca-cert-hash sha256:e6d046ba34ee03e7d55e1f5ac6d2de09fd6d7e6959d16782ef0778794b94c61e
c61e

Conéctese al servidor node02 y ejecute el comando kubeadm join como lo copiamos en la parte superior.

kubeadm join 10.0.15.10:6443 --token vzau5v.vjiqyxq26lzsf28e --discovery-token-ca-cert-hash sha256:e6d046ba34ee03e7d55e1f5ac6d2de09fd6d7e6959d16782ef0778794b94c61e
c61e

Espere unos minutos y vuelva al servidor de clúster principal 'k8s-master' para comprobar los nodos y los pods con el siguiente comando.

kubectl get nodes
kubectl get pods --all-namespaces

Ahora obtendrá el nodo01 y el nodo02 se ha agregado al clúster con el estado 'listo'.

node01 y node02 se agregaron al clúster de kubernetes.

Paso 4:probar la creación del primer pod

En este paso, haremos una prueba al implementar el pod de Nginx en el clúster de kubernetes. Un pod es un grupo de uno o más contenedores con almacenamiento compartido y red que se ejecuta bajo Kubernetes. Un Pod contiene uno o más contenedores, como el contenedor Docker.

Inicie sesión en el servidor 'k8s-master' y cree una nueva implementación llamada 'nginx' usando el comando kubectl.

kubectl create deployment nginx --image=nginx

Para ver los detalles de la especificación de implementación de 'nginx', ejecute el siguiente comando.

kubectl describe deployment nginx

Y obtendrá la especificación de implementación del módulo nginx.

A continuación, expondremos el pod nginx accesible a través de Internet. Y necesitamos crear un nuevo servicio NodePort para esto.

Ejecute el siguiente comando kubectl.

kubectl create service nodeport nginx --tcp=80:80

Asegúrate de que no haya ningún error. Ahora verifique el puerto de nodo de servicio nginx y la IP usando el comando kubectl a continuación.

kubectl get pods
kubectl get svc

Ahora verá que el módulo nginx se está ejecutando con la dirección IP del clúster '10.160.60.38' en el puerto 80 y la dirección IP principal del nodo '10.0.15.x' en el puerto '30691'.

Desde el servidor 'k8s-master', ejecute el siguiente comando curl.

curl node01:30691

curl node02:30691

Nginx Pod ahora se implementó en el clúster de Kubernetes y se puede acceder a él a través de Internet.

Ahora acceda desde el navegador web.

http://10.0.15.10:30691/

Y obtendrá la página predeterminada de Nginx.

En el servidor node02 - http://10.0.15.11:30691/

La instalación y configuración del clúster de Kubernetes en CentOS 7 se completó con éxito.


Cent OS
  1. Cómo instalar Docker en CentOS 7

  2. Cómo instalar Kubernetes en Ubuntu 18.04

  3. Cómo instalar un clúster de Kubernetes en CentOS 7

  4. Cómo instalar Docker en CentOS 7 / RHEL 7

  5. Cómo instalar Docker en CentOS

Cómo instalar Rancher en CentOS 8

Cómo instalar Docker en CentOS 7

Cómo instalar Docker Compose en CentOS 7

Cómo instalar Docker en CentOS 8

Cómo instalar Kubernetes en CentOS 8

Cómo instalar el clúster de Kubernetes en CentOS 8