CoreDNS Amazon EKS 자체 관리형 추가 기능 업데이트 - Amazon EKS

CoreDNS Amazon EKS 자체 관리형 추가 기능 업데이트

중요

자체 관리형 추가 기능 유형을 사용하는 대신 클러스터에 Amazon EKS 유형의 추가 기능을 추가하는 것이 좋습니다. 유형 간의 차이를 잘 모르는 경우 Amazon EKS 추가 기능 부분을 참조하세요. Amazon EKS 추가 기능을 클러스터에 추가하는 방법에 대한 자세한 내용은 Amazon EKS 추가 기능 생성 섹션을 참조하세요. Amazon EKS 추가 기능을 사용할 수 없는 경우, 사용할 수 없는 이유에 대한 문제를 컨테이너 로드맵 GitHub 리포지토리에 제출하는 것이 좋습니다.

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

  1. 클러스터에 자체 관리형 추가 기능 유형이 설치되어 있는지 확인하세요. my-cluster를 해당 클러스터의 이름으로 바꿉니다.

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

    오류 메시지가 반환되면 자체 관리형 추가 기능 유형이 클러스터에 설치됩니다. 이 절차의 나머지 단계를 완료하여 설치하세요. 버전 번호가 반환되는 경우 Amazon EKS 유형의 추가 기능이 클러스터에 설치됩니다. Amazon EKS 유형의 추가 기능을 업데이트하려면 이 절차를 사용하는 대신 CoreDNS Amazon EKS 추가 기능 업데이트에 있는 절차를 사용하세요. 추가 기능 유형 간의 차이를 잘 모르는 경우 Amazon EKS 추가 기능 부분을 참조하세요.

  2. 클러스터에 현재 설치된 컨테이너 이미지의 버전을 확인하세요.

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

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

    v1.8.7-eksbuild.2
  3. 현재 CoreDNS 버전이 v1.5.0 이상이지만 CoreDNS 버전 표에서 나열된 버전보다 낮다면 이 단계를 건너뜁니다. 현재 버전이 1.5.0 버전보다 낮은 경우 프록시 추가 기능 대신 전달 추가 기능을 사용하도록 CoreDNS의 ConfigMap을 수정해야 합니다.

    1. 다음 명령을 통해 ConfigMap을 엽니다.

      kubectl edit configmap coredns -n kube-system
    2. 다음 줄의 proxyforward로 바꿉니다. 파일을 저장하고 편집기를 종료합니다.

      proxy . /etc/resolv.conf
  4. 원래 Kubernetes 1.17 또는 이전 버전에서 클러스터를 배포한 경우 CoreDNS 매니페스트에서 더는 사용되지 않는 줄을 제거해야 할 수 있습니다.

    중요

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

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

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

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

    2. 다음 명령을 사용하여 ConfigMap을 편집하고 파일에서 upstream 단어가 포함된 줄을 제거합니다. 파일에서 다른 것을 변경하지 마세요. 이 줄을 제거한 후 변경 사항을 저장하세요.

      kubectl edit configmap coredns -n kube-system -o yaml
  5. 현재 CoreDNS 이미지 버전을 검색합니다.

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

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

    602401143452.dkr.ecr.region-code.amazonaws.com/eks/coredns:v1.8.7-eksbuild.2
  6. CoreDNS 1.8.3 이상으로 업데이트하는 경우 system:coredns Kubernetes clusterroleendpointslices 권한을 추가해야 합니다.

    kubectl edit clusterrole system:coredns -n kube-system

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

    [...] - apiGroups: - discovery.k8s.io resources: - endpointslices verbs: - list - watch [...]
  7. 602401143452region-code를 이전 단계에서 반환된 출력의 값으로 대체하여 CoreDNS 애드온을 업데이트합니다. v1.11.3-eksbuild.1을 사용 중인 Kubernetes 버전의 최신 버전 표에 나와 있는 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
  8. 컨테이너 이미지 버전을 다시 확인하여 이전 단계에서 지정한 버전으로 업데이트되었는지 확인합니다.

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

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

    v1.11.3-eksbuild.1