소개글
쿠버네티스 클러스터를 자주 사용하는 사람이라면, 반복적인 명령을 입력하는 행위에 많은 불편함을 느낄것입니다. 이러한 불편함을 줄이기 위해서 kubectl
관련 CLI 도구들을 사용할 수 있습니다. 이 문서에서는 kubectl
의 사용을 도와줄 몇가지 도구들을 소개하겠습니다.
kubectl-aliases : 별칭 주기
매번 kubectl
이나 다른 명령어를 입력할 수 있지만, 상당히 불편함을 느낄것입니다. 이런 불편함을 줄이는 가장 쉬운 방법은 별칭(alias)를 지정해서 사용하는 것입니다.
alias k='kubectl' alias kg='kubectl get' alias kgpo='kubectl get pod' ...
위의 예제처럼 별칭을 지정해 놓으면, 보다 효율적으로 명령어를 입력할 수 있습니다. 자주 쓰는 명령어는 kubectl-aliases에 정의되어 있습니다. 참고하시기 바랍니다.
Shell Autocompletion : 쉡 자동완성 하기
kubectl
의 명령어를 일일이 입력하고 있다면, 쉘 자동 완성을 설정하는게 좋습니다. 쉘에 kubectl
입력하고 [Tab]키를 눌러서 자동완성을 시도하면, 추천 단어 목록을 보여주거나, 추천 단어가 1개일 경우 자동으로 완성이 됩니다. kubectl
이 대한 쉘 자동 완성을 설정하는 방법은 설치 문서를 참고하시기 바랍니다.
자동 완성 사용하기
예를 들어서 g
를 입력하고 tab
을 누르면, get
으로 자동 완성됩니다.
$ kubectl g [Tab] $ kubectl get
get p
를 입력하고 tab
을 누르면, p
로 시작하는 단어 목록을 보여줍니다.
$ kubectl get p [Tab] persistentvolumeclaims podsecuritypolicies.policy persistentvolumes podtemplates poddisruptionbudgets.policy policies.authentication.istio.io pods priorityclasses.scheduling.k8s.io podsecuritypolicies.extensions
kubectx & kubecns : 컨텍스트와 네임스페이스 쉽게 변경하기
쿠버네티스의 컨텍스트를 여러개 사용하고 있거나, 네임스페이스를 여러개 사용하고 있다면, 이 도구들이 도움이 될것입니다. kubectx
는 컨텍스트를 쉽게 변경할 수 있도록 도움을 줍니다. 이 도구를 사용하면, kubectl config use-context greentea
같은 긴 명령어를 사용하지 않아도 됩니다. 그리고 kubens
는 기본 네임스페이스를 변경할 수 있도록 도와줍니다. 이 두 도구 모드 [Tab] 완성을 지원합니다. 그 뿐만 아니라, fzf
를 설치하면 대화식 메뉴를 제공하기 때문에, 더욱 편리하게 사용할 수 있습니다.
kubectx
와 kubens
에 대한 설정 방법은 설치 문서를 참고하시기 바랍니다.
kubectx 사용하기
kubectx
명령을 실행하면, 컨텍스트 목록을 보여줍니다.
$ kubectx coffee greentea
컨텍스트를 변경하기 위해서는, 컨텍스트 명을 입력하면 됩니다.
$ kubectx greentea Switched to context "greentea".
만약 fzf
가 설치되어 있으면, kubectx
명령을 실행하면 대화식 메뉴를 보여줍니다.
$ kubectx > coffee greentea 2/2
kubens 사용하기
kubens
명령을 실행하면, 네임스페이스 목록을 보여줍니다.
$ kubens kube-system kube-public istio-system default
네임스페이스를 변경하기 위해서는, 네임스페이스 명을 입력하면 됩니다.
$ kubens kube-system Context "greentea" modified. Active namespace is "kube-system".
만약 fzf
가 설치되어 있으면, kubens
명령을 실행하면 대화식 메뉴를 보여줍니다.
$ kubectx > kube-system kube-public istio-system default 4/4
kube-ps1 : 컨템스트와 네임스페이스 이름을 쉘 프로프트에 보여주기
쿠버네티스의 컨텍스트나 네임스페이스를 여러개 사용하고 있을때, 현재 어떤 컨텍스트와 네임스페이스를 사용하고 있는지 헷갈리는 경우가 많습니다. kube-ps1
은 현재 사용하고 있는 쿠버네티스 컨텍스트 및 네임스페이스를 쉘의 프롬프 문자열에 보여줍니다. 이 도구를 사용하면, kubectl config current-context
같은 긴 명령어를 사용하지 않아도 됩니다. 그리고, 컨텍스트와 네임스페이스를 보는게 불편하다면, kubeoff
명령어를 실행해서 kube-ps
을 비활성화 시킬수도 있습니다. 물론, 다시 컨텍스트와 네임스페이스를 보고 싶다면 kubeon
명령어를 실행하면 됩니다. kube-ps1
`에 대한 설정 방법은 설치 문서를 참고하시기 바랍니다.
kube-ps1
의 설치가 완료되면, 셀의 프롬프트가 다음처럼 표시됩니다.
(⎈ |[context]:[namespace]) $ (⎈ |greentea:kube-system) $
stern : 여러개의 팟(pod)이나 컨테이너의 로그를 쉽게 보기
kubectl
은 기본적으로 팟이나 컨테이너의 로그를 테일링해서 볼 수 있는 기능을 제공하고 있습니다. 하지만, 팟이 여러개이거나 하나의 팟에 여러개의 컨테이너가 있을 경우는 로그른 테일링 해서 볼 수가 없습니다.
stern
는 쿠버네티스트의 여러 팟이나, 팟 내의 여러 컨테이너의 로그를 테일링 할 수 있도록 해줍니다. 그리고 대상별로 출력되는 로그가 색상별로 표현되기 때문에 쉽게 구별할 수 있습니다. stern
`에 대한 설정 방법은 설치 문서를 참고하시기 바랍니다.
stern ginger
이라는 명령어를 실행하면, ginger
이라는 이름을 가진 팟에 속한 컨테니이너들의 로그를 모두 보여줍니다. 이 쿼리는 정규식이기 때문에 팟 이름을 쉽게 필터링할 수 있으며, 정확한 이름을 지정하지 않아도 됩니다. 다시 말해성 ginger
로 시작하는 이름을 가진 모든 팟들의 로그를 보여주게 되는것입니다.
$ stern ginger hello gingersnap istio-proxy 2019-12-02T09:05:41.739784Z info watchFileEvents: "/etc/certs": MODIFY|ATTRIB hello gingersnap istio-proxy 2019-12-02T09:05:41.739842Z info watchFileEvents: "/etc/certs/..2019_11_06_05_09_24.409981738": MODIFY|ATTRIB ...
그리고 아래처럼, 레이블을 가지고 쿼리할 수 있습니다.
stern --all-namespaces -l run=cookie
k9s : 터미널 UI
k9s
는 쿠버네티스 클러스터와 상호 작용할 수 있는 터미널 UI를 제공합니다. 이 도구는 쿠버네티스 리소스들을 쉽게 탐색하고 관리할 수 있도록 도와줍니다. ‘k9s’에 대한 설정 방업은 설치 문서를 참고하시기 바랍니다
Pod 조회하기

로그 보기
