CoreDNS Amazon EKS self-managed 추가 기능 업데이트

CoreDNS Amazon EKS self-managed 추가 기능 업데이트

중요

추가 기능의 self-managed 유형 대신 Amazon EKS 유형의 추가 기능을 클러스터에 추가할 것을 권장합니다. 두 유형의 차이를 잘 모르겠다면 Amazon EKS 추가 기능을 참조하세요. Amazon EKS 추가 기능을 클러스터에 추가하는 방법은 Amazon EKS 추가 기능 생성을 참조하세요. Amazon EKS 추가 기능을 사용할 수 없다면 Containers roadmap GitHub 저장소에 사용할 수 없는 이유에 대한 이슈를 제출할 것을 권장합니다.

시작하기 전에 업그레이드 고려 사항을 검토하세요. 자세한 내용은 중요한 CoreDNS 업그레이드 고려 사항을 참조하세요.

출처: 문서

본문

클러스터에 self-managed 유형의 추가 기능이 설치되어 있는지 확인합니다. my-cluster를 클러스터 이름으로 바꿉니다.

aws eks describe-addon --cluster-name my-cluster --addon-name coredns --query addon.addonVersion --output text

오류 메시지가 반환되면 클러스터에 self-managed 유형의 추가 기능이 설치되어 있는 것입니다. 이 절차의 나머지 단계를 완료하세요. 버전 번호가 반환되면 클러스터에 Amazon EKS 유형의 추가 기능이 설치되어 있는 것입니다. Amazon EKS 유형의 추가 기능을 업데이트하려면 이 절차 대신 CoreDNS Amazon EKS 추가 기능 업데이트의 절차를 사용하세요. 추가 기능 유형 간의 차이를 잘 모르겠다면 Amazon EKS 추가 기능을 참조하세요.

클러스터에 현재 설치된 컨테이너 이미지 버전을 확인합니다.

kubectl describe deployment coredns -n kube-system | grep Image | cut -d ":" -f 3

예시 출력은 다음과 같습니다.

v1.8.7-eksbuild.2

현재 CoreDNS 버전이 v1.5.0 이상이지만 CoreDNS 버전 표에 나열된 버전보다 낮다면 이 단계를 건너뜁니다. 현재 버전이 1.5.0보다 낮다면 CoreDNS용 ConfigMap을 수정해 proxy 추가 기능 대신 forward 추가 기능을 사용해야 합니다.

다음 명령으로 ConfigMap을 엽니다.

kubectl edit configmap coredns -n kube-system

다음 줄에서 proxy를 forward로 바꿉니다. 파일을 저장하고 편집기를 종료합니다.

proxy . /etc/resolv.conf

클러스터를 원래 Kubernetes 1.17 이하에 배포했다면 CoreDNS 매니페스트에서 중단된 줄을 제거해야 할 수 있습니다.

중요

CoreDNS 버전 1.7.0으로 업데이트하기 전에 이 단계를 완료해야 하지만, 이전 버전으로 업데이트하는 경우에도 이 단계를 완료할 것을 권장합니다.

CoreDNS 매니페스트에 그 줄이 있는지 확인합니다.

kubectl get configmap coredns -n kube-system -o jsonpath='{$.data.Corefile}' | grep upstream

출력이 반환되지 않으면 매니페스트에 그 줄이 없는 것이므로 다음 단계로 건너뛰어 CoreDNS를 업데이트할 수 있습니다. 출력이 반환되면 줄을 제거해야 합니다.

다음 명령으로 ConfigMap을 편집하고 파일에서 upstream이라는 단어가 있는 줄을 제거합니다. 파일의 다른 내용은 변경하지 마세요. 줄이 제거되면 변경 사항을 저장합니다.

kubectl edit configmap coredns -n kube-system -o yaml

현재 CoreDNS 이미지 버전을 가져옵니다.

kubectl describe deployment coredns -n kube-system | grep Image

예시 출력은 다음과 같습니다.

602401143452.dkr.ecr.region-code.amazonaws.com/eks/coredns:v1.8.7-eksbuild.2

CoreDNS 1.8.3 이상으로 업데이트한다면 system:coredns Kubernetes clusterrole에 endpointslices 권한을 추가해야 합니다.

kubectl edit clusterrole system:coredns -n kube-system

파일의 rules 섹션에서 기존 권한 줄 아래에 다음 줄을 추가합니다.

[...]
- apiGroups:
  - discovery.k8s.io
  resources:
  - endpointslices
  verbs:
  - list
  - watch
[...]

602401143452와 region-code를 이전 단계에서 반환된 출력의 값으로 바꿔 CoreDNS 추가 기능을 업데이트합니다. v1.11.3-eksbuild.1을 Kubernetes 버전에 대한 latest versions 표에 나열된 CoreDNS 버전으로 바꿉니다.

kubectl set image deployment.apps/coredns -n kube-system  coredns=602401143452.dkr.ecr.region-code.amazonaws.com/eks/coredns:v1.11.3-eksbuild.1

예시 출력은 다음과 같습니다.

deployment.apps/coredns image updated

컨테이너 이미지 버전을 다시 확인해 이전 단계에서 지정한 버전으로 업데이트되었는지 확인합니다.

kubectl describe deployment coredns -n kube-system | grep Image | cut -d ":" -f 3

예시 출력은 다음과 같습니다.

v1.11.3-eksbuild.1

더 알아보기 (Learn more)