[교육] PAAS 2일차
kubernetes
구성
- 설정파일을 다운로드 후 메모리 관련 약간 수정하여 구성 https://gitlab.com/junkoks/board/-/raw/main/Work.zip
쿠버네티스란
컨테이너화된 워크로드와 서비스를 관리하기 위하여 이식성있고, 확장가능한 오픈소스 플랫폼이다.
독립서버에서 하나의 애플리케이션
자원 효율적으로 관리 어려움
독립서버에서 복수의 애플리케이션
자원을 서로 잡아먹음
가상서버에서 하나의 애플리케이션
자원 관리 및 차단에 좋지만 OS자원 낭비 발생
컨테이너
운영체제 공유하고 개별 서비스는 고립됨
구성요소
마스터노드 워커노드
마스터 컴포넌트
cloud-controller-manager
- 컨트롤 플레인의 한 종류. 클라우드(aws, azure..)별 컨트롤 로직을 포함한다.
노드 컴포넌트
-
kubelet : 클러스터의 노드에서 실행되는 에이전트. 파드에서 컨테이너가 동작하도록 관리. 쿠버네티스를 통해 생성되지 않은 컨테이너는 관리하지 않는다(ex. docker run 등으로 수행 중인 컨테이너)
-
kubeproxy :
-
컨테이너 런타임 : 런타임
애드온
애드온은 쿠버네티스 리소스를 통하여 구현(데몬셋, 디플로이먼트)
- dns : 거의 기본적인 애드온
- 웹 UI
- 컨테이너 리소스 모니터링
- 클러스터 레벨 로깅
쿠버네티스 API
클러스터 아키텍처
노드 관리
각 노드에 대하여 스케줄링 가능/불가능 여부를 설정할 수 있다.
kubectl get nodeskubectl cordon node-1kubectl get nodeskubectl uncordon node-1
노드상태 kubectl get node
NAME STATUS ROLES AGE VERSIONdocker-desktop Ready control-plane 18d v1.25.4
컨트롤 플레인과 노드간의 통신
노드->컨트롤플레인
- 패턴 : 허브 앤 스포크 API 패턴.
컨트롤플레인->노드
- apiserver -> kubelet
- proxy -> node or pod
API 서버에서의 노드, 파드 및 서비스로의 통신
api->other component : http연결. 암호화되지 않음. https로 통신 가능하나 검증하지 않음
컨트롤러
컨테이너 런타임 인터페이스
이미지와 이미지 레지스트리
이미지 풀 정책
- imagepullpolicy
- always : 컨테이너를 기동할때 마다 땡겨서(이미지 다이제스트에 변경을 판단해서) 실행. 레지스트리에 연결되어 있는 경우 추천 옵션
- ifnotpresent : 없는 경우에만 땡김
- never : 안 땡겨온다. 이미지가 없으면 실행이 되지 않음
이미지풀백오프
imagepullbackoff -> waiting 제일 실패가 많은 상태. 뭔가 이미지를 가져올 수 있는 권한이 없거나, 이미지 이름이나 태그를 잘못 적었거나 등의 이유로 컨테이너 이미지를 가져올 수 없는 상태라 실행할 수 없음을 의미한다. 이미지를 가져오려고 재시도를 계속하는데 재시도마다 재시도 주기가 늘어나며 최대 주기는 300초(5분)으로 쿠버네티스 코드에 고정되어 있다.
워크로드
파드 : 가장 작은 컴퓨팅 단위. 컨테이너의 그룹. deployment등에 포함되어 있지 않을 경우 singleton pod라고 부른다.
nginx 예제
apiVersion: v1kind: Podmetadata:name: nginxspec:containers:- name: nginximage: nginx:1.14.2ports:- containerPort: 80