[Kubernetes] Local 클러스터 구성
- 1 설치 환경
- 1.1 마스터 노드
- 1.2 워커 노드
- 1.3 설치 전 확인 사항
- 2 Kubernetes 설치
- 2.1 마스터, 워커 공동 설치
- 2.2 마스터 노드 설정
- 2.3 워커 노드 설정
- 3 Kubernetes 배포 예제
- 4 Kubernetes 종료
쿠버네티스는 기본적으로 마스터 노드와 워커 노드로 구성. 마스터 노드와 워커 노드는 최소한 1개씩 필요.
마스터 노드: 워커 노드에 Pod를 할당하고 Pod 안에 컨테이너를 띄우게 하는 역할. 쿠버네티스의 상태를 관리하고 여러 Pod 들의 스케줄링.
워커 노드: 마스터 노드와 통신하면서 Pod를 할당 받고 그 안에 컨테이너를 띄워 유지 및 관리하는 역할. 네트워크나 볼륨에 대한 기능도 컨트롤.
설치 환경
마스터 노드
OS : Ubuntu 18.04 LTS
CPU : 2 core
RAM : 2 GB
Storage : 20GB
워커 노드
OS : Ubuntu 18.04 LTS
CPU : 2 core
RAM : 1 GB
Storage : 20GB
설치 전 확인 사항
마스터 노드와 워커 노드 네트워크 연결 확인
swap 메모리 비활성화
$ swapoff -a $ vi /etc/fstab /swapfile 설정되어있는 구문 주석처리
Docker 설치 확인
Docker 데몬 드라이버설정 - kubernetes에서 권장하는 Docker 데몬의 드라이버는 systemd. kubernetes가 클러스터 노드에서 사용 가능한 자원을 쉽게 알 수 있도록 구성됨.
$ sudo cat > /etc/docker/daemon.json <<EOF { "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2" } EOF $ sudo mkdir -p /etc/systemd/system/docker.service.d $ sudo systemctl daemon-reload $ sudo systemctl restart docker
방화벽 실행 중지
$ systemctl stop firewalld $ systemctl disable firewalld
Kubernetes 설치
마스터, 워커 공동 설치
kubeadm : kubernetes 클러스터를 구축하기 위해 사용하는 툴.
kubelet : 클러스터의 모든 머신에서 실행되며 Pod 및 컨테이너 시작 등의 작업을 수행하는 구성 요소.
kubectl : 클러스터와 통신하는 커맨드라인 인터페이스 유틸.
마스터 노드 설정
—-pod-network-cidr
: Pod 네트워크를 설정할 때 사용--apiserver-advertise-address
: 특정 마스터 노드의 API Server 주소를 설정할 때 사용
Root 계정이 아닌 다른 사용자 계정에서 kubectl
커맨드 명령어를 사용하여 클러스터를 제어하도록 설정
Pod 네트워크 애드온(Flannel) 클러스터에 배포
마스터 노드 설정 확인 명령어
워커 노드 설정
마스터 노드 결합 명령어
마스터 노드의 IP:6443 (6443 포트는 kubernetes api server 프로세스의 기본 포트. 만약 마스터 노드의 api server 포트가 6443이 아니라면 해당 마스터 노드의 api server 포트 번호를 기입.)
--token
(기본적으로 24시간 뒤 만료)--discovery-token-ca-cert-hash
token 찾는 명령어
token 만료 시 생성 명령어
discovery-token-ca-cert-hash 찾는 명령어
마스터 노드에서 워커 노드 결합 확인
Kubernetes 배포 예제
구글에서 제공하는 Hello world 샘플 프로젝트를 kubectl create deployment
명령어로 배포하는 예제
deployment 확인
pod 확인
워커 노드에서 curl
명령어를 통해 Pod 내부에 떠있는 컨테이너 확인
Kubernetes 종료
쿠버네티스 클러스터를 삭제하는 방법
마스터 노드
워커 노드