두 개의 네임 스페이스 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 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:
현재 네임 스페이스를 가져 오기 위해 를 사용해야 할 수 있습니다.
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를 확인 하십시오.
npm install -g k8ss
k8ss switch --namespace=your_namespace
kubectl get pods
를 나타내는 npm 패키지 k8ss
가 있습니다 K8S Switching between clusters and namespaces
.
전체 사용량은
k8ss switch --cluster=your_new_cluster --namespace=your_new_namespace
귀하의 경우와 마찬가지로 네임 스페이스를 전환하기 만하면되므로 구성없이 명령을 사용할 수 있습니다 (이미에 구성 파일을 넣었으므로 ~/.kube/config
).
다른 클러스터 사이를 전환해야하는 경우 홈 디렉토리에 여러 구성 파일을 넣어야합니다. 이 경우 README 패키지 로 이동 하여 자세히 알아볼 수 있습니다.
kubectl config set-context --help
당신이 찾고있는 수 있습니다