EKS 업그레이드
- 1탄: EKS, AddOn
- 2탄: WorkNode
- 3탄: kubectl
ㅁ 개요
ㅇ AWS EKS 1.20의 EOS는 2022.11.1 이며, 이전에 업그레이드 작업을 수행해야한다.
ㅇ 업데이트를 최소화하면서도 버젼 안정성을 위해 기존 1.20-> 1.21 ->1.22로 업그레이드 진행 하기로 협의하였다.
ㅇ 업그레이드 과정을 학습하기 위해 테스트로 EKS를 구성하여 업그레이드를 진행하였다.
ㅇ EKS를 업그레이드를 위한 메인 참고서이다.
ㅁ AWS 권고 이메일 내용
안녕하세요,
Amazon EKS는 쿠버네티스 버전 1.20을 더 이상 사용하지 않으며, 이 버전은 2022년 11월 1일부터 더 이상 지원되지 않습니다. 2022년 11월 1일부터 더 이상 새 버전 1.20 클러스터를 생성할 수 없으며, 쿠버네티스 버전 1.20을 실행하는 모든 EKS 클러스터는 사용 가능한 최신 플랫폼 버전의 쿠버네티스 (버전 1.21) 로 업데이트 될 예정입니다. 현재 쿠버네티스 버전 1.20으로 실행 중인 하나 이상의 EKS 클러스터가 있어 이 메시지를 보내드립니다. 다음은 AP-NORTHEAST-2 리전에서 영향을 받는 클러스터의 목록입니다. arn:aws:eks:ap-northeast-2:942525724688:cluster/k8s-demo arn:aws:eks:ap-northeast-2:942525724688:cluster/ah01122_EKS_CLUSTER 1.20 클러스터를 쿠버네티스 버전 1.21 이상으로 업데이트하는 것을 권고드립니다. 클러스터를 지원되는 최신 쿠버네티스 버전 (1.23) 으로 업데이트하여 버전 업그레이드를 수행해야 하는 빈도를 최소화할 수 있습니다. 쿠버네티스 버전 지원에 대한 자세한 내용은 Amazon EKS 서비스 설명서 [1] 를 참조하시기바랍니다. 클러스터를 업데이트하는 방법에 대한 지침은 Amazon EKS 서비스 설명서 [2] 를 참조하시기바랍니다. 궁금한 점이 있으면 AWS Support [3] 에 문의하시기바랍니다. [1] https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html [2] https://docs.aws.amazon.com/eks/latest/userguide/update-cluster.html [3] https://aws.amazon.com/support |
ㅁ EKS 클러스터 업그레이드
ㅇ 지금 업데이트를 클릭한다.
ㅇ eksctl, aws cli 명령어를 통해서도 업그레이드가 가능하다.
ㅇ 업데이트는 일단 진행하면 취소할 수는 없다.
ㅇ 업데이트를 클릭한다.
ㅇ 상태가 업데이트 중으로 변경되었다.
ㅇ 클러스터의 상세 화면이다.
ㅇ 업데이트에 관한 경고를 확인할 수 있다.
[ec2-user@ip-172-31-43-214 ~]$ kubectl version --short | grep Server
Server Version: v1.22.13-eks-15b7512
ㅇ AWS Console에서의 업데이트 현황은 빠르지 않았다.
ㅇ 보다 빠른 확인을 위해서 kubectl 명령어를 사용하여 버전 정보를 확인하였다.
ㅇ 정확한 시간은 명확하지 않지만 2~3분 후 웹에서도 활성 상태로 바뀌었다.(계속 새로고침 하고 있지 않았음)
ㅇ 여기까지가 EKS 클러스터 업그레이드 작업이다.
ㅇ 이후에는 클러스터의 추가기능(add-on)을 업데이트할 것이다.
ㅁ 추가기능(add-on) 생성
ㅇ Amazon VPC CNI plugin for Kubernetes, CoreDNS 및 kube-proxy 추가 기능을 업데이트해야 한다.
ㅇ 테스트로 생성된 EKS에는 추가기능이 존재하지 않아서 일단 운영과 동일한 버젼으로 생성을 수행하였다.
ㅇ VPC CNI 생성
ㅇ kube-proxy도 생성하였다.
ㅇ 같은 방법으로 coredns도 생성하였다.
ㅇ 추가기능의 생성이 완료되었다.
ㅇ 추가기능의 업데이트 테스트도 진행해 보았다.
ㅁ EKS 버젼 별 추가기능 호환 버젼확인
ㅇ 우선 업그레이드를 하기 전에 위 그림처러 EKS 버젼에 맞는 추가기능 버젼을 알아야한다.
ㅇ 추가기능 별로 알맞는 버젼을 확인할 수 있는 링크를 정리하였다.
ㅇ CoreDNS 추가 기능 관리:
https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/managing-coredns.html
ㅇ kube-proxy 추가 기능 관리 :
https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/managing-kube-proxy.html
ㅇ Amazon VPC CNI plugin for Kubernetes 관리 :
https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/managing-vpc-cni.html
ㅁ coredns 업그레이드
ㅇ EKS 1.22와 맞는 v1.8.7-eksbuild.1로 업데이트를 진행하였다.
# 업그레이드 버젼확인
[ec2-user@ip-172-31-43-214 ~]$ eksctl get addon --name coredns --cluster k8s-peterica
2022-09-27 01:19:32 [ℹ] Kubernetes version "1.22" in use by cluster "k8s-peterica"
2022-09-27 01:19:33 [ℹ] to see issues for an addon run `eksctl get addon --name <addon-name> --cluster <cluster-name>`
NAME VERSION STATUS ISSUES IAMROLE UPDATE AVAILABLE
coredns v1.8.7-eksbuild.1 ACTIVE 0
ㅇ 웹에서는 역시나 딜레이가 있어서 CLI 명령어를 통해 확인하는 것이 가장 빨랐다.
ㅁ kube-proxy 업그레이드
ㅇ 업그레이드 목표 버젼은 1.22.11-eksbuild.2 이다.
$ eksctl update addon \
--name kube-proxy \
--version 1.22.11-eksbuild.2 \
--cluster k8s-peterica \
--force
ㅇ 이번에는 AWS Console이 아닌 eksctl 로 실행해 보았다.
ㅇ 1분정도 소요가 되었다.
ㅇ eksctl get addon --name kube-proxy --cluster k8s-peterica 명령어로 kube-proxy 버젼을 확인하였다.
ㅁ Amazon VPC CNI plugin 업그레이드
ㅇ 업그레이드 목표 버젼은 1.11.3-eksbuild.1 이다.
$ eksctl update addon \
--name vpc-cni \
--version 1.11.3-eksbuild.1 \
--cluster k8s-peterica \
--force
2022-09-27 01:33:21 [ℹ] Kubernetes version "1.22" in use by cluster "k8s-peterica"
2022-09-27 01:33:21 [ℹ] new version provided v1.11.3-eksbuild.1
2022-09-27 01:33:21 [ℹ] updating addon
Error: failed to update addon "vpc-cni": operation error EKS: UpdateAddon, https response error StatusCode: 400, RequestID: dda080a8-806e-4a89-8a38-3915aa9ed9a1, InvalidParameterException: Updating VPC-CNI can only go up or down 1 minor version at a time
ㅇ 문제가 발생하였다. Updating VPC-CNI can only go up or down 1 minor version at a time
ㅇ 한번에 한버젼씩 업그레이드가 가능하여 순차적으로 버젼 업그레이드를 진행하였다.
$ eksctl get addon --name vpc-cni --cluster k8s-peterica
2022-09-27 01:35:55 [ℹ] Kubernetes version "1.22" in use by cluster "k8s-peterica"
2022-09-27 01:35:55 [ℹ] to see issues for an addon run `eksctl get addon --name <addon-name> --cluster <cluster-name>`
NAME VERSION STATUS ISSUES IAMROLE UPDATE AVAILABLE
vpc-cni v1.9.1-eksbuild.1 ACTIVE 0 v1.11.4-eksbuild.1,v1.11.3-eksbuild.1,v1.11.2-eksbuild.1,v1.11.0-eksbuild.1,v1.10.3-eksbuild.1,v1.10.2-eksbuild.1,v1.10.1-eksbuild.1,v1.9.3-eksbuild.1
[ec2-user@ip-172-31-43-214 ~]$ eksctl update addon \
> --name vpc-cni \
> --version v1.9.3-eksbuild.1 \
> --cluster k8s-peterica \
> --force
2022-09-27 01:39:05 [ℹ] Kubernetes version "1.22" in use by cluster "k8s-peterica"
2022-09-27 01:39:06 [ℹ] new version provided v1.9.3-eksbuild.1
2022-09-27 01:39:06 [ℹ] updating addon
2022-09-27 01:41:03 [ℹ] addon "vpc-cni" active
ㅇ 한단계씩 업그레이드 시 문제는 없었다.
ㅇ 문제는 몇개가 더 남았다는 것이다.
ㅇ v1.11.3-eksbuild.1, v1.11.2-eksbuild.1, v1.11.0-eksbuild.1,
ㅇ v1.10.3-eksbuild.1, v1.10.2-eksbuild.1, v1.10.1-eksbuild.1
ㅇ 업그레이드가 진행될 때에 kube-system의 파드들이 교체되는 것을 확인 할 수 있다.
ㅁ 정리
ㅇ 지금까지 EKS 클러스터와 추가기능 업그레이드에 대해서 정리하였다.
ㅇ AWS에는 참조할 수 있는 많은 튜토리얼들이 잘되어 있어서 설명을 잘 따라하여 문제를 쉽게 해결할 수 있었다.
ㅇ 여담으로 늘 느끼는 것이지만, 너무 잘되어 있고 좋은데, 사실 너무 많아서 찾기 힘든 경우도 많다.
ㅇ 예전엔 한곳에 있었는데, 설명이 세분화된 경우 또 다시 힌트를 찾아 헤매야 한다.
ㅇ 다음 글에서는 Worknode의 업그레이드 방법에 대해서 알아보겠다.
ㅁ 함께 보면 좋은 사이트
ㅇ kubectl 설치 또는 업데이트
ㅇ CoreDNS 추가 기능
ㅇ kube-proxy 추가 기능
ㅇ Amazon VPC CNI plugin for Kubernetes
'[AWS-RDP] > EKS' 카테고리의 다른 글
[중요2][EKS] Amazon EKS 버전 업그레이드, #3 kubectl 설치 또는 업데이트 (69) | 2023.12.13 |
---|---|
[중요2][EKS] Amazon EKS 버전 업그레이드, #2 WorkNode (71) | 2023.12.13 |
[중요] Amazon EKS 관리형 추가 기능을 생성하거나 업데이트할 때 구성 충돌을 방지하려면 어떻게 해야 합니까? (66) | 2023.12.12 |
[참고] Amazon VPC CNI plugin for Kubernetes Amazon EKS 추가 기능을 사용한 작업!! (56) | 2023.12.12 |
[참고] Provisioning AWS EKS with Terraform !! (38) | 2023.12.11 |
[EKS] kubernetes pods 에서 curl 테스트 해보기!! (0) | 2023.09.07 |
댓글