k9s¶
k9s는 terminal에서 Kubernetes cluster를 탐색하고 운영 상태를 확인하는 도구입니다. kubectl get, describe, logs, exec로 나눠 보던 정보를 빠르게 오가며 볼 수 있습니다.
1. 전체 흐름¶
1-1. 먼저 이해할 관계¶
먼저 kubeconfig와 context 관계를 이해해야 k9s를 헷갈리지 않고 쓸 수 있습니다.
1-2. 흐름도¶
RKE2 또는 k3s cluster 설치
|
v
cluster별 kubeconfig 파일 생성
~/.kube/tirosh-home.yml
~/.kube/tirosh-home-rke2.yml
|
v
main kubeconfig로 merge
~/.kube/config
|
v
context 이름으로 cluster 선택
tirosh-home/k3s
tirosh-home/rke2/gpu
|
v
kubectl / kubectx / k9s가 같은 context를 사용
자주 쓰는 명령은 아래 순서입니다.
1-3. 기본 명령¶
make k3s/kubeconfig/merge SITE=tirosh-home
make rke2/kubeconfig/merge SITE=tirosh-home
kubectl config get-contexts
kubectx tirosh-home/rke2/gpu
k9s
특정 context를 바로 열 수도 있습니다.
1-4. Context 지정 실행¶
k9s --context tirosh-home/rke2/gpu
2. kubeconfig와 context¶
2-1. kubeconfig가 담는 정보¶
kubeconfig는 Kubernetes cluster 접속 정보입니다. 보통 아래 정보를 포함합니다.
- cluster API server 주소
- cluster certificate
- user credential
- context
- current-context
이 repo는 cluster별 kubeconfig를 먼저 가져온 뒤, 필요하면 ~/.kube/config에 merge합니다.
2-2. k3s kubeconfig¶
예를 들어 k3s management cluster는 아래 명령으로 가져옵니다.
make k3s/kubeconfig SITE=tirosh-home
make k3s/kubeconfig/merge SITE=tirosh-home
2-3. RKE2 kubeconfig¶
RKE2 workload cluster는 아래 명령으로 가져옵니다.
make rke2/kubeconfig SITE=tirosh-home
make rke2/kubeconfig/merge SITE=tirosh-home
site profile 기준 주요 context는 다음과 같습니다.
2-4. 주요 context¶
| 용도 | context |
|---|---|
| Argo CD management cluster | tirosh-home/k3s |
| RKE2 GPU workload cluster | tirosh-home/rke2/gpu |
kubectl, kubectx, k9s는 모두 kubeconfig의 context를 사용합니다. 그래서 context 이름이 정리되어 있으면 도구를 바꿔도 같은 cluster를 안정적으로 선택할 수 있습니다.
3. kubectx¶
3-1. 역할¶
kubectx는 kubeconfig 안의 context를 빠르게 바꾸는 도구입니다.
설치합니다.
3-2. 설치¶
brew install kubectx
현재 context 목록을 봅니다.
3-3. Context 목록¶
kubectx
kubectl config get-contexts
RKE2 GPU cluster로 전환합니다.
3-4. Context 전환¶
kubectx tirosh-home/rke2/gpu
현재 선택된 context를 확인합니다.
3-5. 현재 context 확인¶
kubectl config current-context
context를 바꾸면 이후 kubectl과 k9s는 기본적으로 그 context를 사용합니다.
4. k9s 설치¶
4-1. macOS 설치¶
macOS에서는 Homebrew로 설치합니다.
brew install derailed/k9s/k9s
설치 확인:
4-2. 설치 확인¶
k9s version
Linux에서도 Homebrew를 사용할 수 있다면 같은 명령을 사용할 수 있습니다. OS별 package manager나 binary release를 쓰는 경우에는 k9s 공식 문서를 기준으로 설치합니다.
5. k9s 실행¶
5-1. 현재 context로 실행¶
현재 context로 실행합니다.
k9s
특정 context를 지정해서 실행합니다.
5-2. 특정 context로 실행¶
k9s --context tirosh-home/rke2/gpu
특정 namespace로 바로 들어갑니다.
5-3. Namespace 지정¶
k9s --context tirosh-home/rke2/gpu --namespace gpu-operator
GPU Operator 상태를 볼 때는 아래 context와 namespace가 자주 쓰입니다.
5-4. GPU Operator 확인¶
k9s --context tirosh-home/rke2/gpu --namespace gpu-operator
Argo CD management cluster를 볼 때는 아래처럼 실행합니다.
5-5. Argo CD 확인¶
k9s --context tirosh-home/k3s --namespace argocd
6. 기본 사용법¶
6-1. Resource 화면 이동¶
k9s 안에서는 resource 이름을 입력해 이동할 수 있습니다.
| 입력 | 의미 |
|---|---|
:pods |
Pod 목록 |
:nodes |
Node 목록 |
:svc |
Service 목록 |
:deploy |
Deployment 목록 |
:ns |
Namespace 목록 |
:events |
Event 목록 |
자주 쓰는 키는 다음과 같습니다.
6-2. 자주 쓰는 키¶
| 키 | 의미 |
|---|---|
방향키 또는 j/k |
위아래 이동 |
Enter |
선택한 resource 상세 보기 |
Esc |
이전 화면 |
l |
Pod logs |
d |
describe |
s |
shell |
/ |
필터 |
0 |
모든 namespace 보기 |
q |
종료 |
GPU cluster에서 확인할 대표 화면은 다음입니다.
6-3. GPU cluster에서 볼 화면¶
:nodes
:pods
:events
gpu-operator namespace에서 Operator pod가 정상인지 확인하고, node 화면에서 GPU node가 Ready인지 확인합니다.
7. 문제 확인 흐름¶
7-1. Context 확인¶
cluster가 보이지 않으면 kubeconfig와 context부터 확인합니다.
kubectl config get-contexts
kubectl config current-context
kubectl --context tirosh-home/rke2/gpu get nodes
k9s가 다른 cluster를 보고 있다면 context를 명시해서 실행합니다.
7-2. k9s context 지정¶
k9s --context tirosh-home/rke2/gpu
GPU pod가 Pending이면 k9s에서 아래 순서로 봅니다.
7-3. Pending pod 확인¶
:pods
-> pod 선택
-> d로 describe
-> Events 확인
GPU Operator 문제를 볼 때는 namespace를 먼저 좁힙니다.
7-4. Namespace 좁히기¶
k9s --context tirosh-home/rke2/gpu --namespace gpu-operator