[에스넷시스템 부트캠프] TIL Day 30 - 쿠버네티스 아키텍처

2025. 7. 1. 18:35·TIL
728x90
반응형

1. 쿠버네티스 아키텍처

1) 기본 구성

 

2) Control Plane의 작동 흐름

  1. 사용자가 kubectl로 명령 전송
    → API Server에 HTTP 요청을 보냄
  2. API Server가 요청을 수신하고 etcd에 클러스터 상태 업데이트
  3. Scheduler가 새로 생성된 Pod에 대해 적절한 Node를 선택
  4. 선택된 Node의 kubelet이 해당 Pod를 생성하고 컨테이너 실행
  5. 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 생성 확인

 

✍️ 하루 회고

오늘은 쿠버네티스를 설치하고 직접 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
'TIL' 카테고리의 다른 글
  • [에스넷시스템 부트캠프] TIL Day 32 - 쿠버네티스 Pod 2
  • [에스넷시스템 부트캠프] TIL Day 31 - 쿠버네티스 Pod 1
  • [에스넷시스템 부트캠프] TIL Day 29 - Podman Volume, Compose, 쿠버네티스
  • [에스넷시스템 부트캠프] TIL Day 28 - Podman 명령어, 컨테이너 생명주기, 이미지
yulee_to
yulee_to
  • yulee_to
    yulee
    yulee_to
  • 전체
    오늘
    어제
    • 전체 글 (170)
      • CS (2)
        • OS (0)
        • DB (0)
        • Network (2)
      • Develop (1)
        • Spring (9)
        • Java (12)
        • Python (0)
        • Algorithm (0)
        • 기타 (0)
      • PS (39)
        • C++ (39)
        • Java (0)
      • TIL (61)
      • Book (39)
        • 자바의 신 (32)
        • 스프링 입문을 위한 자바 객체 지향의 원리와 이해 (7)
      • ETC (4)
        • Blog (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    TiL
    스터디
    객체지향
    1일1백준
    에스넷시스템 부트캠프
    GodOfJava
    boj
    알고리즘
    멀티캠퍼스it부트캠프
    클라우드 활용 네트워크 엔지니어 부트캠프
    자바
    자바의 신
    EC2
    C++
    백준
    Java
    aws
    부트캠프후기
    에스넷시스템
    스프링 입문
  • 최근 댓글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
yulee_to
[에스넷시스템 부트캠프] TIL Day 30 - 쿠버네티스 아키텍처
상단으로

티스토리툴바