k9casca2/doc/1.1
2025-04-08 09:54:04 +02:00

125 lines
5.7 KiB
Groff

¡Entendido! A continuación, te proporciono una documentación detallada del problema que experimentaste, los pasos que tomaste y las soluciones aplicadas para resolverlo.
---
# **Documentación del Problema y Solución para Configuración de K3s**
## **1. Descripción del Problema**
Al intentar interactuar con el clúster de K3s mediante el comando `kubectl`, se presentó el siguiente error:
```
error: You must be logged in to the server (the server has asked for the client to provide credentials)
```
Esto indicaba un problema con la autenticación del cliente hacia el servidor de Kubernetes, lo cual podría ser causado por un certificado no confiable o problemas con la configuración del acceso al servidor.
### **Errores Específicos Observados:**
1. **Problema de autoridad de certificación desconocida**:
```
error: couldn't get current server API group list: tls: failed to verify certificate: x509: certificate signed by unknown authority
```
2. **Problemas de autenticación y conexión**:
```
error: You must be logged in to the server (the server has asked for the client to provide credentials)
```
3. **Problemas al intentar establecer la conexión con el servidor local**:
```
error: Couldn't get current server API group list: dial tcp [::1]:8080: connect: connection refused
```
## **2. Diagnóstico del Problema**
### **2.1 Causa principal**
La causa principal parecía ser que el certificado utilizado por el servidor K3s no era reconocido por el cliente `kubectl`. Esto ocurre cuando el certificado del servidor K3s no está en la lista de certificados de confianza del sistema.
### **2.2 Posibles causas secundarias**
- **Error de configuración de `kubectl`:** Puede que el archivo de configuración (`k3s.yaml`) no estuviera correctamente configurado o accesible para el usuario.
- **Problema de autenticación de cliente:** `kubectl` necesita un certificado y una clave que coincidan con los del servidor para autenticar al usuario. Si el archivo `k3s.yaml` no estaba correctamente configurado, el cliente no podría autenticar correctamente.
## **3. Soluciones Aplicadas**
### **3.1 Solución para el problema del certificado no confiable**
1. **Obtener el certificado de autoridad desde el archivo `k3s.yaml`:**
Primero, extraímos el certificado del archivo `k3s.yaml` de K3s. Este archivo contiene información del certificado de la autoridad de certificación que debe ser agregado al sistema.
```bash
sudo cat /etc/rancher/k3s/k3s.yaml
```
Se extrajo el campo `certificate-authority-data` y se decodificó:
```bash
sudo bash -c "echo $(grep 'certificate-authority-data' /etc/rancher/k3s/k3s.yaml | awk '{print $2}') | base64 --decode > /usr/local/share/ca-certificates/k3s.crt && sudo update-ca-certificates"
```
Esto descargó y actualizó el certificado de autoridad en el sistema, registrándolo en el almacén de certificados de confianza.
2. **Resultado:**
El sistema reconoció el certificado de la autoridad de certificación y lo agregó al almacén de certificados confiables.
### **3.2 Solución para el problema de autenticación (usuario y claves)**
1. **Verificación de configuración de `kubectl`:**
Luego, exportamos la variable de entorno `KUBECONFIG` para que `kubectl` apunte al archivo de configuración de K3s:
```bash
export KUBECONFIG=/etc/rancher/k3s/k3s.yaml
```
2. **Verificación del archivo `k3s.yaml`:**
Verificamos que el archivo `k3s.yaml` estuviera correctamente configurado con los certificados de cliente y la clave apropiada, asegurándonos de que la autenticación estuviera bien configurada.
3. **Comprobación de los permisos del archivo:**
El archivo `k3s.yaml` debería tener los permisos adecuados para que el usuario de `kubectl` pudiera acceder a él. Si se presentaban problemas de permisos, se otorgaron los permisos adecuados:
```bash
sudo chmod 644 /etc/rancher/k3s/k3s.yaml
```
### **3.3 Solución para el problema de conexión con el servidor**
En los errores relacionados con la conexión a `localhost:8080`, indicaba que el servidor de K3s no estaba corriendo o no era accesible.
1. **Verificar el estado del servicio de K3s:**
Se verificó que el servicio de K3s estuviera corriendo:
```bash
sudo systemctl status k3s
```
Si el servicio no estaba activo, se reinició:
```bash
sudo systemctl restart k3s
```
2. **Reconfigurar el `kubectl` para apuntar a la IP correcta:**
Como `kubectl` intentaba conectarse a `localhost:8080`, se aseguró que el archivo `k3s.yaml` tuviera la URL correcta del servidor (por ejemplo, `https://127.0.0.1:6443`).
Si fuera necesario, se ajustó el archivo `k3s.yaml` para asegurar que la dirección IP y el puerto estuvieran correctamente configurados.
## **4. Estado Final y Pruebas**
Después de realizar los pasos anteriores, se logró resolver el problema de autenticación y de verificación de certificados, permitiendo ejecutar correctamente el comando:
```bash
kubectl get nodes
```
El clúster respondió correctamente, mostrando los nodos en el clúster de K3s.
## **5. Conclusiones**
- El principal problema fue la falta de confianza en el certificado del servidor de K3s en el cliente `kubectl`.
- Se resolvió extrayendo y agregando el certificado de la autoridad de certificación al almacén de confianza del sistema.
- Además, se configuraron correctamente las variables de entorno y permisos del archivo de configuración `k3s.yaml` para asegurar que `kubectl` pudiera acceder a la información de conexión y autenticación.
---
Este documento describe los pasos que tomaste para solucionar el problema. Si necesitas más detalles o ejemplos de comandos adicionales, no dudes en preguntar.