기반 정보
Master Node
etcd에 워커 노드들의 상태 정보 가지고 있음
API를 통해 요청받아서 etcd 정보 기반으로 스케줄러에게 요청 (어느 노드에서 프로세스 실행하는게 가장 좋아?)
-> 스케줄러의 답변 (xx노드에다가 yy프로세스 실행)
스케줄러의 결과 기반으로 특정 노드 접속해서 kubelet에게 실행요청(ex, nginx 실행해줘)
kubelet은 docker에 실행 요청
컨트롤러가 상태 관찰하다가 문제가 생기면 새로운 노드에서 실행해줌
Master component
controller - 개수 보장
scheduler - 위치 배정
node - 각각 실행
etcd - 모든 상태 저장
API - 요청받아서 관리
Worker component
kubelet - 노드 모니터링
kube-proxy - 노드 네트워크 담당
기타
실제 컨테이너 실행 - docker
kubeadm - 클러스터 관리 도구
CNI - container network interface, 컨테이너 간 통신
한번 쭉 돌려본 뒤에 다시 정리하도록 하고, 일단은 설치-실행까지 먼저 해보자..
실행
쿠버네티스 설치
도커 설치가 먼저 필요함
1 |
|
쿠버네티스 설치 전 환경설정
1 |
|
쿠버네티스 설치 (kubelet, kubeadm, kubectl)
1 |
|
클러스터 구성
Control-Plane
마스터에 컴포넌트들 생성 (API, Controller, Scheduler, etcd, coreDNS)
1 |
|
설치 완료시
1 |
|
문구와 함께 토큰이 생성된다 (worker node 가 써야 하니까 따로 저장해두어야 함)
(만료기간이 하루? 정도로 매우 짧으니까 당장만 쓸 수 있음. 이후엔 재발급해야 함) -> 후술
모두 설치된 이후에는 다음 명령어로 path를 설정해주고
1 |
|
1 |
|
등의 명령어를 이용해서 클러스터 상태 확인 가능.
아직까지는 당연히 worker 등록을 하지 않았으니 control-plane 노드만 있다.
그리고 control-plane 노드가 not ready 일텐데, network add-on을 설치해야 함.
1 |
|
이제 다시 클러스터 상태를 보면 ready가 된 것을 볼 수 있다. - control plane 구성 끝
Worker Node
앞서 만들어둔 토큰을 인자로 명령어를 실행하면 됨
1 |
|
만약 토큰의 기간이 만료되었다면 control-plane 에서 재발급해야 함
1 |
|
나의 경우에는, kubeadm join 명령어 실행시 오류가 났음. 자세한 로그를 보기 위해서는 명령어 맨 뒤에 –v=5 옵션을 주면 에러 내용을 볼 수 있음. [troubleshooting]
다 되었으면 master 에서 확인 가능
1 |
|
- 설치 끝 -
kube 명령어들 자동완성(tab) 등록 방법
1 |
|