Antecedentes: hay un clúster A y un clúster B en Azure AKS. Cree un pod llamado Agente que ejecute el contenedor de Linux en el clúster A en la prueba de espacio de nombres (que no es el espacio de nombres predeterminado ). En el contenedor de Linux, están instalados pwsh y kubectl.
Operación: Ingrese al pod/agente en el clúster A (kubectl exec -it pod/agent -- bash) y obtenga la credencial del clúster B, el archivo de configuración se configurará con el nombre del clúster y el nombre de usuario, pero SIN espacio de nombres .
Cuando se conecta al clúster B desde pod/Agent, luego ejecuta kubectl get pods , se devuelve el recurso dentro de la prueba del espacio de nombres en lugar de los recursos dentro del espacio de nombres predeterminado .
Dado que no hay un espacio de nombres llamado prueba en el clúster B, no se devuelve ningún recurso.
Entonces, me pregunto dónde se define/configura la prueba del espacio de nombres en el pod/Agent como el espacio de nombres predeterminado.
Pasé un tiempo tratando de sumergirme en el código kubectl en github, sin suerte ...
También traté de usar alias, pero solo funciona para bash/sh, no para pwsh, ya que no quiero cambiar el nombre del comando kubectl, si hago alias kubectl='kubectl -n default', pwsh se atascaría en un círculo.
Cualquier respuesta es apreciada.
De documentos :
Finalmente, el espacio de nombres predeterminado que se usará para las operaciones de la API con espacio de nombres se coloca en un archivo en /var/run/secrets/kubernetes.io/serviceaccount/namespace en cada contenedor.
Prueba simple de un pod:
root@ubuntu:/# strace -eopenat kubectl get pod 2>&1 | grep namespace openat(AT_FDCWD, "/var/run/secrets/kubernetes.io/serviceaccount/namespace", O_RDONLY|O_CLOEXEC) = 6 Error from server (Forbidden): pods is forbidden: User "system:serviceaccount:default:default" cannot list resource "pods" in API group "" in the namespace "default" El directorio /run/secrets/kubernetes.io/serviceaccount siempre está montado de manera predeterminada en el pod y contiene el token de la cuenta de servicio para acceder a la API de Kube.