티스토리 뷰

728x90
반응형

✅ 아래 글의 내용 및 이미지는 인프런 "쿠버네티스 어나더 클래스 (지상편) - Sprint 1, 2" 강의를 듣고 정리한 글입니다.

전체개요

  • 쿠버네티스 구축시 VM에 마스터 노드를 만들고 설치
  • kubeadm 명령으로 클러스터를 생성
    • yaml파일 경로는 /etc/kubernetes/manifests
  • 쿠버네티스가 돌아가는 데 필요한 역할들을 하고 이걸 컨트롤러 플레인 컴포넌트라고 한다.
  • 다른 VM으로 여러 대의 워커 노드를 만들 수가 있고 이곳에도 마스터 노드에 설치했던 것이랑 똑같은 내용들이 설치가 된다.
  • 이 워커 노드를 마스너 노드에 조인시키면 워커노드 컴포넌트 영역이 생긴다.
    • 워커노드 컴포넌트에 k8s는 kube-proxy 컴포넌트만 만들어 놓는데 이 영역은 사용자가 만든 앱을 올리기 위한 공간이다.
  • 어플리케이션은 워커노드에 오리고 자원이 더 필요한 만큼 워커 노드를 추가 시킨다.
  • 대시보드나 metrics 서버 같은 앱들을 더 설치했었는데 쿠버네티스의 기본 기능을 확장시키기 위한 이런 앱들을 애드온 파드라고 한다.
  • /root/.kube/config에 쿠버네티스 인증서가 있었고 kubectl이 kube-apiserver로 api를 날려서 etcd에 데이터를 저장함.

오브젝트와 컨트롤러의 차이

이전 강의에서는 hpa, deployment, replicaset, service, configmap, secret 을 다 오브젝트라고했는데 정확히 이야기하면 이미지 처럼 나뉘어진다.

  • 오브젝트는 각 오브젝트 하나가 인프라 개념으로서 단독 기능을 한다.
  • 컨트롤러는 타 컨트롤러나 오브젝트를 제어하는 기능을한다.
  • 이 둘 전체를 지칭할때는 Resource라고 한다.
    • 리소스는 네임스페이스 레벨의 리소스와 컬러스터 레벨의 리소스로 나눠진다.
  • 인프라에는 네트워크나 볼륨, 환경변수라는 요소들이 있는데 쿠버네티스는 이 요소들을 오브젝트라는 걸로 정의하고 이 오브젝트들을 자동화시킬 목적으로 컨트롤러라는 개념을 만들었다.
  • 이 전체 리소스들은 Control Plane Component라는 파드들의 의해서 동작한다.

학습 범위?

  • 어디까지 공부하느냐에 따라 학습 난이도가 달라진다.
  • 리소스 개념이나 파드 만드는 법만 알고싶을수도있고 k8s가 파드를 만들기 위해 어떤 동작을 하는지 궁금할수도있고 쿠버네티스가 리눅스의 어떤 기술을 이용해서 컨테이너를 실체화 시키는지 궁금해할수도있음.
  • 이건 각자의 선택임.
  • 강사님의 말대로 나는 궁금해질때 좀 파보기로 결정함.

각 리소스별 동작 (Pod,Probe, Service, Secret, HPA)

Pod 생성 및 Probe

  • Pod가 생성되는 과정과 Probe 동작
  • 대시보드에서 생성하는것과 같이 kubectl 명령어로 만들어도 똑같이 kube-apiserver가 api를 받게된다.
  • 그리고 etcd를 통해서 데이터를 저장시킨다.
  • 이후에 디플로이먼트가 조회되거나 대시보드에 나타나게 된다.
  • kube-controller-management는 계속 데이터베이스를 모니터링하고 있다가 디플로이먼트가 조회되면 레플리카셋을 생성하라는 api를 보낸다.
  • 레플리카셋이 만들어지면서 연결이되고 만들어진 레플리카셋을 보고 파드를 생성하라는 api를 날리는데 파드라는 데이터가 데이터베이스에 만들어진다. 이때 데이터만 있지 아직 실제 컨테이너가 만들어진것은 아니다.
  • 다음으로 kube-scheduler 가 보통 노드들에 대한 자원을 kube-apiserver를 통해서 모니터링하고 있다가 데이터베이스에 파드가 있는게 확인되면 파드를 띄울 노드를 스케줄링 한다.
  • 이때 파드안에 사용자가 설정해 놓은 내용을 보고 마스터 노드로 스케줄링 하라는 내용이 업데이트 됐으면 kubelet 또한 kube-apiserver를 통해서 자신의 노드 정보가 있는 pod를 모니터링 하고 있다가 컨테이너 런타임에 컨테이너 생성을 요청한다.
  • 이후에 containerd가 컨테이너를 만들어준다.
  • 그리고 kubelet이 probe 설정에 맞게 헬스체크 api를 주기적으로 날려준다.

Service

  • nodePort 타입으로 서비스를 만들어서 파드에 연결을 해준다.
  • kubelet이 kube-proxy한테 네트워크를 생성해달라고 요청을 한다.
  • kube-proxy는 iptables에 내용을 추가한다.
    • iptables는 리눅스로 들어오는 모든 패킷을 관리한다.
  • 사용자가 api를 요청하면 컨테이너로 트래픽을 전달해준다.  calico 가 해줌.

Secret

Secret은 일단 패쓰..

HPA

  • 기본적으로 현재 컨테이너에 대한 자원 사용량은 containderD가 알고있다.
  • kubelet이 cpu와  메모리를 10초에 한번 씩 조회하고 있다.
  • metrics 서버를 별도로 설치를 해야 주기적으로 사용량을 60초 단위로 수집을해서 저장을 하고 있는데 이 metrics가 있어야지 controller-manager가 HPA의 임계값과 메트릭을 15초 단위로 비교해 보면서 스케일링을 발생시킨다.
  • 수집 구간들의 타이밍이 잘 맞으면 바로 스케일링 동작을 하고, 최악의 경우 부하 발생 이후에 스케일링이 되기까지 85초까지 걸릴 수가 있다.

실습

https://cafe.naver.com/kubeops/61

 

Component 동작으로 이해하기

1. 주요 컴포넌트 구성 ▶ Resource 확인 ▶ Cluster 주요 컴포넌트 로그 확인 ▶ Master Node 파일 위치 ▶ 트러블 슈팅 ▶ 레퍼런스 https://k...

cafe.naver.com

 

출처

https://www.inflearn.com/course/%EC%BF%A0%EB%B2%84%EB%84%A4%ED%8B%B0%EC%8A%A4-%EC%96%B4%EB%82%98%EB%8D%94-%ED%81%B4%EB%9E%98%EC%8A%A4-%EC%A7%80%EC%83%81%ED%8E%B8-sprint1

 

쿠버네티스 어나더 클래스 (지상편) - Sprint 1, 2 강의 | 일프로 - 인프런

일프로 | , ✅ 광범위한 쿠버네티스 기술을 A~Z까지 넓고 얇게 훑기보다 하나의 개념을 배우더라도 왜 사용하는지 부터 실무에서 어떻게 사용되는지 까지를 다루는 강의 ✅ 시작은 초급자지만

www.inflearn.com

 

728x90
반응형
댓글
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함
반응형