[Home-K8S] #22 FluxCD 계층과 분리 / 다중 클러스터 리소스 공유와 설정 분리
FluxCD - yaml 앞서 fluxcd 를 이용해서 helm chart 를 구성했습니다. 그 외에 일반적인 yaml
k8s는 4개월 마다 새 릴리즈가 나옵니다. https://kubernetes.io/ko/releases/
제가 홈랩에 설치되어있는 k8s 버전은 1.31.7 버전입니다.
저는 홈랩도 그렇고 게임용 데스크탑도 그렇고 포멧을 자주해서 업그레이드를 한 적은 없고 항상 재설치를 했었습니다.
현재 설치된 1.31 버전이 25-10-28에 지원을 종료한다고 해서 업그레이드를 진행해보려고 합니다. (현재 날짜 25-07-05)
사실 개인용 k8s라서 업그레이드할 필요는 없고 그냥 살아도 되지만 OS를 Talos Linux 로 변경하려고 하는데, 그 전에 업그레이드 한번 해보려고 합니다.

k8s의 패키지 저장소가 apt 와 yum에 없고, pkgs에만 있습니다.
그래서 설치할 때도 pkgs의 패키지 저장소를 보고 있습니다.
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.31/deb/Release.key |
sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.31/deb/ /' |
sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt update
저는 flannel 과 nginx 둘 다 이미 최신 버전이라 넘어가겠습니다.
업그레이드 전에 혹시 모르니까 etcd를 백업합니다.
etcdctl로 etcd의 endpoint로 접근해서 백업을 합니다.
sudo ETCDCTL_API=3 etcdctl snapshot save /root/etcd-$(date +%F).db \
--endpoints=https://127.0.0.1:2379 \
--cacert=/etc/kubernetes/pki/etcd/ca.crt \
--cert=/etc/kubernetes/pki/etcd/server.crt \
--key=/etc/kubernetes/pki/etcd/server.keysudo snap remove etcd
sudo apt-get install -y etcd-client
마스터 플레인의 kubeadm 부터 업그레이드를 진행합니다.
kubelet을 나중에 업그레이드 합니다.
# 패키지 홀드 해제 & repo 설정
sudo apt-mark unhold kubelet kubeadm kubectl
sudo sed -i 's/v1.31/v1.32/' /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
# 패키지 변경 및 설치 가능한 패키지 확인
sudo apt-cache policy kubeadm
# kubeadm 설치
sudo apt-get install -y kubeadm=1.32.6-1.1
# 업그레이드 확인
sudo kubeadm upgrade plan
# 업그레이드 적용
sudo kubeadm upgrade apply v1.32.6
# kubelet·kubectl 설치 후 재시작
sudo apt-get install -y kubelet=1.32.6-1.1 kubectl=1.32.6-1.1
sudo systemctl daemon-reload && sudo systemctl restart kubelet
# 패키지 홀
sudo apt-mark hold kubelet kubeadm kubectl한 5분 정도 걸린 것 같습니다.

워커 노드도 kubeadm 부터 업그레이드 진행합니다. 다만 master와 다른 명령어가 쓰입니다.
sudo apt-mark unhold kubelet kubeadm
sudo apt-get install -y kubeadm=1.32.6-00
# 노드 업그레이드 ---------------------------------------
sudo kubeadm upgrade node
# kubelet 업그레이드 후 재시작 --------------------------------------
sudo apt-get install -y kubelet=1.32.6-00
sudo systemctl restart kubelet
sudo apt-mark hold kubelet kubeadmkubeadm upgrade 실행 중에 업그레이드가 실패하고 롤백하지 않으면 다시 실행하면 됩니다.
홈랩이라 노드가 1개씩 밖에 없어서 진행했습니다. 마스터가 여러 개여서 일 때는 진행을 또 다르게 해야 합니다.
etcd는 아무 컨트롤 플레인에서 하나만 뜨면 되지만, endpoint를 3개를 전부 입력해도 됩니다.
Master Node는 1개만 Master Node 업그레이드 하듯이 업그레이드를 진행하고, 다른 Master Node는 워커 노드 업그레이드 하듯이 kubeadm upgrade node 하시면 됩니다.
Comments