0부터 시작하는 Kubernetes 공부 - K3S 설치하기

Jaehong Lee·2023년 2월 8일
2
post-thumbnail
post-custom-banner

1. 환경 준비

가상 머신 환경

  • virtual box
  • Ubuntu 20.04
  • 메모리 : 4096MB, Cpu : 4core, Disk : 20G

네트워크 설정

  • virtual box 네트워크 설정은 위와 같다

  • master 노드 네트워크 설정

  • worker1 노드 네트워크 설정

  • worker2 노드 네트워크 설정

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 -
  • Kubernetes Master 설치
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:~# kubectl cluster-info
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:~# kubectl get node
NAME     STATUS   ROLES    AGE     VERSION
master   Ready    master   3m24s   v1.18.6+k3s1
  • K3S가 정상적으로 설치되었습니다
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:~# kubectl get node
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
  • Calico CNI를 설치한다

root@master:~# kubectl get ns
NAME              STATUS   AGE
kube-system       Active   24m
default           Active   24m
kube-public       Active   24m
kube-node-lease   Active   24m
tigera-operator   Active   108s
  • namespace 생성 확인

참고 자료

profile
멋진 엔지니어가 될 때까지
post-custom-banner

0개의 댓글