Digamos, tengo dos espacios de nombres k8s-app1 y k8s-app2
Puedo enumerar todos los pods de un espacio de nombres específico usando el siguiente comando
kubectl get pods -n <namespace>
Necesitamos agregar espacios de nombres a todos los comandos para listar objetos de los respectivos espacios de nombres. ¿Hay alguna forma de establecer un espacio de nombres específico y enumerar objetos sin incluir el espacio de nombres explícitamente?
kubernetes
namespaces
P Ekambaram
fuente
fuente
kubectl config set-context --help
, puede que estés buscandoRespuestas:
Me gustan mis respuestas breves, al grano y con referencias a documentación oficial:
Respuesta :
kubectl config set-context --current --namespace=my-namespace
De :
https://kubernetes.io/docs/reference/kubectl/cheatsheet/
# permanently save the namespace for all subsequent kubectl commands in that context. kubectl config set-context --current --namespace=ggckad-s2
fuente
kubectl config view | grep namespace:
Puede utilizar los comandos de kubectl:
Cambiar solo el espacio de nombres:
kubectl config set-context --current --namespace=<namespace>
Cree un nuevo contexto con espacio de nombres definido:
kubectl config set-context gce-dev --user=cluster-admin --namespace=dev kubectl config use-context gce-dev
O use complementos, como kubectx y kubens , el siguiente comando cambiará el contexto a
kube-system
:$ kubens kube-system
Otra alternativa fácil que prefiero, no desea instalar herramientas de terceros, es usar alias.
$ alias kubens='kubectl config set-context --current --namespace ' $ alias kubectx='kubectl config use-context ' $ kubens kube-system //Switch to a different namespace $ kubectx docker //Switch to separate context
fuente
kubectl config set-context --current --namespace=""
Pude cambiar el espacio de nombres usando los pasos a continuación
kubectl config set-context $(kubectl config current-context) --namespace=<namespace> kubectl config view | grep namespace kubectl get pods
Así es como he probado
# Create namespaces k8s-app1, k8s-app2 and k8s-app3 master $ kubectl create ns k8s-app1 namespace/k8s-app1 created master $ kubectl create ns k8s-app2 namespace/k8s-app2 created master $ kubectl create ns k8s-app3 namespace/k8s-app3 created # Create Service Account app1-sa in k8s-app1 # Service Account app2-sa in k8s-app2 # Service Account app3-sa in k8s-app3 master $ kubectl create sa app1-sa -n k8s-app1 serviceaccount/app1-sa created master $ kubectl create sa app2-sa -n k8s-app2 serviceaccount/app2-sa created master $ kubectl create sa app3-sa -n k8s-app3 serviceaccount/app3-sa created # Switch namespace master $ kubectl config set-context $(kubectl config current-context) --namespace=k8s-app1 Context "kubernetes-admin@kubernetes" modified. master $ kubectl config view | grep namespace namespace: k8s-app1 master $ kubectl get sa NAME SECRETS AGE app1-sa 1 1m default 1 6m master $ master $ kubectl config set-context $(kubectl config current-context) --namespace=k8s-app2 Context "kubernetes-admin@kubernetes" modified. master $ kubectl get sa NAME SECRETS AGE app2-sa 1 2m default 1 7m master $ master $ kubectl config set-context $(kubectl config current-context) --namespace=k8s-app3 Context "kubernetes-admin@kubernetes" modified. master $ kubectl get sa NAME SECRETS AGE app3-sa 1 2m default 1 7m
fuente
kubectl config view --minify | grep namespace:
para obtener el espacio de nombres actual.Puede usar el siguiente paquete llamado kubectx que hace que sea muy fácil cambiar entre clústeres usando kubectx
y cambiar entre espacios de nombres usando kubens
fuente
No me gustó kubectx y kubens porque están agregando una letra más para bash-complection al comando kubectl .
Así que acabo de escribir un pequeño complemento de uso de kubectl :
# kubectl use prod Switched to context "prod". # kubectl use default Switched to namespace "default". # kubectl use stage kube-system Switched to context "stage". Switched to namespace "kube-system".
Si le interesa, consulte https://github.com/kvaps/kubectl-use
fuente
Creé una función en .zshrc
ksns() { kubectl config set-context --current --namespace="$1" }
Entonces llamo
ksns default
fuente
Una solución
npm install -g k8ss k8ss switch --namespace=your_namespace kubectl get pods
TLDR; Explicación según lo solicitado
Hay un paquete npm llamado
k8ss
que significaK8S Switching between clusters and namespaces
.El uso completo es
k8ss switch --cluster=your_new_cluster --namespace=your_new_namespace
Como en su caso, solo necesita cambiar el espacio de nombres, para que pueda usar el comando sin ninguna configuración (como ya puso un archivo de configuración en el
~/.kube/config
).Uso avanzado
Si necesita cambiar entre diferentes clústeres, debe colocar varios archivos de configuración en su directorio de inicio. En este caso, puede ir al paquete README para obtener más información.
fuente