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