1. 환경 준비
가상 머신 환경
- virtual box
- Ubuntu 20.04
- 메모리 : 4096MB, Cpu : 4core, Disk : 20G
네트워크 설정
- virtual box 네트워크 설정은 위와 같다
2. Kubernetes 설치
ssh 설치 및 접속
sudo apt-get install ssh
sudo apt-get install openssh-server
sudo /etc/init.d/ssh restart
sudo apt install net-tools
sudo ufw disable
- putty를 통해 작업하기 위해 ssh 설치 및 실행을 해줍니다
- ssh 접속을 위한 virtual box 포트포워딩 설정
필요 패키지 설치
sudo apt install -y docker.io nfs-common dnsutils curl vim
- docker, nfs, dns, curl, vim 을 설치합니다
Kubernetes 설치 ( Master )
- 이번 프로젝트에서는 경량화된 Kubernetes인 K3S를 사용합니다
- K3S는 ETCD 대신 SQLlite3를 기본으로 사용
- 런타임으로 Docker대신 containerd 사용
- 기존 쿠버네티스에서 지원하는 과거 버전의 API는 지원하지 않지만, 설치가 쉽고, 사용이 편하다
curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="\
--disable traefik \
--disable metrics-server \
--node-name master --docker" \
INSTALL_K3S_VERSION="v1.18.6+k3s1" sh -s -
sudo update-ca-certificates
mkdir ~/.kube
sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config
sudo chown -R $(id -u):$(id -g) ~/.kube
echo "export KUBECONFIG=~/.kube/config" >> ~/.bashrc
source ~/.bashrc
- Api Server 접근을 위한 Kubeconfig 설정
root@master:~
Kubernetes master is running at https://127.0.0.1:6443
CoreDNS is running at https://127.0.0.1:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
root@master:~
NAME STATUS ROLES AGE VERSION
master Ready master 3m24s v1.18.6+k3s1
NODE_TOKEN=$(sudo cat /var/lib/rancher/k3s/server/node-token)
echo $NODE_TOKEN
- Worker들이 클러스터에 가입하기 위한 토큰을 확인합니다
Kubernetes 설치 ( Worker )
- Master 노드에서 확인한 토큰 값과 Master 노드의 Ip를 변수로 설정합니다
curl -sfL https://get.k3s.io | K3S_URL=https://$MASTER_IP:6443 \
K3S_TOKEN=$NODE_TOKEN \
INSTALL_K3S_EXEC="--node-name worker --docker" \
INSTALL_K3S_VERSION="v1.18.6+k3s1" sh -s -
- 설정한 변수를 이용해 K3S를 설치합니다
- 다중 worker 노드이므로 node-name에 해당하는 노드 이름 값은 노드별로 변경해줍니다
root@master:~
NAME STATUS ROLES AGE VERSION
worker2 Ready <none> 61s v1.18.6+k3s1
worker NotReady <none> 2m39s v1.18.6+k3s1
master Ready master 20m v1.18.6+k3s1
Calico CNI 설치
- K3S는 기본적으로 flannel CNI를 제공하지만, Calico를 사용하기 위해 추가적으로 설치한다
kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/tigera-operator.yaml
root@master:~
NAME STATUS AGE
kube-system Active 24m
default Active 24m
kube-public Active 24m
kube-node-lease Active 24m
tigera-operator Active 108s
참고 자료