두 개의 네임 스페이스 k8s-app1과 k8s-app2가 있습니다.
아래 명령을 사용하여 특정 네임 스페이스의 모든 포드를 나열 할 수 있습니다.
kubectl get pods -n <namespace>
각 네임 스페이스의 개체를 나열하려면 모든 명령에 네임 스페이스를 추가해야합니다. 네임 스페이스를 명시 적으로 포함하지 않고 특정 네임 스페이스를 설정하고 개체를 나열하는 방법이 있습니까?
답변
나는 공식 문서에 대한 언급과 함께 짧은 대답을 좋아합니다.
답변 :
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 명령을 사용할 수 있습니다.
네임 스페이스 만 전환 :
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 $(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 명령 에 bash-complection에 대한 문자를 하나 더 추가하기 때문에 kubectx 및 kubens를 좋아하지 않았습니다 .
그래서 방금 작은 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
TLDR; 요청 된 설명
를 나타내는 npm 패키지 k8ss
가 있습니다 K8S Switching between clusters and namespaces
.
전체 사용량은
k8ss switch --cluster=your_new_cluster --namespace=your_new_namespace
귀하의 경우와 마찬가지로 네임 스페이스를 전환하기 만하면되므로 구성없이 명령을 사용할 수 있습니다 (이미에 구성 파일을 넣었으므로 ~/.kube/config
).
고급 사용법
다른 클러스터 사이를 전환해야하는 경우 홈 디렉토리에 여러 구성 파일을 넣어야합니다. 이 경우 README 패키지 로 이동 하여 자세히 알아볼 수 있습니다.