본문 바로가기
Kubernetes/k8s_lab

[k8s_lab-0] K8s Upgrade (Containerd, Calico..)

by lumination 2026. 6. 8.

K8s 업그레이드

# 버전 확인
kubectl get nodes
kubeadm version


# 저장소 변경 1.31 -> 1.32
sudo mkdir -p /etc/apt/keyrings

curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.32/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.32/deb/ /' \
| sudo tee /etc/apt/sources.list.d/kubernetes.list

sudo apt update


# 후보 보기
apt-cache madison kubeadm


# 1-1) Control Plane 업그레이드
sudo apt-mark unhold kubeadm
sudo apt-get install -y kubeadm=1.32.*

# 1-2) 업그레이드 계획 확인 및 실행
sudo kubeadm upgrade plan
sudo kubeadm upgrade apply v1.32.14

# 1-3) kubelet / kubectl 업그레이드
sudo apt-mark unhold kubelet kubectl
sudo apt-get install -y kubelet=1.32.* kubectl=1.32.*
sudo systemctl daemon-reload
sudo systemctl restart kubelet
sudo apt-mark hold kubeadm kubelet kubectl
# kubelet 재기동 후에 업그레이드 버전으로 조회 가능

# 1-4) 버전 확인
kubectl get nodes

# 2-1) Worker node 업그레이드를 위한 drain
kubectl drain worker1 \
  --ignore-daemonsets \
  --delete-emptydir-data

# 2-2) 업그레이드
sudo apt-mark unhold kubeadm
sudo apt-get install -y kubeadm=1.32.*

# /var/lib/kubelet/config.yaml 관련 설정 업데이트
# kubeadm이 관리하는 노드 메타데이터 갱신
sudo kubeadm upgrade node 

sudo apt-mark unhold kubelet kubectl
sudo apt-get install -y kubelet=1.32.* kubectl=1.32.*
sudo systemctl daemon-reload
sudo systemctl restart kubelet
sudo apt-mark hold kubeadm kubelet kubectl

 

Containerd 업그레이드

Kubernetes ↔ containerd 권장 조합

Kubernetes containerd
1.28 1.6.x, 1.7.x
1.29 1.6.x, 1.7.x
1.30 1.6.28+, 1.7.x
1.31 1.7.x 권장
1.32 1.7.x 권장
1.33 1.7.x 또는 2.x
# Containerd 버전 확인
kubectl get node -o wide
containerd --version
ctr version

# 정책 확인
$ apt-cache policy containerd
containerd:
  Installed: (none)
  Candidate: 1.6.12-0ubuntu1~22.04.1
  Version table:
     1.6.12-0ubuntu1~22.04.1 500
        500 http://mirror.toastmaker.net/nhn/ubuntu jammy-updates/main amd64 Packages
     1.5.9-0ubuntu3.1 500
        500 http://mirror.toastmaker.net/nhn/ubuntu jammy-security/main amd64 Packages
     1.5.9-0ubuntu3 500
        500 http://mirror.toastmaker.net/nhn/ubuntu jammy/main amd64 Packages
irteamsu@neca-platkuber-wa802:~$


# 패키지 목ㄹ록 확인
apt-cache madison containerd.io

# 설치
sudo apt-get update
sudo apt-get install -y containerd.io
# 특정 버전
sudo apt-get install -y containerd.io=1.7.28-1

 

Calico 업그레이드

# IPPool 및 블록 사이즈
kubectl get ippool -o yaml
kubectl get ippools.crd.projectcalico.org -o yaml

# Service CIDR
kubectl cluster-info dump | grep service-cluster-ip-range

# 노드별 Pod 제한
kubectl get nodes -o custom-columns=NODE:.metadata.name,PODS:.status.allocatable.pods
wa801   110
wa802   110
wb801   110

# Calico 노드당 블록 현황
kubectl get blockaffinities.crd.projectcalico.org
NAME                                   AGE
neca-platkuber-wa801-172-19-5-64-26    27d
neca-platkuber-wa802-172-19-251-0-26   27d
neca-platkuber-wb801-172-19-18-64-26   27d

 

Pod 네트워크 (172.19.0.0/16)

  • cidr: 172.19.0.0/16
  • blockSize: 26

전체 Pod IP 대역 172.19.0.0 ~ 172.19.255.255

  • 172.19.0.0/26, 172.19.0.64/26, 172.19.0.128/26, 172.19.0.192/26, 172.19.1.0/26... 처럼 잘게 쪼개서 노드에 배정한다는 뜻

Calico

# Calico 설치 방식 체크
kubectl get pods -A | grep calico
kubectl get installation.operator.tigera.io
kubectl get ds -A | grep calico
kubectl version

# 1) manifest 케이스
kubectl describe ds calico-node -n kube-system | grep Image:
    Image:      docker.io/calico/cni:v3.30.3
    Image:      docker.io/calico/cni:v3.30.3
    Image:      docker.io/calico/node:v3.30.3
    Image:      docker.io/calico/node:v3.30.3
    
    
kubectl get ds calico-node -n kube-system \
-o jsonpath='{.spec.template.spec.containers[*].image}'
    docker.io/calico/node:v3.27.4
    docker.io/calico/cni:v3.27.4

# 백업
kubectl get ippools.crd.projectcalico.org -o yaml > ippools.yaml
kubectl get felixconfigurations.crd.projectcalico.org -o yaml > felix.yaml
kubectl get bgppeers.crd.projectcalico.org -o yaml > bgppeers.yaml

# 업그레이드 
curl -O https://raw.githubusercontent.com/projectcalico/calico/v3.30.3/manifests/calico.yaml
kubectl apply -f calico.yaml

# 진행 상태
kubectl rollout status ds/calico-node -n kube-system
kubectl rollout status deploy/calico-kube-controllers -n kube-system
watch kubectl get pods -n kube-system | grep calico

 

'Kubernetes > k8s_lab' 카테고리의 다른 글

[k8s_lab-2] ArgoCD  (0) 2026.06.08
[k8s_lab-1] K8s 클러스터 설치  (0) 2026.05.29