kubernetes에서 네임스페이스를 전환하는 방법
예를 들어, 나는 k8s-app1과 k8s-app2라는 두 개의 네임스페이스를 가지고 있다
아래 명령을 사용하여 특정 네임스페이스의 모든 포드를 나열할 수 있습니다
kubectl get pods -n <namespace>
각 네임스페이스의 개체를 나열하려면 모든 명령에 네임스페이스를 추가해야 합니다. 명시적으로 네임스페이스를 포함하지 않고 특정 네임스페이스와 목록 개체를 설정할 수 있는 방법이 있습니까?
컨텍스트 및 네임스페이스를 전환할 수 있습니다. 만약 당신이 fzf를 설치한다면, 경험이 크게 향상될 것이다.
- 사용 가능한 컨텍스트 목록 표시(fzf가 설치된 경우 선택 가능한 컨텍스트 메뉴 표시)
- 현재 셸을 주어진 컨텍스트로 전환(쿠비 셸이 아닌 경우 셸로 전환)
- 이전 컨텍스트로 되돌리다
- 주어진 맥락에서 재귀적 껍질을 생성하다
- 지정된 컨텍스트 및 네임스페이스에 셸 생성
- 사용 가능한 네임스페이스 목록 표시(fzf가 설치된 경우 선택 가능한 네임스페이스 메뉴 표시)
- 현재 셸을 지정된 네임스페이스로 전환
- 이전 네임스페이스로 다시 전환
- 지정된 네임스페이스에 재귀 셸 생성
다양한 사용 사례를 위한 플러그인이 많이 있습니다.
설치용
kubectl krew install kubens
그런 다음 다음 명령을 실행하면 현재 컨텍스트가 설정됩니다
kubens <namespace>
OCP/OKD를 위해 Red Hat에서 유지보수하는 것은 다른 많은 것들과 마찬가지로 타이핑을 덜하면서 이 작업을 수행할 것이다.
따라서 Github()에서 다운로드한 후 다음과 같이 입력하여 네임스페이스를 변경합니다(예, OKD뿐만 아니라 표준 k8s 클러스터에서):
oc project <my_ns>
검증 대상:
oc project
프로젝트와 네임스페이스는 완전히 호환되지 않으므로 k8s 클러스터에서는 모든 프로젝트를 다음 기준으로 나열할 수 없습니다(OKD/OCP에서만 작동). 모든 네임스페이스를 나열하려면 다음 명령이 필요합니다:
oc get ns
- "brew install kubectx"와 함께 설치할 수 있습니다
- 클러스터 내에서 전환하기 위해. "브루 설치 쿠벤"과 함께 설치할 수도 있습니다
다음 단계를 사용하여 네임스페이스를 전환할 수 있었습니다
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 명령어만 사용하여 네임스페이스 전환::
kubectl config set-context --current --namespace=<namespace>
- 또는 네임스페이스가 정의된 새 컨텍스트를 만듭니다:
kubectl config set-context gce-dev --user=cluster-admin --namespace=dev
kubectl config use-context gce-dev
- 또는 추가 기능을 사용하여 다음 명령을 실행하면 컨텍스트가 다음으로 전환됩니다:
$ kubens kube-system
- 또는 제가 좋아하는 또 다른 쉬운 대안은 bash alias(linux)를 사용하는 것입니다.
$ alias kubens='kubectl config set-context --current --namespace '
$ alias kubectx='kubectl config use-context '
// Usage
$ kubens kube-system //Switch to a different namespace
$ kubectx docker //Switch to separate context
다음 패키지를 사용하면 클러스터 간 전환이 매우 쉽습니다
다음을 사용하여 네임스페이스 간 전환
나는 공식 문서에 대한 언급과 함께 간결하고 요점이 있는 내 대답을 좋아한다:
:
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
해결책
npm install -g k8ss
k8ss switch --namespace=your_namespace
kubectl get pods
TLDR; 요청에 따른 설명
의 약자인 npm 패키지가 있다.
전체 사용법은
k8ss switch --cluster=your_new_cluster --namespace=your_new_namespace
사용자의 경우와 마찬가지로 네임스페이스만 전환하면 구성 없이 명령을 사용할 수 있습니다(이미 에 구성 파일을 넣었듯이).
고급 사용
다른 클러스터 간에 전환해야 하는 경우 홈 디렉토리에 여러 구성 파일을 저장해야 합니다. 이 경우 자세한 내용은 를 참조하십시오.
나는 마음에 들지 않았고 그들이 명령에 bash-collection을 위한 문자를 하나 더 추가하고 있기 때문이다.
그래서 나는 작은 플러그인을 썼다:
# 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".
관심이 있으면 확인하십시오
.zshrc에서 함수를 만들었습니다
ksns() { kubectl config set-context --current --namespace="$1" }
그럼 내가 전화할게요
'개발하자' 카테고리의 다른 글
벨벳 키트에서 마크다운 파일을 가져오는 방법은 무엇입니까? (0) | 2023.05.15 |
---|---|
왜 쿠버네티스에 있는 포드들이 서비스 계정 비밀을 자동으로 탑재하고 있나요? (1) | 2023.05.14 |
python - django: 이 오류가 발생하는 이유: 특성 오류: 'method_descriptor' 개체에 'today' 특성이 없습니까? (0) | 2023.05.13 |
Python: f.next()로 반복할 때 파일에서 한 줄을 되감습니다 (0) | 2023.05.12 |
Oiy-JS 단계 정의의 "오류: 모듈 외부에서 가져오기 문을 사용할 수 없습니다"(스크립트 포함) (0) | 2023.05.12 |