3 분 소요

인스턴스 준비

SSH 키 생성

추후 컴퓨트 인스턴스에 접속하기 위한 SSH 키 페어를 준비해둡니다. 이미 있을 경우 공개키를 준비해두고 없을 경우 이 링크를 참고해서 생성합니다.

컴퓨트 인스턴스 생성

컴퓨트 메뉴 진입

Create instance

  • Compute 선택
  • Instances 에서 Create Instance 선택
    • Free tier 로 2개를 제공하고 있으므로 쿠버네티스 노드를 마스터와 워커 한개씩 생성

컴퓨트 인스턴스 초기 설정

Configure instance

  • Image 로 Ubuntu 를 선택하고 OS 버전을 18.04로 선택
  • Create 선택해서 인스턴스 생성 시작

List instances

컴퓨터 인스턴스 초기화

Timezone 설정

아래의 명령어로 타임존 패키지를 설치한 다음 서울 타임존을 설정하고 재부팅 합니다.

$ sudo apt install tzdata
$ sudo ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime

$ sudo reboot

다시 접속했을 때 시간이 제대로 설정되어 있는지 확인합니다.

iptables에 규칙 추가

k3s는 내부적으로 10.43.0.x 와 같은 IP를 사용해서 컨테이너간 통신을 합니다. 그래서 10.0.0.0/8 규칙으로 ACCEPT 를 설정합니다.

sudo iptables -I INPUT 9 -s 10.0.0.0/8 -j ACCEPT
sudo iptables -I INPUT 10 -d 10.0.0.0/8 -j ACCEPT

sudo iptables -I FORWARD 9 -s 10.0.0.0/8 -j ACCEPT
sudo iptables -I FORWARD 10 -d 10.0.0.0/8 -j ACCEPT

sudo netfilter-persistent save

VCN 에 Ingress 규칙 추가

k3s 노드간의 통신이나 K8s 클라이언트에서 접속하기 위해서는 6443 포트를 열어주어야 합니다. Ingress 규칙을 추가합니다.

  • Networking 진입
  • Virtual Cloud Networks -> cluster 선택 -> Ingress Rules
  • Add Ingress Rules

아래와 같이 설정되도록 규칙을 추가합니다.

Ingress Rules

💡 여기서는 Source 를 모든 IP 에 열어줬는데 실제로 이렇게 운영하면 안됩니다. 접속을 허용할 IP 대역을 제한하는 것이 좋습니다.

이제 k3s 를 설치하기 위한 모든 준비가 마무리 되었습니다. k3s 설치 방법은 크게 두가지가 있습니다.

  • 직접 설치
  • k3sup 을 이용해서 설치

k3sup 을 이용해서 설치하는 것이 더 쉽습니다.

k3s 직접 설치

마스터 노드에 k3s 설치

아래의 명령으로 k3s 를 설치합니다. 아래 옵션은 마스터 노드에 설치하는 옵션으로 워커 노드에서 실행할 명령어는 다릅니다.

$ curl -sfL https://get.k3s.io | sh -

이제 워커 노드에 필요한 두가지 정보를 획득합니다.

  • 내부(Internal) IP
  • k3s 토큰

먼저 IP를 확인합니다.

$ ip addr | egrep "10.0.0."
# inet 10.0.0.246/24 brd 10.0.0.255 scope global ens3

위와 같은 경우 10.0.0.246 가 IP 입니다. 이제 토큰을 확인합니다.

$ sudo cat /var/lib/rancher/k3s/server/node-token
# token::server::token

이제 워커 노드로 갑니다.

워커 노드에 k3s 설치

$ curl -sfL https://get.k3s.io | K3S_URL=https://10.0.0.246:6443
# K3S_TOKEN=token::server::token sh -

k3s 설치 확인

마스터 노드에서 설치 확인

아래와 같이 Pod 들이 정상적으로 동작하고 있는지 확인합니다.

$ sudo kubectl get po --all-namespaces
# NAME                                      READY   STATUS      RESTARTS   AGE
# helm-install-traefik-qwxpc                0/1     Completed   0          12m
# metrics-server-86cbb8457f-86kcz           1/1     Running     0          44m
# svclb-traefik-j7lcw                       2/2     Running     0          11m
# traefik-6f9cbd9bd4-rnmkz                  1/1     Running     0          11m
# coredns-854c77959c-cn2r7                  1/1     Running     0          44m
# local-path-provisioner-5ff76fc89d-6f4sc   1/1     Running     0          44m

k3s 설치 삭제

마스터 노드에서 k3s 삭제

$ /usr/local/bin/k3s-uninstall.sh

워커 노드에서 k3s 삭제

$ /usr/local/bin/k3s-agent-uninstall.sh

k3sup 이용

k3sup 을 이용하면 좀더 쉽게 k3s 를 설치할 수 있습니다. 위의 과정에서 토큰을 획득 하거나 IP 를 찾는 등의 과정을 생략할 수 있기 때문입니다.

k3sup 다운로드

위의 사이트에 접속하시면 각 환경에 맞게 설치하는 방법이 설명되어 있습니다. 저는 Mac OS (ARM64) 시스템에 설치했습니다.

$ curl -sLS https://get.k3sup.dev | sh
$ sudo cp k3sup-darwin /usr/local/bin/k3sup

마스터 노드에 k3s 설치

${MASTER_IP} 만으로 설치가 가능합니다.

$ k3sup install \
  --ip ${MASTER_IP} \
  --user ubuntu \
  --k3s-extra-args "--cluster-init"

아래의 커맨드로 k3s 의 컨텍스트를 $HOME/.kube/config 에 다운로드 할 수 있습니다.

$ k3sup install \
  --ip ${MASTER_IP} \
  --user ubuntu \
  --merge \
  --local-path $HOME/.kube/config \
  --context oci-k3s \
  --k3s-extra-args "--cluster-init"

위 명령을 실행하면 현재 경로에 kubeconfig 파일을 생성합니다. 이 파일안에 접속 정보가 담겨있습니다.

워커 노드에 k3s 설치

${MASTER_IP}${WORKER_IP} 를 넘겨주면 직접설치할 때 번거로운 과정들을 k3sup 이 대신해줍니다.

k3sup join --ip ${WORKER_IP} --user ubuntu --server-ip ${MASTER_IP} --server-user ubuntu

설치 확인

정상적으로 설치가 마무리 되었는지 아래의 명령어로 확인할 수 있습니다.

$ export KUBECONFIG=./kubeconfig

$ kubectl config set-context default
# Context "default" modified.

$ kubectl get node -o wide
# NAME             STATUS   ROLES         ...
# cluster-master   Ready    etcd,master   ...
# cluster-worker   Ready    <none>        ...

댓글남기기