kubeadm 은 설치형 쿠버네티스로서 서버간 클러스터링 환경을 구성하고 관리하기 위한 공식 도구중 하나입니다 온프레미스 환경에 직접 설치하고 운용할 목적으로 만들어졌습니다
1.28 버전(beta)
부터는 스왑메모리 사용을 지원한다고는 하나 조금 더 지켜봐야 할 것으로 보인다 🔍# 스왑설정 해제 및 확인
swapoff -a
free -h
# 재부팅 이후에도 스왑설정 유지
sed -i '/swap/s/^/#/' /etc/fstab
# 쿠버네티스 주요 포트만 허용으로 변경해도 됨 (ex: ufw allow 6443)
# 방화벽 해제 (우분투 기준)
ufw disable
nc 127.0.0.1 6443
쿠버네티스에서 컨테이너를 다루려면 컨테이너 런타임 이 필요
CRI (Container Runtime Interface)
규격에 맞는 다양한 컨테이너 런타임이 존재하고 필요에 맞게 설치한다
도커 엔진 패키지 안에 컨테이너 런타임
이 포함되어 있음
- 도커 엔진 설치 (가이드) : https://docs.docker.com/engine/install/
- 필수 구성 요소 설치 및 설정 (가이드) : https://kubernetes.io/docs/setup/production-environment/container-runtimes/
🐳 더 간단한 방법 🐳
컨네이터 런타임만 설치 (더 가볍게 쿠버네티스를 운용할 수 있다)
💡 컨테이너 런타임 만 필요하기 때문에 패키지 전부를 설치할 필요는 없다❗️# containerd 와 runC 가 아래의 명령어 하나로 설치됨 (컨테이너 런타임만 설치) apt install docker.io
## docker 또는 containerd 를 컨테이너 런타임으로 설치하였을 경우
# 환경설정 파일 [기본값]으로 초기화
mkdir -p /etc/containerd
containerd config default > /etc/containerd/config.toml
# config.toml 파일에서 SystemdCgroup 설정값 확인 및 변경 🔥
# SystemdCgroup 값이 false 라면 true 로 변경해야 함 🔥
sed -i 's/SystemdCgroup = false/SystemdCgroup = true/g' /etc/containerd/config.toml
# containerd.service 변경사항 적용
sudo systemctl restart containerd
kubeadm init \
# [옵션1] : 0.0.0.0 <- 이부분에 마스터 노드의 ip주소 입력
--apiserver-advertise-address=0.0.0.0 \
# [옵션2] 쿠버네티스용 네트워크 플러그인 ip대역 (ex: 플라넬 cni 권장 ip 대역)
--pod-network-cidr=10.244.0.0/16
# ex : 플라넬 플러그인 설치
kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml
# 마스터 노드에서 kubeadm init 명령에 대한 응답값으로 아래와 "유사한" 토큰이 생성됨
# 워커 노드에서 아래와 "유사한" 토큰을 포함한 명령어를 실행하므로 쿠버네티스 클러스터 대열에 합류하게 됨
kubeadm join 0.0.0.0:6443 --token abcdefghijklmnopqrstuvwxyz \
--discovery-token-ca-cert-hash sha256:0123456789
워커노드 에서
join
명령어가 정상적으로 동작하지 않는 경우 🚫
마스터노드 에서 워커노드 ip로ping
테스트를 해보는게 좋다 🔍🔍
# 토큰 재생성을 위한 명령어
kubeadm token create --print-join-command
(ex: 포트 해제)
및 환경설정 해제# 클러스터링 연결 해제 명령어
kubeadm reset
# purge : 패키지 및 환경설정까지 삭제
# autoremove 옵션 : 패키지 의존성 삭제
apt purge kubelet kubeadm kubectl kube* --auto-remove
### 현재 노드의 숫자 및 자세한 정보 확인
kubectl get nodes -o wide