kubectx / kubens
멀티 클러스터 / 다중 네임스페이스 간의 쉬운 전환을 도와주는 kubectl 플러그인/도구이다. v0.9.0부터는 Go로 작성되었다. 두 개 도구 모두 https://github.com/ahmetb/kubectx에서 지원하고 있다.
kubectx : kubectl에서 context 전환을 빠르게 할 수 있게 해주는 플러그인
kubens : 쿠버네티스 네임스페이스 간 전환을 쉽게 할 수 있게 해주는 플러그인
이 글에서는 설치 방법과 사용 방법을 간단히 정리해둔다.
+ 2023.02.04 - [k8s] kubectl 플러그인 - kube-ps1와 함께 사용하기 좋아 보인다.
설치
Ubuntu 기준으로 krew를 통한 설치, 수동 설치 방법 두 가지를 고려할 수 있다.
Krew를 통한 설치
kubectl과 krew 모두 설치되어 있다고 가정한다. krew 설치는 2023.02.03 - [k8s] krew - kubectl 플러그인 관리자를 참고할 수 있다.
# kubectx 설치
kubectl krew install ctx
# kubens 설치
kubectl krew install ns
설치한 플러그인은 각각 아래 명령어로 사용할 수 있다.
# kubectx 사용
kubectl ctx
# kubens 사용
kubectl ns
수동 설치
kubectx Git 저장소를 clone 한 뒤, 심볼릭 링크를 생성하는 방식으로 설치한다.
sudo git clone https://github.com/ahmetb/kubectx /opt/kubectx
sudo ln -s /opt/kubectx/kubectx /usr/local/bin/kubectx
sudo ln -s /opt/kubectx/kubens /usr/local/bin/kubens
자동 완성 설정
Git 저장소를 클론 하여 직접 설치했다면 아래의 명령을 실행하여 명령어 자동 완성을 설정할 수 있다.
git clone https://github.com/ahmetb/kubectx.git ~/.kubectx
COMPDIR=$(pkg-config --variable=completionsdir bash-completion)
ln -sf ~/.kubectx/completion/kubens.bash $COMPDIR/kubens
ln -sf ~/.kubectx/completion/kubectx.bash $COMPDIR/kubectx
cat << EOF >> ~/.bashrc
#kubectx and kubens
export PATH=~/.kubectx:\$PATH
EOF
유감스럽게도 Krew를 통해 설치한 경우에는 자동완성을 사용할 수 없다.
kubectx 사용법
kubectx를 사용하면 아래의 긴 명령어 대신보다 짧은 명령어로 context를 나열하고 전환할 수 있다.
kubectl config get-contexts
kubectl config use-context <CONTEXT_NAME>
현재 context 확인
kubectl ctx -c
# 또는
kubectx -c
context 나열
kubectl ctx
# 또는
kubectx
context 전환
kubectl ctx <CONTEXT_NAME>
# 또는
kubectx <CONTEXT_NAME>
이전 context로 돌아가기
kubectl ctx -
# 또는
kubectx -
그 외 사용법
context를 이름을 변경하거나 삭제할 수 있다.
kubens 사용법
kubeconfig에 현재 사용 중인 네임스페이스가 아닌 다른 네임스페이스에 존재하는 자원을 조회하거나 작업하기 위해서는 명령어에 네임스페이스를 지정해주어야 한다.
kubectl get pods -n <NAMESPACE>
kubens는 kubeconfig의 contexts.context.namespace 필드 값을 편집하여 사용하는 namespace를 변경해 준다.
따라서 특정 네임스페이스에서 작업을 많이 하는 경우에는 사용하는 namespace를 변경하여 작업하는 게 편리할 수 있다.
kubectl ns <NAMESPACE>
kubectl get pods
kubectl delete pods nginx
...
현재 Namespace 확인
kubectl ns -c
# 또는
kubens
Namespace 나열
kubectl ns
# 또는
kubens
사용 namespace 변경
kubectl ns <NAMESPACE_NAME>
# 또는
kubens <NAMESPACE_NAME>
이전 namespace로 돌아가기
kubectl ns -
# 또는
kubens -