Actualizar readme-suse.md

This commit is contained in:
2025-07-23 23:14:15 +00:00
parent 3573f85e37
commit cc9791ba4a

View File

@ -68,7 +68,9 @@ nmcli con up br-srv
Esta guía cubre todos los pasos necesarios para instalar Kubernetes en openSUSE Leap, Tumbleweed o SLES, usando containerd como runtime y gestionando todo con zypper. Sigue el orden de los pasos para evitar problemas.
---
# Guía definitiva de despliegue Kubernetes (openSUSE/SLES)
> **Revisión y correcciones basadas en el history real de despliegue**
## 1. Prerrequisitos del sistema (SUSE)
@ -84,7 +86,7 @@ sudo zypper install -y curl ca-certificates keepalived
### b) Añade el repositorio oficial de Kubernetes
Crea el archivo de repositorio para Kubernetes (v1.33). Puedes cambiar la versión por otra si lo necesitas:
Crea el archivo de repositorio para Kubernetes (v1.33):
```bash
cat <<EOF | sudo tee /etc/zypp/repos.d/kubernetes.repo
@ -97,8 +99,7 @@ gpgkey=https://pkgs.k8s.io/core:/stable:/v1.33/rpm/repodata/repomd.xml.key
EOF
```
Actualiza la caché de repositorios y acepta la clave GPG cuando se te pida (recomendado: pulsa 'a' para confiar siempre en la clave):
Actualiza la caché de repositorios y acepta la clave GPG cuando se te pida:
```bash
sudo zypper refresh
@ -107,7 +108,6 @@ sudo zypper update
> Cuando veas el aviso sobre la clave GPG, pulsa 'a' para aceptar siempre.
### c) Configuración de Keepalived
En SRVFKVM01 (MASTER):
@ -130,7 +130,9 @@ vrrp_instance VI_1 {
}
EOF
```
En los demas (BACKUP):
En los demás (BACKUP):
```bash
cat <<EOF | sudo tee /etc/keepalived/keepalived.conf
vrrp_instance VI_1 {
@ -149,15 +151,16 @@ cat <<EOF | sudo tee /etc/keepalived/keepalived.conf
}
EOF
```
Después en todos:
sudo systemctl enable keepalived
sudo systemctl start keepalived
```
sudo systemctl enable keepalived
sudo systemctl start keepalived
```
---
## 2. Instala containerd (runtime recomendado)
`containerd` es el motor que gestiona los contenedores en el clúster. Kubernetes necesita un “runtime” para crear y controlar los pods, y containerd es la opción oficial y más estable.
@ -223,7 +226,6 @@ sudo firewall-cmd --zone=trusted --add-port=30000-32767/tcp --permanent
# Recarga las reglas
sudo firewall-cmd --reload
```
---
@ -235,6 +237,7 @@ Instala en un solo paso las utilidades principales:
```bash
sudo zypper install -y kubectl kubelet kubeadm
```
Edita `/etc/sysconfig/kubelet` para poner la dirección IP que tendrá el nodo:
```bash
@ -247,12 +250,14 @@ Activa kubelet para que se inicie automáticamente:
sudo systemctl enable kubelet
sudo systemctl start kubelet
```
> Es **normal** que el servicio kubelet falle en bucle hasta que inicialices el clúster con `kubeadm init`.
> El error más frecuente es:
>
> * "failed to load Kubelet config file, path: /var/lib/kubelet/config.yaml"
>
> Tras ejecutar `kubeadm init`, kubelet arrancará correctamente.
---
## 5b. (Opcional) Habilita cgroup v2 (solo SLES si necesario)
@ -319,11 +324,40 @@ sudo chown $(id -u):$(id -g) $HOME/.kube/config
Kubernetes solo define la infraestructura; necesitas un complemento de red (CNI) para que los pods puedan comunicarse entre sí. Flannel es la opción más sencilla y compatible, y puedes configurarla para usar una interfaz/VLAN específica para el tráfico overlay (muy recomendable si segmentas redes en tu clúster).
### **¡ATENCIÓN! CNI Y PLUGINS:**
Antes de aplicar Flannel, **asegúrate de tener los plugins CNI instalados en `/opt/cni/bin/`** (en SUSE esto NO siempre lo hace el paquete de Flannel):
```bash
CNI_VERSION="v1.4.1"
ARCH="amd64"
curl -Lo cni-plugins.tgz https://github.com/containernetworking/plugins/releases/download/${CNI_VERSION}/cni-plugins-linux-${ARCH}-${CNI_VERSION}.tgz
sudo mkdir -p /opt/cni/bin
sudo tar -C /opt/cni/bin -xzf cni-plugins.tgz
```
Verifica que existen al menos:
* `/opt/cni/bin/loopback`
* `/opt/cni/bin/flannel`
* `/opt/cni/bin/bridge` y otros
Corrige permisos si hace falta:
```bash
sudo chmod +x /opt/cni/bin/*
sudo chown root:root /opt/cni/bin/*
```
**Luego sí aplica Flannel:**
```bash
kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml
```
## e) Comprueba que Flannel funciona
---
## e) Comprueba que Flannel funciona
```bash
kubectl -n kube-flannel get pods -o wide
@ -331,6 +365,12 @@ kubectl -n kube-flannel get pods -o wide
> Todos los pods deben estar en estado `Running`.
Si no levanta, **verifica logs y revisa `/opt/cni/bin/`**:
* Los binarios deben ser para la arquitectura correcta (x86\_64/amd64).
* Deben tener permisos de ejecución y ser propiedad de root.
---
## f) Une el resto de nodos control-plane
@ -352,12 +392,25 @@ Credenciales para todos (lo que le gusta al jefe):
```bash
mkdir -p $HOME/.kube
cd
cd
sudo cp -i admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
```
---
## **Troubleshooting y buenas prácticas extra**
* Si ves errores con el loopback CNI (`exec format error`, `permission denied`, etc.), **borra el contenido de `/opt/cni/bin/` y vuelve a instalar los plugins**.
* Siempre revisa que el módulo `br_netfilter` está cargado y los sysctl activos (`lsmod | grep br_netfilter`).
* Si el nodo aparece como NotReady, revisa `/etc/cni/net.d/`, los logs de kubelet, y repite la reinstalación del CNI.
* **Si limpias todo y reinicias, repite estos pasos:**
* Reinstala CNI plugins
* Aplica Flannel
* Reinicia kubelet
# 8. Instala Multus (opcional, para múltiples redes)
Multus permite que un pod tenga más de una interfaz de red (multi-homed), útil para appliances, firewalls, balanceadores, gateways, etc. Instálalo si necesitas conectar pods a varias redes físicas o VLANs (por ejemplo, mediante bridges y NADs).