SAS Viya 4 의 LTS 릴리스는 지원되는 업데이트 경로가 정해져 있다. 예를 들어 LTS 2024.03 에서 LTS 2025.03 으로 바로 올릴 수 없고 LTS 2024.09 를 거쳐야 한다.
LTS 2024.03 -> LTS 2024.09 -> LTS 2025.03
각 단계마다 Deployment Notes 와 What's New 의 필수 조치 사항을 먼저 읽는다. 릴리스마다 이미지 경로 변경, 신규 설정 항목, 사전 작업이 들어 있다.
Viya 릴리스마다 지원 Kubernetes 버전 범위가 다르고, 새 릴리스에서 이전 버전이 빠지기도 한다. 그래서 순서가 중요하다.
1) 현재 Viya 를 다음 LTS 로 업그레이드 (현재 K8s 버전이 지원 범위 안이면)
2) Kubernetes 를 다음 Viya 가 요구하는 버전으로 업그레이드
3) Viya 를 그다음 LTS 로 업그레이드
Kubernetes 와 Viya 를 동시에 올리지 않는다. 문제가 생겼을 때 원인을 가를 수 없다.
각 릴리스의 정확한 지원 범위는 해당 릴리스의 시스템 요구사항 문서에서 확인한다 (확인 필요). 대화 기록에 남은 값은 특정 시점 기준이라 그대로 인용하지 않는다.
site-config 커스터마이징이 새 릴리스의 예제와 어긋나지 않는지ETCDCTL_API=3 etcdctl snapshot save /root/etcd-snapshot.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.key
컨트롤 플레인부터 올리고 워커 노드를 하나씩 처리한다. 한 번에 한 마이너 버전씩만 올릴 수 있다.
# 컨트롤 플레인
dnf install -y kubeadm-<version> --disableexcludes=kubernetes
kubeadm upgrade plan
kubeadm upgrade apply v<version>
dnf install -y kubelet-<version> kubectl-<version> --disableexcludes=kubernetes
systemctl daemon-reexec
systemctl restart kubelet
# 워커 노드
kubectl drain <node> --ignore-daemonsets --delete-emptydir-data
dnf install -y kubeadm-<version> --disableexcludes=kubernetes
kubeadm upgrade node
dnf install -y kubelet-<version> kubectl-<version> --disableexcludes=kubernetes
systemctl daemon-reexec
systemctl restart kubelet
kubectl uncordon <node>
kubectl get nodes
kubectl get pods -A
CNI 플러그인도 대상 Kubernetes 버전을 지원하는 릴리스로 함께 올려야 한다. Calico 는 매니페스트를 다시 적용하는 롤링 업데이트 방식이다.
curl -O https://raw.githubusercontent.com/projectcalico/calico/<version>/manifests/calico.yaml
kubectl apply -f calico.yaml
kubectl get pods -n kube-system | grep calico
Calico 와 Kubernetes 의 호환 버전은 Calico 릴리스 노트에서 확인한다 (확인 필요). CNI 업그레이드 중에는 일시적인 네트워크 단절이 생길 수 있으므로 Viya 워크로드가 없는 시간대에 진행한다.
Viya 업그레이드는 새 배포 자산으로 kustomize build 를 다시 해 적용하거나, SAS Deployment Operator 를 쓰는 경우 CR 을 갱신해 진행한다.
각 단계가 끝날 때마다 다음을 확인하고 다음 단계로 넘어간다.