버네티스를 자동으로 설치하는 스크립트를 공개(https://blog.naver.com/kgg1959/222164837673)
했었는데요.
이번 시간에는 설치 스크립트에서 했던 동작을 한 과정 한과정 직접 실습해보겠습니다.
▶영상: https://youtu.be/2-ebS1NuTW8
1. 준비
1) virtualbox가 설치되어 있어야 합니다.
2) 현재 접속되어 있는 IP대역을 알아야 됩니다(예: 192.168.0.x)
2. 우분투 서버 설치
쿠버네티스에 설치한 리눅스는 우분투 서버를 사용합니다. 우분투 공식 홈페이지에서 다운로드하고 설치를 진행합니다. 우분투 서버 설치과정은 생략합니다.
▶ 우분투 서버 다운로드 공식 홈페이지: https://ubuntu.com/download/server
3. 설치 준비
3.1 도커 설치
도커 공식홈페이지를 참고하여 도커를 설치합니다.
▶ 도커 설치 공식 홈페이지: https://docs.docker.com/engine/install/ubuntu/
$ sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo apt-key fingerprint 0EBFCD88
$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io
3.2 스왑 메모리 비활성화
현재 쿠버네티스는 스왑 메모리를 비활성시켜줘야 합니다. swapoff 명령어로 스왑을 비활성화 합니다.
sudo swapoff -a
그리고 /etc/fstab에 swap이 적혀 있는 라인을 주석처리합니다.
3.3 br_netfilter모드 활성화
br_netfilter모드를 활성화합니다.
sudo modprobe br_netfilter
3.4 iptables 설정
bridge-nf-call-iptables을 활성화 합니다.
sudo cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sudo sysctl --system
3.5 고정IP설정
/etc/netplan/00-installer-config.yaml파일을 수정해서 IP를 고정으로 설정합니다.
network:
ethernets:
enp0s3:
addresses: [192.168.219.144/24]
gateway4: 192.168.219.1
nameservers:
addresses: [8.8.8.8, 168.126.63.1]
version: 2
4. 쿠버네티스 설치
sudo apt-get update && sudo apt-get install -y apt-transport-https curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
5. virtualbox 복제
쿠버네티스가 설치된 상태에서 VM을 종료합니다. 그리고 CLONE버튼을 클릭하여 복제합니다. 복제한 VM은 워커노드로 사용됩니다.
6. 클러스터 생성(Control-plane)
VM을 다시 켜서 클러스터를 생성합니다. 클러스터를 생성한 VM은 control plane(마스터 노드)가 됩니다.
▶ --apiserver-advertise-address의 IP는 VM IP입니다.
▶ --apiserver-cert-extra-sans의 IP는 VM IP입니다.
▶ --pod-network-cidr는 쿠버네티스에 설치될 컨테이너 IP대역입니다. 조금 있다 설치할 CNI 네트워크 대역을 피하기 위해 172.16.0.0/16로 설정합니다. 만약 192.168.0.x대역으로 하면 CNI와 충돌나서 다시 클러스터를 생성해야 합니다.
sudo kubeadm init \
--apiserver-advertise-address="192.168.219.144" \
--apiserver-cert-extra-sans="192.168.219.144" \
--node-name "master" \
--pod-network-cidr=172.16.0.0/16
설치가 끝나면 mkdir로 시장하는 장문의 명령어가 나옵니다. 복사 붙여넣기 해서 명령어를 실행합니다. 해당 명령어는 생성한 클러스터의 접속정보 설정입니다.
7. CNI 설치(Control-plane)
쿠버네티스 네트워크 통신을 위한 CNI 오픈소스를 설치합니다. calico 공식문서에 친절히 설치 명령어를 설명하고 있습니다.
▶ calico 설치 공식문서: https://docs.projectcalico.org/getting-started/kubernetes/self-managed-onprem/onpremises
curl https://docs.projectcalico.org/manifests/calico.yaml -O
kubectl apply -f calico.yaml
인터넷 환경에 따라 3~10분정도 소요됩니다. 성공적으로 설치되었다면 calico pod가 running 상태입니다.
8. 클러스터 접속(워커 노드)
워커노드는 control-plane이 생성한 클러스터에 접속합니다.
controlplane VM에서 조인 명령어를 생성할 수 있습니다.
sudo kubeadm token create --print-join-command
명령어 실행 결과를 워커노드 VM에서 실행하면 클러스터에 접속됩니다.
'전공영역 공부 기록' 카테고리의 다른 글
파이썬 - json을 파일로 저장할 때 공백 크기 설정 (0) | 2020.12.15 |
---|---|
파이썬 경로를 다룰떄 유용한 함수(os.path.join) (0) | 2020.12.14 |
우분투 18, 20버전 IP변경 (0) | 2020.12.12 |
쿠버네티스 자동 설치 스크립트 (0) | 2020.12.08 |
CKA 시험 소개 (0) | 2020.12.04 |