전공영역 공부 기록

kubeadm을 이용한 쿠버네티스 설치

악분 2020. 12. 14. 08:34
반응형

버네티스를 자동으로 설치하는 스크립트를 공개(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이 적혀 있는 라인을 주석처리합니다.

/etc/fstab 주석설정

 

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은 워커노드로 사용됩니다.

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로 시장하는 장문의 명령어가 나옵니다. 복사 붙여넣기 해서 명령어를 실행합니다. 해당 명령어는 생성한 클러스터의 접속정보 설정입니다.

kubeconfig 설정

 

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 상태입니다.

calico 설치 성공

 

 

8. 클러스터 접속(워커 노드)

워커노드는 control-plane이 생성한 클러스터에 접속합니다.

클러스터 접속

 

controlplane VM에서 조인 명령어를 생성할 수 있습니다.

sudo kubeadm token create --print-join-command

 

명령어 실행 결과를 워커노드 VM에서 실행하면 클러스터에 접속됩니다.

워커노드에서 클러스터 접속

반응형