오라클 클라우드에 쿠버네티스(k3s) 설치
인스턴스 준비
SSH 키 생성
추후 컴퓨트 인스턴스에 접속하기 위한 SSH 키 페어를 준비해둡니다. 이미 있을 경우 공개키를 준비해두고 없을 경우 이 링크를 참고해서 생성합니다.
컴퓨트 인스턴스 생성
컴퓨트 메뉴 진입
- Compute 선택
- Instances 에서
Create Instance
선택- Free tier 로 2개를 제공하고 있으므로 쿠버네티스 노드를 마스터와 워커 한개씩 생성
컴퓨트 인스턴스 초기 설정
- Image 로 Ubuntu 를 선택하고 OS 버전을 18.04로 선택
Create
선택해서 인스턴스 생성 시작
컴퓨터 인스턴스 초기화
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
아래와 같이 설정되도록 규칙을 추가합니다.
💡 여기서는 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> ...
댓글남기기