Kubernetes

[kubectl] kubectx + kubens 설정 및 자동 완성

seulseul 2023. 7. 9. 23:40

1. kubectx

kubectx는 cluster 간의 전환을 쉽고 빠르게 할 수 있게 해주는 플러그인입니다.

 

A. kubectl 명령어를 이용한 context 변경

# 컨텍스트 리스트 출력
kubectl config get-contexts  
# kind-kind 를 기본 컨텍스트로 설정
kubectl config use-context kind-kind

 

B. kubectx 설치

# kubectx 설치
wget https://github.com/ahmetb/kubectx/releases/download/v0.9.4/kubectx
sudo install kubectx /usr/local/bin

# 설치확인
$ which kubectx      
/usr/local/bin/kubectx

 

C. kubectx 사용법

context 목록 확인

# kubectx :: context 목록 확인
➜  ~ kubectx
kind-kind
vcluster_my-vcluster_vcluster-my-vcluster_kind-kind

context 전환

# kubectx <CONTEXT> :: context 전환
➜  ~ kubectx kind-kind
Switched to context "kind-kind".

 

2. kubens

kubens 는 쿠버네티스 클러스터 내에서 네임스페이스 변환을 쉽게 해주는 플러그인입니다.

A. kubectl 명령어를 이용한 특정 namespace 의 pod 조회

kubectl get pods -n argocd

kubens를 사용하게 되면 namespace 에 해당하는 pods를 바로 조회 할수 있습니다.

B. kubens 설치

# kubens 설치
wget https://github.com/ahmetb/kubectx/releases/download/v0.9.4/kubens
sudo install kubens /usr/local/bin

# 설치확인
$ which kubens
/usr/local/bin/kubens

C. namespcae 조회 (kubens)

# kubens
➜  ~ kubens
default
ingress-nginx
kube-node-lease
kube-public
kube-system
local-path-storage
vcluster-my-vcluster

D. namespcae 변경 및 해당 namespace 리소스 조회

# kubens <namespace>
➜  ~ kubens ingress-nginx
Context "kind-kind" modified.
Active namespace is "ingress-nginx".

# -n ingress-nginx 를 추가하지않아도 해당 namespace 의 pod 조회
➜  ~ kubectl get po
NAME                                        READY   STATUS      RESTARTS   AGE
ingress-nginx-admission-create-svg7q        0/1     Completed   0          20h
ingress-nginx-admission-patch-hms24         0/1     Completed   0          20h
ingress-nginx-controller-6b7f45576b-r7qxl   1/1     Running     0          20h

 

3. kubectx , kubens 자동완성

kubens , 와 kubectx 뒤에 namaspcae 나 context-name 를 tab 으로 자동완성 하니 더 편해졌다.

 

wsl + zsh + oh-my-zsh 를 쓰고 있으므로 zsh 버전으로 다운받아 사용했습니다.

본인이 사용하고 있는 shell 에 맞게 다운받아 사용하시면됩니다.

# https://github.com/ahmetb/kubectx/blob/master/completion 에서 bash , zsh ... 에 맞게 설정

mkdir -p ~/.oh-my-zsh/completions
chmod -R 755 ~/.oh-my-zsh/completions


curl -o ~/.oh-my-zsh/completions/_kubens.zsh https://github.com/ahmetb/kubectx/blob/master/completion/_kubectx.zsh
curl -o ~/.oh-my-zsh/completions/_kubens.zsh https://github.com/ahmetb/kubectx/blob/master/completion/_kubens.zsh

.zshrc 에 한 줄(autoload -U compinit && compinit)을 추가

# autoload -U compinit && compinit 추가
echo "autoload -U compinit && compinit" >> ~/.zshrc

# 적용
source ~/.zshrc