관리 메뉴

피터의 개발이야기

[EKS] Amazon EKS 버전 업그레이드, #1 EKS 클러스터 본문

AWS/EKS

[EKS] Amazon EKS 버전 업그레이드, #1 EKS 클러스터

기록하는 백앤드개발자 2022. 9. 28. 23:31
반응형

 

EKS 업그레이드
 - 1탄: EKS, AddOn
 - 2탄: WorkNode
 - 3탄:  kubectl

 

ㅁ 개요

 ㅇ AWS EKS 1.20의 EOS는 2022.11.1 이며, 이전에 업그레이드 작업을 수행해야한다.

 ㅇ 업데이트를 최소화하면서도 버젼 안정성을 위해 기존 1.20-> 1.21 ->1.22로 업그레이드 진행 하기로 협의하였다.

 ㅇ 업그레이드 과정을 학습하기 위해 테스트로 EKS를 구성하여 업그레이드를 진행하였다.

 

 

Updating an Amazon EKS cluster Kubernetes version - Amazon EKS

Even though Amazon EKS runs a highly available control plane, you might experience minor service interruptions during an update. For example, assume that you attempt to connect to an API server around when it's terminated and replaced by a new API server t

docs.aws.amazon.com

  ㅇ 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 설치 또는 업데이트 - Amazon EKS

Amazon EKS 클러스터 제어 영역과 마이너 버전이 하나 다른 kubectl 버전을 사용해야 합니다. 예를 들어 1.22 kubectl 클라이언트는 Kubernetes 1.21, 1.22, 1.23 클러스터와 함께 작동합니다.

docs.aws.amazon.com

 ㅇ  kubectl 설치 또는 업데이트

 

 

CoreDNS 추가 기능 관리 - Amazon EKS

CoreDNS 버전 1.7.0으로 업그레이드하기 전에 이 작업을 완료해야 하지만 이전 버전으로 업그레이드하는 경우에도 이 단계를 완료하는 것이 좋습니다.

docs.aws.amazon.com

 ㅇ CoreDNS 추가 기능

 

 

kube-proxy 추가 기능 관리 - Amazon EKS

kube-proxy를 업데이트하기 전에 클러스터 및 노드를 새 Kubernetes 마이너 버전으로 업데이트하여 업데이트된 클러스터의 마이너 버전과 동일한 마이너 버전으로 업그레이드합니다.

docs.aws.amazon.com

 ㅇ kube-proxy 추가 기능

 

 

Amazon VPC CNI plugin for Kubernetes 관리 - Amazon EKS

클러스터를 만들 때 배포된 추가 기능의 버전이 권장 버전보다 이전 버전일 수 있습니다. 매니페스트를 사용하여 자체 관리형 추가 기능을 업데이트한 경우 버전에 -eksbuild.1이 포함되지 않습니

docs.aws.amazon.com

 ㅇ Amazon VPC CNI plugin for Kubernetes

 

 

반응형
Comments