Actualizar readme-suse.md
This commit is contained in:
@ -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).
|
||||
|
Reference in New Issue
Block a user