쿠버네티스 어나더 클래스 지상편: Sprint1 Day9 Component 동작으로 이해
Master Node와 Worker Node
Master Node: /etc/kubernetes/manifests.yaml 파일 → kubeadm 명령으로 kube-system Pod 생성 → Control Plane Component를 만든다.
Worker Node: Worker Node를 Master Node에 조인 → Worker Node Component 영역 생성 + kube-proxy Component 생성(사용자 App을 올리는 공간)
운영환경에서 어플리케이션은 Worker Node에 올리고 자원이 더 필요한 만큼 Worker Node를 더 추가한다.
Addon Pod: K8s의 기본 기능을 확장시키기 위한 App(Dashboard, metrics-server 등)
Resource
K8s 인증서 - Kubectl → kube-apiserver로 API 호출 → etcd에 Resource 데이터 저장
Controller(타 Controller 또는 Object를 제어)
Object(하나의 인프라 개념으로서 단독 기능을 함)
Namespace Level Resource, Cluster Level 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 전체 리소스 조회
Namespace가 false인 경우 Cluster Level의 리소스이다.
실습: Cluster 주요 컴포넌트 로그 확인




실습: Master Node 파일 위치
/etc/kubernetes/admin.conf에는 K8s에서 사용하는 인증서 내용이 있고, 해당 내용을 /root/.kube/config 위치에 복사한 것이다.
kubectl이 해당 내용을 참조해 K8s에 API 호출을한다.
Control Plane Component Pod 생성시 사용된 yaml 파일들이다.
네이밍 룰에 의해 생성된 로그 파일을 확인할 수 있다.
컨테이너별로도 로그 파일이 생성된다.
실습: 트러블슈팅
kubelet 상태 확인

containerd 상태 확인


Node 상태 확인

Pod 상태 확인

이벤트 조회



Iptable 확인

답변 0





