CKA — 쿠버네티스 관리자 · 클러스터 아키텍처·설치·설정 · 실습
클러스터 조사하고 다루기
목표
클러스터에 처음 들어갔을 때 하는 일 일곱 가지를 손에 익힙니다. 조사, 네임스페이스, 라벨과 애너테이션, 컨텍스트 전환, 노드 라벨링, kubectl explain, dry-run 매니페스트 생성입니다.
왜 중요한가
CKA 는 120분에 17문제입니다. 문제당 7분입니다. 매니페스트를 처음부터 손으로 쓰면 시간이 모자랍니다. 그래서 --dry-run=client -o yaml 로 뼈대를 뽑고 필요한 필드만 고치는 방식이 사실상 표준 전략입니다.
kubectl explain 은 그 다음 반쪽입니다. 시험장에서 볼 수 있는 문서는 쿠버네티스 공식 문서뿐인데, 필드 하나의 정확한 철자와 위치를 확인하는 데는 explain 이 훨씬 빠릅니다. 라벨과 애너테이션의 차이도 같은 맥락입니다. 라벨은 셀렉터가 고를 수 있는 식별자라 서비스와 컨트롤러가 참조하고, 애너테이션은 고를 수 없는 부가 정보라 도구들이 메타데이터를 실어 나릅니다. 둘을 바꿔 쓰면 조용히 아무것도 연결되지 않습니다.
단계
1. 네임스페이스 cka-basics 를 만들고 라벨 env=lab 을 붙인다.
2. 클러스터의 모든 노드 이름을 한 줄에 하나씩 /root/cka-basics/nodes.txt 에 저장한다. 파일에는 이름만 있어야 하고 헤더나 node/ 접두어가 있으면 안 된다.
3. cka-basics 에 ConfigMap app-meta 를 만든다. 데이터는 env=lab, 라벨은 tier=backend, 애너테이션은 owner=cka-student.
4. 현재 쓰고 있는 cluster 와 user 를 그대로 재사용하면서 기본 네임스페이스가 cka-basics 인 컨텍스트 cka-basics-ctx 를 만들고, 그 컨텍스트로 전환한다.
5. 노드 lab-node-1 에 라벨 disktype=ssd 와 topology.kubernetes.io/zone=rack-a, 애너테이션 owner=cka-student 를 붙인다.
6. 파드 톨러레이션의 effect 필드 설명을 kubectl explain 으로 뽑아 /root/cka-basics/explain.txt 에 저장한다.
7. dry-run 으로 Deployment web (이미지 nginx:1.27, 레플리카 3) 매니페스트를 만들어 /root/cka-basics/web.yaml 에 저장한다. 이 단계에서는 아직 적용하지 않는다.
8. 그 매니페스트를 cka-basics 에 적용하고, 디플로이먼트 오브젝트에 라벨 tier=backend 를 붙인 뒤 3/3 Ready 를 확인한다.
참고
kubectl get nodes -o custom-columns=NAME:.metadata.name --no-headers처럼 헤더를 빼는 옵션이 있습니다.- 컨텍스트는
kubectl config set-context <이름> --cluster=... --user=... --namespace=...로 만들고use-context로 전환합니다. - 흔한 실수 1: 라벨을 파드 템플릿에만 붙이고 디플로이먼트 자체에는 안 붙이는 것. 8단계는 디플로이먼트 오브젝트의 라벨을 봅니다.
- 흔한 실수 2: 컨텍스트를 만들 때 cluster 나 user 이름을 새로 지어내는 것. 기존에 있는 이름을 그대로 써야 접속이 유지됩니다.
단계 8개
- 네임스페이스 만들고 라벨 붙이기
- 노드 목록 파일로 뽑기
- 라벨과 애너테이션 구분해서 붙이기
- kubeconfig 컨텍스트 만들고 전환하기
- 노드에 라벨과 애너테이션 붙이기
- kubectl explain 으로 필드 설명 뽑기
- dry-run 으로 매니페스트 만들기
- 적용하고 라벨까지 마무리하기