728x90
반응형
1. 쿠버네티스 아키텍처
1) 기본 구성
2) Control Plane의 작동 흐름
- 사용자가 kubectl로 명령 전송
→ API Server에 HTTP 요청을 보냄 - API Server가 요청을 수신하고 etcd에 클러스터 상태 업데이트
- Scheduler가 새로 생성된 Pod에 대해 적절한 Node를 선택
- 선택된 Node의 kubelet이 해당 Pod를 생성하고 컨테이너 실행
- kube-proxy가 서비스 네트워크 연결 경로를 설정하고, 클러스터 내부 트래픽을 관리
3) 상태 확인


4) 명령어

shortnames가 설정되어 있는 경우 약어로 짧게 사용 가능하다.
더 자세한 명령어를 보려면 해당 사이트 방문 -> https://kubernetes.io/ko/docs/reference/kubectl/
명령줄 도구 (kubectl)
쿠버네티스는 다음을 제공한다: 쿠버네티스 API를 사용하여 쿠버네티스 클러스터의 컨트롤 플레인과 통신하기 위한 커맨드라인 툴 이 툴의 이름은 kubectl이다. 구성을 위해, kubectl 은 config 파일을
kubernetes.io
4-1) kubeadm
쿠버네티스 클러스터를 설치 및 초기화하는 명령어 도구
4-2) kubectl
쿠버네티스 클러스터를 관리하는 주요 CLI 도구
kubeconfig 파일 경로 및 설정
- kubectl은 클러스터와 연결하기 위해 설정 파일을 참조
- 기본적으로 $HOME/.kube/config 에서 설정을 읽음
- 쿠버네티스 클러스터, 사용자, 컨텍스트 정보가 존재
- KUBECONFIG 환경변수로 설정 파일을 지정하거나 --kubeconfig 플래그 설정으로 지정 가능
명령어 기본 구조
kubectl [CMD] [TYPE] [NAME] [FLAG]
- CMD : 자원에 실행할 하위 명령. create apply get describe delete edit 등
- TYPE : 자원의 타입. node, pod service 등
- NAME : 자원의 이름
- FLAG : 부가적으로 설정할 옵션
💡 쿠버네티스에는 이미지 다운로드 기능이 없다.
쿠버네티스는 오케스트레이션 플랫폼으로서 컨테이너를 직접 실행하거나 이미지를 다운로드하지 않는다. 대신 컨테이너 런타임이 그 역할을 수행한다.
즉, 쿠버네티스는 이 이미지를 써서 pod를 띄워라 라고 명령만 하고, 실제 이미지를 가져오는 건 런타임의 일이다.
2. [실습] yaml 파일로 생성하는 쿠버네티스 pod
1) 명령어로 YAML 파일 생성
kubectl run web --image=nginx --port=80 --dry-run=client -o yaml > web.yaml
- kubectl run: 명령형 리소스 생성
- --image=nginx: 사용할 컨테이너 이미지
- --port=80: 컨테이너에서 열 포트
- --dry-run=client: 실제 리소스를 생성하지 않고 YAML을 생성
- client : 클라이언트에서 유효성 검사. API 서버로 요청을 보내지 않음. 단순한 YAML 파일 문법 확인 용도로 사용
- server : API 서버에 요청을 보내서 서버 측에서 검증. 서버에서 적용에 대한 확인, 권한, 제약 조건 등을 확인
- none : 기본값. 검증을 하지 않고 실제 명령어 수행
- -o yaml: YAML 형식으로 출력
- > web.yaml: 해당 출력 결과를 파일로 저장
2) Pod 생성하기 (web)
apiVersion: v1 # API버전 명시 kubectl api-resources 명령을 참조.
kind: Pod # 생성할 리소스 종류 kubectl api-resources 명령을 참조.
metadata:
creationTimestamp: null # 생성 시간 , 직접 생성시에는 null로 구성
labels: # 필터링을 위한 공간 부여
run: web # pod를 식별하는 용도 run=web
name: web # pod의 이름
spec:
containers: # 컨테이너의 정의 목록
- image: nginx # 사용할 이미지
name: web # 컨테이너 이름
ports: # 네트워크에 관련한 설정
- containerPort: 80 # 컨테이너에서 노출 되는 포트
resources: {} # 리소스에 대한 제한 설정
dnsPolicy: ClusterFirst # 내부 DNS 설정을 우선 사용
restartPolicy: Always # 재시작 정책
status: {} # 상태정보.
kubectl run web --image=nginx --port 80 --dry-run=client -o yaml > web.yaml
kubectl apply -f web.yaml

✍️ 하루 회고
오늘은 쿠버네티스를 설치하고 직접 Pod를 생성해보는 실습을 진행했다.
kubectl 명령어가 처음에는 낯설고 어색했지만, 수업이 끝나갈 즈음에는 자연스럽게 손에 익는 걸 보며 나름의 성장도 느낄 수 있었다.
특히 --dry-run=client -o yaml 옵션을 활용해 YAML 파일을 만들어보고, 이를 apply로 적용하는 과정이 인상 깊었다.
728x90
반응형
'TIL' 카테고리의 다른 글
| [에스넷시스템 부트캠프] TIL Day 32 - 쿠버네티스 Pod 2 (0) | 2025.07.03 |
|---|---|
| [에스넷시스템 부트캠프] TIL Day 31 - 쿠버네티스 Pod 1 (1) | 2025.07.02 |
| [에스넷시스템 부트캠프] TIL Day 29 - Podman Volume, Compose, 쿠버네티스 (0) | 2025.06.30 |
| [에스넷시스템 부트캠프] TIL Day 28 - Podman 명령어, 컨테이너 생명주기, 이미지 (0) | 2025.06.29 |
| [에스넷시스템 부트캠프] TIL Day 27 - Docker (0) | 2025.06.26 |
