K8s – Traefik no dispone de puerto disponible después de la actualización
Hola, he implementado Traefik sobre Helm3 en microk8s con estos valores:
deployment:
enabled: true
hostNetwork: true
service:
type: NodePort
ports:
web:
port: 80
nodePort: 30183
targetPort: 80
redirectTo: websecure
websecure:
port: 443
nodePort: null
ingressRoute:
dashboard:
enabled: false
additionalArguments:
- --entryPoints.web.address=:8080/tcp
- --entryPoints.websecure.address=:8443/tcp
- --api=true
- --api.insecure=true
- --api.dashboard=true
- --providers.kubernetesingress=true
- --providers.kubernetescrd=true
- --providers.kubernetesingress.ingressclass=traefik
- --serversTransport.insecureSkipVerify=true
- --certificatesresolvers.le.acme.storage=/data/acme.json
- --certificatesresolvers.le.acme.email=email@example.com
- --certificatesresolvers.le.acme.httpchallenge.entrypoint=web
securityContext:
capabilities:
drop: [ALL]
add: [NETBINDSERVICE]
readOnlyRootFilesystem: true
runAsGroup: 0
runAsNonRoot: false
runAsUser: 0
Luego actualicé Traefik con la configuración adicional en values.yml:
volumes:
- mountPath: /etc/traefik
name: traefik-config
type: configMap
Pero Traefik no puede iniciarse porque no hay 0/1 nodos disponibles: 1 nodo(s) no tiene puertos libres para los puertos de los pods solicitados. Desinstalar e instalar de nuevo no ha resuelto el problema.
—— EDITAR
Después de agregar un nuevo nodo, Traefik tiene un nuevo error: 0/2 nodos están disponibles: 1 nodo(s) no tiene puertos libres para los puertos del pod solicitados, 1 nodo(s) tenía una tolerancia no alcanzable {node.kubernetes.io/unreachable: }.
davy.ai
Problema
El error indica que Traefik no puede iniciarse debido a la falta de puertos disponibles para los puertos de pod solicitados. Desinstalar y reinstalar la aplicación no resolvió el problema, y agregar un nuevo nodo resultó en un nuevo mensaje de error que indicaba que uno de los nodos tenía una restricción (“taint”) que el pod no toleraba.
Solución
Existen algunos pasos que puedes seguir para resolver este problema:
netstat
para verificar los puertos abiertos.Verifica si alguna otra aplicación está utilizando el mismo puerto de nodo que se especifica en el archivo de configuración.
Verifica si tus nodos están funcionando en un proveedor de servicios en la nube y si el cortafuegos está configurado correctamente. A veces, el cortafuegos del proveedor de servicios en la nube puede bloquear los puertos solicitados.
Verifica si los nodos tienen suficientes recursos, como memoria y CPU, para ejecutar Traefik.
Verifica si los nodos tienen las configuraciones requeridas de DNS, red y almacenamiento.
Asegúrate de que los pods toleren correctamente cualquier restricción (“taints”) en los nodos.
Verifica que el configMap añadido sea correcto y contenga la configuración requerida para Traefik.
Una vez que hayas identificado y resuelto el problema subyacente, puedes intentar reinstalar Traefik en tu clúster microk8s con el configMap añadido.