Kubernetes Node 추가 / kubeadm 이용 / Ubuntu 18.04 환경
1. 설치 환경
설치 환경은 다음과 같다.
- HyperV
- Master Node : Ubuntu Desktop 18.04.1 64bit : 1대
- Worker Node : Ubuntu Server 18.04.1 64bit : 2대
- Docker : 19.03.1
- Kubernetes 1.15.3
- Network Plugin : calico or flannel or cilium 이용
- Dashboard Addon : Dashboard 이용
- kubeadm 1.15.3
- VM을 이용하여 Cluster 환경을 구축하는 경우 kubeadm을 이용하여 쉽게 Kubernetes를 설치 할 수 있다.
- Password
- Kubernetes 설치에 필요한 Password는 간편한 설치를 위해 root로 통일한다.
- 모든 Node에서 root User로 설치를 진행한다.
2. Package 설치
(Added Node)$ apt-get update && apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
(Added Node)$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
(Added Node)$ add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb-release -cs) stable"
(Added Node)$ apt-get update && sudo apt-get install docker-ce=5:19.03.1~3-0~ubuntu-bionic docker-ce-cli containerd.io
추가할 Node에 Docker를 설치한다.
(Added Node)$ apt-get update && apt-get install -y apt-transport-https curl
(Added Node)$ curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
(Added Node)$ echo deb http://apt.kubernetes.io/ kubernetes-xenial main > /etc/apt/sources.list.d/kubernetes.list
(Added Node)$ apt-get update && apt-get install -y kubeadm=1.15.3-00 kubelet=1.15.3-00
추가할 Node에 kubeadm과 kubelet을 설치한다.
3. Node 추가
3.1. Master Node
(Master Node)$ kubeadm token create
4n1agp.j97evoelu2k35dre
(Master Node)$ kubeadm token list
TOKEN TTL EXPIRES USAGES DESCRIPTION EXTRA GROUPS
4n1agp.j97evoelu2k35dre 23h 2020-07-27T08:03:59Z authentication,signing <none> system:bootstrappers:kubeadm:default-node-token
kubeadm을 이용하여 Token을 생성한다.
(Master Node)$ openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
060896fc4bfe949304b8c1af7b23bb5c4e60e6d242722ce5bd02fe4cbc94aabe
CA 인증서의 Hash값을 얻는다.
3.2. Added Worker Node
(Added Node)$ kubeadm join 30.0.0.34:6443 --token 4n1agp.j97evoelu2k35dre --discovery-token-ca-cert-hash sha256:060896fc4bfe949304b8c1af7b23bb5c4e60e6d242722ce5bd02fe4cbc94aabe
kubeadm으로 생성한 Token과 CA 인증서의 Hash 값을 이용하여 Cluster에 Join한다. 30.0.0.34은 Master Node의 IP이다.
4. Node 추가 확인
(Master Node)$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
vm01 Ready master 236d v1.15.3
vm02 Ready <none> 236d v1.15.3
vm03 Ready <none> 236d v1.15.3
vm04 Ready <none> 101s v1.15.3
Master Node에서 추가된 Node를 확인한다. Node04가 추가된 Node이다.