티스토리 뷰
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
출처
쿠버네티스 어나더 클래스 (지상편) - Sprint 1, 2 강의 | 일프로 - 인프런
일프로 | , ✅ 광범위한 쿠버네티스 기술을 A~Z까지 넓고 얇게 훑기보다 하나의 개념을 배우더라도 왜 사용하는지 부터 실무에서 어떻게 사용되는지 까지를 다루는 강의 ✅ 시작은 초급자지만
www.inflearn.com
728x90
반응형
댓글
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- input
- Spring Security
- mybatis config
- 오라클
- Bash tab
- Spring
- Linux
- rocky
- mybatis
- docker
- JavaScript
- window
- Mac
- svn
- LocalDateTime
- jQuery
- Kotlin
- maven
- springboot
- LocalDate
- 북리뷰
- config-location
- oracle
- elasticsearch
- k8s
- 베리 심플
- intellij
- claude
- Java
- localtime
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함
반응형