Как поменять пространство имен в кубернетес - PullRequest
6 голосов
/ 27 марта 2019

скажем, у меня есть два пространства имен: k8s-app1 и k8s-app2

я могу перечислить все модули из определенного пространства имен, используя следующую команду

kubectl get pods -n <namespace>

необходимо добавить пространство имен ко всем командамперечислить объекты из соответствующих пространств имен.Есть ли способ установить конкретное пространство имен и список объектов без явного включения пространства имен?

Ответы [ 5 ]

11 голосов
/ 28 мая 2019

Мне нравятся мои короткие, точные и со ссылками на официальную документацию:

Ответ :

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
4 голосов
/ 27 марта 2019

Мне удалось переключить пространство имен, используя следующие шаги

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
2 голосов
/ 27 марта 2019

Вы можете использовать команды kubectl:

kubectl config set-context gce --user=cluster-admin --namespace=foo \
  && kubectl config use-context gce

Или использовать дополнения, например kubectx & kubens , приведенная ниже команда переключит контекст на kube-system:

$ kubens kube-system

Еще одна простая альтернатива, если вы не хотите устанавливать сторонние инструменты, - использовать псевдоним.

$ alias kubens='f(){ kubectl config set-context $(kubectl config current-context) --namespace="$@";  unset -f f; }; f'
$ kubens kube-system
1 голос
/ 05 мая 2019

Вы можете использовать следующий пакет под названием kubectx , который позволяет очень легко переключаться между кластерами с помощью kubectx

enter image description here

и переключение между пространствами имен с использованием kubens

enter image description here

0 голосов
/ 23 июня 2019

Решение

npm install -g k8ss

k8ss switch --namespace=your_namespace
kubectl get pods

TLDR; Объяснение по запросу

Существует пакет npm под названием k8ss, который обозначает K8S Switching between clusters and namespaces.

Полное использование

k8ss switch --cluster=your_new_cluster --namespace=your_new_namespace

Как и в вашем случае, вам нужно только переключить пространство имен, чтобы вы могли использовать команду без какой-либо конфигурации (как вы уже поместили файл конфигурации в ~/.kube/config).

Расширенное использование

Если вам нужно переключаться между различными кластерами, вам нужно поместить несколько файлов конфигурации в ваш домашний каталог. В этом случае вы можете перейти к пакету README , чтобы узнать больше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...