kubernetes에서 네임 스페이스를 전환하는 방법


84

두 개의 네임 스페이스 k8s-app1과 k8s-app2가 있습니다.

아래 명령을 사용하여 특정 네임 스페이스의 모든 포드를 나열 할 수 있습니다.

kubectl get pods -n <namespace>

각 네임 스페이스의 개체를 나열하려면 모든 명령에 네임 스페이스를 추가해야합니다. 네임 스페이스를 명시 적으로 포함하지 않고 특정 네임 스페이스를 설정하고 개체를 나열하는 방법이 있습니까?


안녕하세요 kubectl config set-context --help당신이 찾고있는 수 있습니다
수레 쉬 Vishnoi

답변:


143

나는 공식 문서에 대한 언급과 함께 짧은 대답을 좋아합니다.

답변 :

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

7
그것은 현재의 네임 스페이스는 다음 명령을 실행하여 변경된 것을 확인하려면 좋은 연습입니다kubectl config view | grep namespace:
TET

42

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

현재 네임 스페이스를 어떻게 설정 해제합니까?
스티븐

1
kubectl config set-context --current --namespace=""
Diego Mendes

24

아래 단계를 사용하여 네임 스페이스를 전환 할 수있었습니다.

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

1
kubectl config view --minify | grep namespace:현재 네임 스페이스를 가져 오기 위해 를 사용해야 할 수 있습니다.
dabest1

15

다음과 같은 패키지라고 사용할 수 kubectx 매우 쉽게 사용하여 클러스터 사이를 전환 할 수 있도록 kubectx을

여기에 이미지 설명 입력

kubens를 사용하여 네임 스페이스 간 전환

여기에 이미지 설명 입력


11

kubectl 명령 에 bash-complection에 대한 문자를 하나 더 추가하기 때문에 kubectxkubens를 좋아하지 않았습니다 .

그래서 방금 작은 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를 확인 하십시오.


1
이것은 내가 가장 좋아하는 대답이어야합니다! kubectl 명령을 확장하거나 별칭을 지정하지 않고이 작업을 수행하는 상당히 합리적이지만 안타깝게도 긴 명령이 있지만이 솔루션은 사용하기에 짧고 유용 할뿐만 아니라 간단하고 이해하기 쉬운 하위 명령으로 kubectl을 적절하게 확장하는 방법을 보여줍니다. . 나는 당신에게 내 모자를 기울입니다, 선생님! ;-)
Saustrup

2

.zshrc에서 함수를 만들었습니다.

ksns() { kubectl config set-context --current --namespace="$1" }

그런 다음 전화 ksns default


-2

해결책

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 패키지 로 이동 하여 자세히 알아볼 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.