En este artículo, aprenderemos sobre la instalación de un clúster de Kubernetes usando Kubeadm en RHEL 8 y sus versiones clonadas, como AlmaLinux 8, CentOS 8 y Rocky Linux 8.
Antes de ingresar, debe tener un Comprensión básica de los conceptos y la arquitectura de KubernetesEn este artículo, demostraremos un clúster de dos nodos.
Para instalar, necesitamos los requisitos básicos que se mencionan a continuación.
- Al menos 2 hosts.
- 2 CPU.
- 2GB de memoria física (RAM).
- 20 GB de espacio en disco.
- Conexión a Internet para descargar paquetes de software.
Tabla de Contenidos
1. Configure el nombre de host y la dirección IP
Establezca el nombre de host y configure el host en Master and Workers. Los hosts de archivos del sistema operativo se utilizan para convertir nombres de host o nombres de dominio en direcciones IP.
Aquí tendremos dos hosts:
- ostechmaster-master
- ostechworker-trabajador
Utilice el siguiente comando para configurar el nombre de host. Después de configurar el nombre de host, debe reiniciar.
# hostnamectl set-hostname ostechmaster
editar /etc/hosts
documento:
# vi /etc/hosts
Agregue el nombre de host y la dirección IP del servidor y el cliente a /etc/hosts
documento:
Realice una prueba de ping para garantizar la conectividad:
[[email protected] ~]# ping ostechworker PING ostechworker (172.31.5.141) 56(84) bytes of data. 64 bytes from ostechworker (172.31.5.141): icmp_seq=1 ttl=64 time=0.472 ms 64 bytes from ostechworker (172.31.5.141): icmp_seq=2 ttl=64 time=0.492 ms 64 bytes from ostechworker (172.31.5.141): icmp_seq=3 ttl=64 time=1.43 ms 64 bytes from ostechworker (172.31.5.141): icmp_seq=4 ttl=64 time=0.425 ms
2. Deshabilitar SElinux
SElinux está deshabilitado en Master y Workers, por lo que si SElinux está deshabilitado, todos los contenedores pueden acceder fácilmente al sistema de archivos del host.
FabricarSELINUX=disabled
‘En el archivo de configuración /etc/selinux/config
Utilice el editor vi. Es necesario reiniciar para reflejar los cambios de SElinux.
[[email protected] ~]# vi /etc/selinux/config
Utilice el siguiente comando para garantizar el estado de SElinux.
[[email protected] ~]# sestatus SELinux status: disabled
3. Deshabilitar el intercambio en Master y Worker
El intercambio debe estar deshabilitado en todos los hosts de Kubernetes (Master y Workers). Este es el método de implementación preferido para la comunidad de Kubernetes. Si el intercambio no está deshabilitado, el servicio de kubelet no se iniciará en el maestro y los trabajadores.
Ejecute el siguiente comando para deshabilitar SWAP:
[[email protected] ~]# swapoff -a && sed -i '/swap/d' /etc/fstab
4. Permita los puertos necesarios en el firewall
Para que los componentes de Kubernetes interactúen entre sí, deben estar disponibles ciertos puertos básicos. Los siguientes son los puertos que se abrirán para la conexión entre los componentes de Kubernetes.
Plano de control / servidor principal:
protocolo | dirección | Rango de puertos | Propósito | usuario |
TCP | Entrante | 6443 | Servidor de API de Kubernetes | todo |
TCP | Entrante | 2379-2380 | API de cliente del servidor etcd | kube-apiserver, etcd |
TCP | Entrante | 10250 | API de Kubelet | Ego, plano de control |
TCP | Entrante | 10259 | programador de kube | Propio |
TCP | Entrante | 10257 | administrador-controlador-kube | Propio |
Nodo de trabajo:
protocolo | dirección | Rango de puertos | Propósito | usuario |
TCP | Entrante | 10250 | API de Kubelet | Ego, plano de control |
TCP | Entrante | 30000-32767 | Servicio de puerto de nodo | todo |
Para permitir que los puertos requeridos pasen a través del firewall, ejecute el siguiente comando.
Nodo maestro:
[[email protected] ~]# firewall-cmd --permanent --add-port=6443/tcp
[[email protected] ~]# firewall-cmd --permanent --add-port=2379-2380/tcp
[[email protected] ~]# firewall-cmd --permanent --add-port=10250/tcp
[[email protected] ~]# firewall-cmd --permanent --add-port=10251/tcp
[[email protected] ~]# firewall-cmd --permanent --add-port=10259/tcp
[[email protected] ~]# firewall-cmd --permanent --add-port=10257/tcp
[[email protected] ~]# firewall-cmd --reload
Nodo de trabajo:
[[email protected] ~]# firewall-cmd --permanent --add-port=10250/tcp
[[email protected] ~]# firewall-cmd --permanent --add-port=30000-32767/tcp
[[email protected] ~]# firewall-cmd --reload
Estamos deshabilitando el firewall en Master y Worker porque es para fines de demostración. Sin embargo, no se recomienda para prácticas de producción en tiempo real.
Utilice los siguientes comandos para detener y deshabilitar el firewall.
[[email protected] ~]# systemctl stop firewalld
[[email protected] ~]# systemctl disable firewalld
5. Instale Docker
Docker puede «construir» contenedores más fácilmente y Kubernetes puede «administrarlos» en tiempo real. Para empaquetar y enviar software, use Docker. Para iniciar y escalar su aplicación, use Kubernetes.
Agregue el repositorio de Docker a todas las máquinas del clúster.
Crea un archivo llamado docker.repo
bajo /etc/yum.repos.d/
contenido:
[[email protected] ~]# vi /etc/yum.repos.d/docker.repo
Agregue las siguientes líneas en él:
[docker] baseurl=https://download.docker.com/linux/centos/8/x86_64/stable/ gpgcheck=0
Presione la tecla ESC e ingrese :wq
Guarde el archivo y ciérrelo.
Instale la ventana acoplable en los nodos maestro y trabajador:
# yum -y install docker-ce
Después de la instalación, habilite e inicie Docker en ambos nodos:
# systemctl enable docker
# systemctl start docker
Verifique para asegurarse de que Docker se esté ejecutando en ambas máquinas.
# systemctl status docker
6. Instale Kubernetes
Agregue repositorios de Kubernetes en Master y Worker.
Crea un archivo kubernetes.repo
Bajo Maestro y Trabajador /etc/yum.repos.d/
contenido:
# vi /etc/yum.repos.d/kubernetes.repo
Agrega las siguientes líneas:
[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
Presione ESC e ingrese :wq
Guarde el archivo y ciérrelo.
Utilice los siguientes comandos para instalar kubeadm, kubelet y kubectl en los nodos maestro y trabajador:
# yum install -y kubelet kubeadm kubectl --disableexcludes=Kubernetes
Habilitar y comenzar kubelet
Servicios en dos máquinas:
# systemctl enable kubelet
# systemctl start kubelet
Verifique el estado del servicio de Kubelet y asegúrese de que esté funcionando bien en ambas máquinas.
# systemctl status kubelet
7. Inicializar Kubernetes
Utilice el siguiente comando para inicializar Kubernetes en el servidor maestro
[[email protected] ~]# kubeadm init
Obtendrá el siguiente resultado, que indica que el plano de control de Kubernetes se ha inicializado correctamente. Y se mencionarán algunos pasos para comenzar a usar el clúster, siga los pasos.
También copie y guarde 'kubeadm join'
Desde el comando de salida, se usará para unirse a los nodos trabajadores en el clúster.
Salida de muestra:
Your Kubernetes control-plane has initialized successfully! To start using your cluster, you need to run the following as a regular user: mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config Alternatively, if you are the root user, you can run: export KUBECONFIG=/etc/kubernetes/admin.conf You should now deploy a pod network to the cluster. Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at: https://kubernetes.io/docs/concepts/cluster-administration/addons/ Then you can join any number of worker nodes by running the following on each as root: kubeadm join 172.31.10.29:6443 --token 220tvj.051bkeyj5tg6v55r --discovery-token-ca-cert-hash sha256:434c49c7969256a7fae3880b340202cadd4fd29d3d381ab37e1cb8b1d05e86f2
Como estamos haciendo root
El usuario, como se describe en el resultado anterior, ejecute el siguiente comando en el servidor maestro.
[[email protected] ~]# export KUBECONFIG=/etc/kubernetes/admin.conf
8. Configure la red POD
La red de pod de Kubernetes es una red de componentes interconectados en Kubernetes. Este concepto de red se puede implementar de varias formas diferentes.En nuestra demostración, usaremos «Red de tejido».
Ejecute el siguiente comando en el servidor principal para configurar la red POD.
[[email protected] ~]# export kubever=$(kubectl version | base64 | tr -d 'n')
[[email protected] ~]# kubectl apply -f https://cloud.weave.works/k8s/net?k8s-version=$kubever
Salida de muestra:
serviceaccount/weave-net created clusterrole.rbac.authorization.k8s.io/weave-net created clusterrolebinding.rbac.authorization.k8s.io/weave-net created role.rbac.authorization.k8s.io/weave-net created rolebinding.rbac.authorization.k8s.io/weave-net created daemonset.apps/weave-net created [[email protected] ~]#
9. Únase al nodo Trabajador
Atropellarkubeadm join
‘Comando para unir el nodo de trabajo al clúster.Este es el comando del que copiamos ‘kubeadm init
‘Producción.
[[email protected] ~]# kubeadm join 172.31.10.29:6443 --token 220tvj.051bkeyj5tg6v55r --discovery-token-ca-cert-hash sha256:434c49c7969256a7fae3880b340202cadd4fd29d3d381ab37e1cb8b1d05e86f2
Puede verificar los nodos en el servidor maestro con el siguiente comando
# kubectl get nodes
Salida de muestra:
NAME STATUS ROLES AGE VERSION ostechmaster Ready control-plane,master 32m v1.23.1 ostechworker Ready30m v1.23.1
en conclusión
En este artículo, vimos los pasos detallados para instalar y configurar un clúster de Kubernetes con Kubeadm.Consulte nuestro anterior Serie de Kubernetes Un artículo para obtener más información sobre la arquitectura y los conceptos de Kubernetes. Veremos el funcionamiento de Kubernetes en el próximo artículo.
recurso: