Скажем, у меня есть два пространства имен k8s-app1 и k8s-app2
Я могу перечислить все модули из определенного пространства имен, используя следующую команду
kubectl get pods -n <namespace>
Нам нужно добавить пространство имен ко всем командам, чтобы перечислить объекты из соответствующих пространств имен. Есть ли способ установить конкретное пространство имен и список объектов без явного включения пространства имен?
kubernetes
namespaces
П. Экамбарам
источник
источник
kubectl config set-context --help
может быть, вы ищетеОтветы:
Мне нравятся мои ответы кратко, по существу и со ссылками на официальную документацию:
Ответ :
kubectl config set-context --current --namespace=my-namespace
Откуда :
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
источник
kubectl config view | grep namespace:
Вы можете использовать команды kubectl:
Только пространство имен переключателя:
kubectl config set-context --current --namespace=<namespace>
Создайте новый контекст с определенным пространством имен:
kubectl config set-context gce-dev --user=cluster-admin --namespace=dev kubectl config use-context gce-dev
Или используйте аддоны, такие как kubectx и kubens , команда ниже переключит контекст на
kube-system
:$ kubens kube-system
Еще одна простая альтернатива, которую я предпочитаю, если вы не хотите устанавливать сторонние инструменты, простой способ - использовать псевдоним.
$ 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
источник
kubectl config set-context --current --namespace=""
Мне удалось переключить пространство имен, используя следующие шаги
kubectl config set-context $(kubectl config current-context) --namespace=<namespace> kubectl config view | grep namespace kubectl get pods
Вот как я тестировал
# 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
источник
kubectl config view --minify | grep namespace:
для получения текущего пространства имен.Вы можете использовать следующий пакет под названием kubectx, который упрощает переключение между кластерами с помощью kubectx.
и переключение между пространствами имен с помощью кубенов
источник
Мне не понравились kubectx и kubens, потому что они добавляют еще одну букву для bash- завершения в kubectl команду .
Итак, я просто написал крошечный плагин kubectl-use :
# 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".
Если вам это интересно, проверьте https://github.com/kvaps/kubectl-use
источник
Я создал функцию в .zshrc
ksns() { kubectl config set-context --current --namespace="$1" }
Тогда я звоню
ksns default
источник
Решение
npm install -g k8ss k8ss switch --namespace=your_namespace kubectl get pods
TL; DR; Объяснение по запросу
Существует пакет npm,
k8ss
который означаетK8S Switching between clusters and namespaces
.Полное использование
k8ss switch --cluster=your_new_cluster --namespace=your_new_namespace
Как и в вашем случае, вам нужно только переключить пространство имен, поэтому вы можете использовать команду без какой-либо конфигурации (поскольку вы уже поместили файл конфигурации в
~/.kube/config
).Расширенное использование
Если вам нужно переключаться между разными кластерами, вам нужно поместить несколько файлов конфигурации в свой домашний каталог. В этом случае вы можете перейти к пакету README, чтобы узнать больше.
источник