푸잉이의 기술블로그
[Day2] Certified Kubernetes Administrator (CKA) with Practice Tests 본문
[Day2] Certified Kubernetes Administrator (CKA) with Practice Tests
data고수 2023. 1. 4. 00:0318강
Kubelet (Worker node)
- 선박의 캡틴
- 선박에 있는 모든 활동들을 이끔
- 선장의 스케줄러 지시에 따라 선박에 컨테이너를 싣거나 내림
- 클러스터의 각 노드에서 실행되는 에이전트
- pod에서 컨테이너가 확실하게 동작하도록 관리
- api-server와 통신, podspec을 사용해 podspec에 기술된 컨테이너들이 정상적으로 작동 되도록 도움
- 관리자가 pod를 배포하려는 경우, api-server를 비롯한 컨트롤 플레인의 컴포넌트들은 명령에 대한 인가 및 인증을 수행하고, 선언된 상태외 일치하지 않는 pod를 확인하고 어떤 node에 pod를 배치하면 좋을지 결정 (사실 어디에 배치할지는 Master node의 컴포넌트들 = scheduler가 결정, 실제로 container runtime(docker)에 배치를 명령하는 것은 kubelet의 역할)
<Kubelet 설치>
kubeadm은 kubelet을 배포할 수 없음 -> 수동 설치
wget https://storage.googleapis.com/kubernetes-release/release/v1.13.0/bin/linux/amd64/kublet
순서: 설치, extract, run
<View the running kubelet process>
ps-aux | grep kublet
19강
Kube-proxy (Worker node)
- 클러스터 내의 서비스에 대한 라우팅 트래픽을 처리하는 구성 요소
- 네트워크 동작을 관리하는 컴포넌트 (Proxy 사전적 의미: 대리인) 서버와 클라이언트 사이에서 대리인
- DaemonSet의 형태로 배포되어 있음
20강
Docker란
- 애플리케이션 구축, 구현 및 테스트를 위해 격리된 가상화 환경을 생성하는 서비스형 플랫폼
- 컨테이너 엔진이며 리눅스 커널 기능을 사용하여 운영 체제 위에 컨테이너를 만듦
- 애플리케이션을 포장 및 전송하기 위해 도커는 docker image 사용
- 파일로 애플리케이션 실행에 필요한 독립적인 환경을 포함, 런타임 환경을 위한 일종의 탬플릿
- Doker image는 소스코드, 라이브러리, 종속성, 도구 및 응용 프로그램을 실행하는 데 필요한 기타 파일을 포함하는 불변 (변경 불가) 파일 -> 스냅샷, 특정 시점의 애플리케이션과 가상 환경을 나타냄
- -> 개발자가 안정적이고 균일한 조건에서 소프트웨어를 테스트하고 실험할 수 있도록 함
- 다양한 프로그램, 실행환경을 컨테이너로 추상화하고 동일한 인터페이스를 제공하여 프로그램의 배포 및 관리해줌
Recap- POD s
- 쿠버네티스는 컨테이너를 워커 노드에 직접적으로 배포하지 않는다
- 컨테이너는 POD(애플리케이션의 Single 인스턴스, 쿠버네티스에서 가장 작은 object)로 캡슐화
- 하나의 pod에 두개의 컨테이너는 존재할 수 없음/ 2개의 분리된 pod로 해야함
- Helper 컨테이너는 하나의 pod에 컨테이너와 같이 존재 가능 (두개의 컨테이너들은 같은 network space를 공유하기 때문에 직접적으로 소통 가능, 저장공간도 share )
- Helper 컨테이너는 데이터에 접근 가능
How to deploy POD s
<pod list 확인>
kubectl get pods
21강
POD with YAML
- 쿠버네티스는 pods, replicas, deployments, services와 같은 오브젝트들을 생성하기 위한 input 때문에 YAML file을 사용한다
<Pod-definition.yml>
Top level filed (Root level): 필수 필드라 반드시 configuration file 에 있어야함
1) apiVersion:오브젝트를 만들기 위해 사용
2) Kind: 만들고자하는 오브젝트의 타입의 유형을 나타냄
3) metadata: 위의 오브젝트의 데이터 (Dictionary 형태), 조금 오른쪽으로 치우쳐 있음
4) spec: specification section 줄임말, 컨테이너 특징을 작성 (container는 list/array-> pods는 다양한 container들을 가지고 있기 때문, 컨테이너 이름 앞에 - 는 list 중 첫번째 아이템(dictionary))
kubectl create -f pod-definition.yml
-> pod-definition.yml을 실행하고 쿠버네티스가 pod를 생성
kubectl get pods
-> 가능한 pod 리스트 보여줌
kubectl describe pod myapp-pod
-> pod에 대한 디테일한 정보를 볼 수 있음