Guía de instalación de Kubernetes 1.26 y explicación de sus componentes

Configuración del entorno para Kubernetes 1.26

Definición de los hosts:

maestro-control 10.0.0.100
trabajador-alfa 10.0.0.101
trabajador-beta 10.0.0.102

Instalación de Docker y containerd. Ajuste del archivo config.toml.

1. Tareas iniciales

Deshabilitar firewall y SELinux

systemctl disable firewalld.service --now
setenforce 0
vi /etc/selinux/config

Desactivar swap

swapoff -a

Activar parámetros del kernel

vi /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1 
net.bridge.bridge-nf-call-iptables = 1 
net.ipv4.ip_forward = 1 

sysctl -p /etc/sysctl.d/k8s.conf

2. Configuración esencial

Establecre repositorios para Docker y Kubernetes

yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

Instalar Docker CE

yum -y install docker-ce
systemctl enable docker --now

Editar el archivo config.toml

containerd config default > /etc/containerd/config.toml

vi config.toml

SystemdCgroup = true
sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.9"

# Ajustar política de descarga de imágenes
[plugins."io.containerd.grpc.v1.cri".registry.mirrors]
   [plugins."io.containerd.grpc.v1.cri".registry.mirrors."registry.k8s.io"]
      endpoint = ["https://registry-k8s-io.mirrors.sjtug.sjtu.edu.cn"]
   [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
      endpoint = ["https://mi-espejo-configurado"]     

systemctl restart containerd
systemctl enable containerd

Instalar kubelet, kubeadm y kubectl

yum -y install kubelet-1.26.0 kubeadm-1.26.0 kubectl-1.26.0

# Habilitar kubelet
systemctl enable kubelet --now

Configurar el runtime del contenedor

crictl config runtime-endpoint unix:///var/run/containerd/containerd.sock
crictl config image-endpoint unix:///var/run/containerd/containerd.sock

3. Pasos en el nodo maestro

Inicializar el clúster de Kubernetes

kubeadm init --apiserver-advertise-address=10.0.0.100 \
 --kubernetes-version=v1.26.0 \
 --pod-network-cidr=10.244.0.0/16 \
 --image-repository=registry.aliyuncs.com/google_containers

Explicación de opciones:

  • --image-repository: Almacén para imágenes del plano de control.
  • --apiserver-advertise-address: Dirección IP del nodo maestro.
  • --pod-network-cidr: Rango de subred para los pods.

Incorproar nodos trabajadores

En trabajador-alfa y trabajador-beta, ejecutar:

kubeadm join 10.0.0.100:6443 --token xyzabc.9876543210xyzabc --discovery-token-ca-cert-hash sha256:789def456...

Los nodos permanecerán en estado notready hasta que se despliegue un plugin de red.

Implementar el plugin de red Calico

Obtener los manifiestos YAML de Calico v3.25.

kubectl create -f tigera-operator.yaml

# Ajustar custom-resources.yaml con el rango de red deseado para pods
kubectl create -f custom-resources.yaml

Comprobar los pods en ejecución:

kubectl get pods -A

4. Validación de nodos y prueba de red

kubectl get nodes

Crear y verificar un pod:

kubectl run demo-pod --image=httpd --restart=Never
kubectl exec -ti demo-pod -- /bin/bash
curl http://www.ejemplo.com

5. Habilitar autocompletado

echo 'source <(kubectl completion bash)' >> /root/.bashrc
source /root/.bashrc

6. Desplegar metrics-server

Descargar la versión 0.6.3 de metrics-server.

# Modificar el archivo de despliegue para incluir --kubelet-insecure-tls
kubectl apply -f metrics-server.yaml

# Utilizar el comando
kubectl top nodes

Arquitectura de componentes de Kubernetes

1. API Server

Punto de acceso único para todas las operaciones del clúster, procesando solicitudes RESTful.

2. Cliente kubectl

Interfaz de línea de comandos que traduce comandos en llamadas a la API.

3. Scheduler

Asigna pods a nodos según recursos disponibles y restricciones definidas.

4. etcd

Almacén de datos clave-valor distribuido que mantiene el estado persistente del clúster.

5. Controller Manager

Ejecuta bucles de control para reconciliar el estado actual con el deseado.

6. kubelet

Agente en cada nodo que gestiona el ciclo de vida de los pods y reporta métricas.

7. kube-proxy

Mantiene reglas de red para facilitar la comunicación entre pods y servicios externos.

Recursos fundamentales en Kubernetes

1. Pod

Unidad de despliegue atómica que encapsula uno o más contenedores que comparten recursos.

Etiquetas: Kubernetes kubeadm containerd calico kubectl

Publicado el 5-31 07:25