1 분 소요

아직 k3s 설치하는 방법에 대해 모르시는 분들은 이전 포스트를 확인하시기 바랍니다.

메모리 최적화

k3s의 기본 설치를 사용하면 500MB의 메모리를 사용합니다. 그런데 오라클 클라우드의 무료 제공(Free tier) 인스턴스는 1GB 라서 우분투에 k3s를 설치하고 나면 1GB 메모리를 모두 사용해서 더이상의 자원이 남지 않게 됩니다. 그래서 메모리 사용량을 줄이기 위해 두가지 방법을 적용합니다.

Cloud controller 비활성화

Cloud controller 를 활성화하는데 필요한 메모리가 대략 200MB 정도 되기 때문에 이를 비활성화 합니다.

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

k3s GC 주기 변경

위의 과정을 통해 초기 메모리 사용량을 줄였더라도 GC를 자주 수행하도록 하지 않으면 결국 메모리 샤용량이 계속 증가합니다. GC주기를 변경하기 위해 아래의 명령어를 통해 k3s 의 시스템 설정에 진입합니다.

$ sudo systemctl edit k3s

환경변수로 GOGC=10 를 추가해서 GC 주기를 짧게 합니다.

[Service]
Environment="GOGC=10"

Block Storage 사용하기

k3s 의 Volume & Storage 레퍼런스 를 확인하면 Longhorn 을 Block Storage 로 사용 가능합니다.

Longhorn 설치하기

아래의 명령을 통해 Longhorn 을 설치할 수 있습니다.

$ kubectl apply -f https://raw.githubusercontent.com/longhorn/longhorn/master/deploy/longhorn.yaml

만약 longhorn-driver-deployer 가 실행되지 않는다면 아래의 커맨드를 실행하세요.

# 새로운 환경변수 설정으로 설치합니다.
$ curl https://raw.githubusercontent.com/longhorn/longhorn/master/deploy/longhorn.yaml | sed -e 's/#- name: KUBELET_ROOT_DIR/- name: KUBELET_ROOT_DIR/g' -e 's$#  value: /var/lib/rancher/k3s/agent/kubelet$  value: /var/lib/kubelet$g' | kubectl apply -f -

Longhorn 제거하기

아래 스텝을 통해 위에서 설치한 deploy 를 제거합니다.

$ kubectl create -f https://raw.githubusercontent.com/longhorn/longhorn/master/uninstall/uninstall.yaml

$ kubectl get job/longhorn-uninstall -w
NAME                 COMPLETIONS   DURATION   AGE
longhorn-uninstall   0/1           3s         3s
longhorn-uninstall   1/1           20s        20s
^C

$ kubectl delete -f https://raw.githubusercontent.com/longhorn/longhorn/master/deploy/longhorn.yaml
$ kubectl delete -f https://raw.githubusercontent.com/longhorn/longhorn/master/uninstall/uninstall.yaml

자동 업데이트 설정하기

Rancher사의 system-upgrade-controller 를 통해 K3s 클러스터를 관리할 수 있습니다. 일정에 대해 설정이 가능합니다.

$ kubectl apply -f https://github.com/rancher/system-upgrade-controller/releases/download/v0.6.2/system-upgrade-controller.yaml

namespace/system-upgrade created
serviceaccount/system-upgrade created
clusterrolebinding.rbac.authorization.k8s.io/system-upgrade created
configmap/default-controller-env created
deployment.apps/system-upgrade-controller created

댓글남기기