125 lines
5.7 KiB
Groff
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.
|