Kubernetes/version upgrade

Amazon EKS, 네트워킹 추가 기능 upgrade

babbeolicoding 2023. 6. 7. 20:00

1. coredns upgrade

#백업
kubectl get deployment coredns -n kube-system -o yaml > aws-k8s-coredns-old.yaml
=> 해당 백업파일을 apply 시키면 원복이 가능하다.

#업그레이드 방법
kubectl set image deployment.apps/coredns -n kube-system  coredns=602401143452.dkr.ecr.{region}.amazonaws.com/eks/coredns:{version}
=> 같은 방법이지만 edit deployment에서 image 부분만 바꿔도 업그레이드 가능하다.

#버전 확인
kubectl describe deployment coredns -n kube-system | grep Image | cut -d ":" -f 3

 

2. cni-driver upgrade

#백업
kubectl get daemonset aws-node -n kube-system -o yaml > aws-k8s-cni-old.yaml

#원하는 버전 다운로드
curl -O https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/v1.12.6/config/master/aws-k8s-cni.yaml

#버전 적용
kubectl apply -f aws-k8s-cni.yaml
=> cni-driver는 daemonset 뿐만 아니라 ClusterRole,ClusterRoleBinding, ServiceAccount 등도
업데이트가 필요하기 때문에 원하는 버전을 받아서 한방에 apply 하는게 좋다.

※추가사항
위의 가이드대로 파일을 내려 받고 apply하면 ClusterRole, daemonset, ServiceAccount 등이 전부 바뀌지만
경험상 daemonset만 바꿔도 운영이 가능하긴 했다.
그러므로 버전을 업그레이드 하다가 오류가 나는 경우 받아둔 백업본으로 apply를 하면
긴급조치는 가능하다.

#버전 확인
kubectl describe daemonset aws-node --namespace kube-system | grep amazon-k8s-cni: | cut -d : -f 3

 

3. kube-proxy upgrade

#백업
kubectl get daemonset kube-proxy -n kube-system -o yaml > aws-k8s-kube-proxy-old.yaml
=> 해당 백업파일을 apply 시키면 원복이 가능하다.

#이미지 적용
kubectl set image daemonset.apps/kube-proxy -n kube-system kube-proxy=602401143452.dkr.ecr.{region}.amazonaws.com/eks/kube-proxy:{version}
=> 같은 방법으로 edit daemonset으로 들어가서 이미지만 수정해도 업그레이드 가능하다.

#이미지 버전 확인
kubectl describe daemonset kube-proxy -n kube-system | grep Image | cut -d ":" -f 3

 

4. EKS upgrade(eksctl 사용)

eksctl upgrade cluster --name {cluster_name} --version {version} --approve

 

5. Node upgrade(eksctl 사용)

eksctl upgrade nodegroup \
  --name={node_group_name} \
  --cluster={cluster_name} \
  --region={region} \
  --kubernetes-version={version}