inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

쿠버네티스 어나더 클래스 지상편: Sprint1 Day9 Component 동작으로 이해

양파쿵야
1

Master Node와 Worker Node

운영환경에서 어플리케이션은 Worker Node에 올리고 자원이 더 필요한 만큼 Worker Node를 더 추가한다.

 

Addon Pod: K8s의 기본 기능을 확장시키기 위한 App(Dashboard, metrics-server 등)

 

Resource

K8s 인증서 - Kubectl → kube-apiserver로 API 호출 → etcd에 Resource 데이터 저장

 

K8s는 인프라의 네트워크, 볼륨, 환경 변수를 Object로 정의하고, Object를 자동화시킬 목적으로 Controller라는 개념을 만들었다.

전체 Resource는 Control Plane Component Pod들에 의해 동작한다.

 

Pod가 생성되는 과정

kubectl → kube-apiserver로 Deployment 생성 API 호출 → Deployment 리소스 생성

kube-conroller-manager가 Database를 모니터링하다 → Kube-apiserver로 ReplicaSet 생성 API 호출 → ReplicaSet 리소스 생성

kube-conroller-manager가 Database를 모니터링하다 → Kube-apiserver로 Pod 생성 API 호출 → Pod 리소스 생성 (데이터만 있는 상태로 실제 컨테이너가 생성된 것은 아니다)

kube-scheduler가 노드들에 대한 자원을 kube-apiserver를 통해서 모니터링하다 - Database에 Pod가 있는 것을 확인 → Pod를 생성할 노드를 스케줄링함

kubelet이 자신의 노드 정보가 있는 Pod를 모니터링하다 → container runtime에 컨테이너 생성 요청 → containerd가 컨테이너 생성

K8s는 컨테이너 생성 요청만 하고 → 실제 컨테이너는 containerd가 만들어준다

 

Probe 동작

kubelet이 probe 설정에 맞춰 컨테이너로 헬스체크 API를 주기적으로 요청

 

Service 동작

nodePost 타입으로 서비스 생성 및 Pod 연결 시 Kublet이 kube-proxy에 Network 생성 요청

→ kube-proxy가 iptables(Linux로 들어오는 모든 패킷 관리) 에 내용 추가 및 업데이트 (port에 대해 해당 서비스로 전송하는 매핑 룰 업데이트)

사용자가 API 호출 → calico가 컨테이너로 트래픽 전달

 

Secret 동작

컨테이너 내부의 파일들은 Node의 memory 영역(전원이 중단되면 데이터가 삭제되는 영역)에 마운팅된다: 내 디스크를 탈취하더라도 보안에 안전함

Secret은 Memory에 저장되기 때문에 Secret을 많이 만들게되면 노드의 Memory가 부족해진다.

Secret의 내용 수정 → kubelet이 주기적으로 변경사항 확인 후 업데이트: 조금의 딜레이 발생

 

HPA 동작

컨테이너에 대한 자원 사용량은 Containerd가 확인할 수 있음

Kubelet → CPU와 Memory 사용량을 10초에 1회씩 Containerd에 조회

metrics-serve가 설치되어야만 자원 사용량을 60초 단위로 수집해 저장한다.

kube-controller-manager가 metrics-server의 자원 사용량과 HPA 리소스의 임계값 및 매트릭을 15초 단위로 비교 → 최종적으로 스케일링 발생(최초 임계치 초과 후 스케일링 까지 반응 시간 최소 1초 - 최대 85초 소요)

 

실습: K8s 전체 리소스 조회

imageNamespace가 false인 경우 Cluster Level의 리소스이다.

 

실습: Cluster 주요 컴포넌트 로그 확인

image

image

image

image

실습: Master Node 파일 위치

image/etc/kubernetes/admin.conf에는 K8s에서 사용하는 인증서 내용이 있고, 해당 내용을 /root/.kube/config 위치에 복사한 것이다.

kubectl이 해당 내용을 참조해 K8s에 API 호출을한다.

 

imageControl Plane Component Pod 생성시 사용된 yaml 파일들이다.

 

image네이밍 룰에 의해 생성된 로그 파일을 확인할 수 있다.

 

image컨테이너별로도 로그 파일이 생성된다.

 

실습: 트러블슈팅

kubelet 상태 확인

image

containerd 상태 확인

image

image

Node 상태 확인

image

Pod 상태 확인

image

이벤트 조회

imageimageimage

 

Iptable 확인

image

데브옵스 · 인프라 워밍업클럽4기

답변 0