

 **協助改進此頁面** 

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

若要為本使用者指南貢獻內容，請點選每個頁面右側面板中的**在 GitHub 上編輯此頁面**連結。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 更新 CoreDNS Amazon EKS 附加元件
<a name="coredns-add-on-update"></a>

更新 Amazon EKS 類型的附加元件。如果您尚未將 Amazon EKS 附加元件新增至叢集，請[進行新增](coredns-add-on-create.md)或參閱 [更新 CoreDNS Amazon EKS 自我管理的附加元件](coredns-add-on-self-managed-update.md)。

開始之前，請檢閱升級考量事項。如需詳細資訊，請參閱 [重要的 CoreDNS 升級考量](managing-coredns.md#coredns-upgrade)。

1. 查看叢集上目前安裝了哪些附加元件版本。使用您的叢集名稱取代 *my-cluster*。

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

   範例輸出如下。

   ```
   v1.10.1-eksbuild.13
   ```

   如果傳回的版本與[最新版本資料表](managing-coredns.md#coredns-versions)中的叢集 Kubernetes 版本相同，則表明您已經在叢集上安裝最新版本，不需要完成此程序的剩餘步驟。若您收到錯誤而非版本編號，則表明叢集上沒有安裝 Amazon EKS 類型的附加元件。您必須先[建立附加元件](coredns-add-on-create.md)，才能使用此程序進行更新。

1. 儲存您目前安裝的附加元件。

   ```
   kubectl get deployment coredns -n kube-system -o yaml > aws-k8s-coredns-old.yaml
   ```

1. 使用 AWS CLI 更新您的附加元件。如果您想要使用 AWS 管理主控台 或 `eksctl` 更新附加元件，請參閱 [更新 Amazon EKS 附加元件](updating-an-add-on.md)。將隨後的命令複製到您的裝置。視需要對命令進行下列修改，然後執行修改後的命令。
   + 使用您叢集的名稱取代 *my-cluster*。
   + 將 *v1.11.3-eksbuild.1* 取代為叢集版本的[最新版本資料表](managing-coredns.md#coredns-versions)中列出的最新版本。
   + `--resolve-conflictsPRESERVE ` 選項會保留附加元件的現有組態值。如果對於附加元件設定，您已設定自訂值，但未使用此選項，Amazon EKS 會以其預設值覆寫您的值。如果您使用此選項，建議您在更新生產叢集上的附加元件之前，測試非生產叢集上的任何欄位和值變更。如果您將此值變更為 `OVERWRITE`，則所有設定都會變更為 Amazon EKS 預設值。如果您已設定任何設定的自訂值，則可能會使用 Amazon EKS 預設值覆寫這些值。如果您將此值變更為 `none`，Amazon EKS 不會變更任何設定的值，但更新可能會失敗。若更新失敗，您會收到錯誤訊息，以協助您解決衝突。
   + 如果您不更新組態設定，請從命令中移除 `--configuration-values '{"replicaCount":3}'`。如果您要更新組態設定，請以您要進行的設定取代 *"replicaCount":3*。在此範例中，CoreDNS 的複本數目設定為 `3`。您指定的值必須對組態結構描述有效。若您不知道組態結構描述，請執行 `aws eks describe-addon-configuration --addon-name coredns --addon-version v1.11.3-eksbuild.1 `，其中請用要查看組態的附加元件版本編號取代 *v1.11.3-eksbuild.1*。結構描述會在輸出中傳回。如果您有任何現有的自訂組態，並且想要全部移除，同時將所有設定的值設定回 Amazon EKS 預設值，請從命令中移除 *"replicaCount":3*，這樣就會得到空白的 `{}`。如需有關 CoreDNS 設定的詳細資訊，請參閱 Kubernetes 文件中的[自訂 DNS 服務](https://kubernetes.io/docs/tasks/administer-cluster/dns-custom-nameservers/)。

     ```
     aws eks update-addon --cluster-name my-cluster --addon-name coredns --addon-version v1.11.3-eksbuild.1 \
         --resolve-conflicts PRESERVE --configuration-values '{"replicaCount":3}'
     ```

     更新動作可能需要幾秒鐘的時間才能完成。

1. 確認附加元件版本已更新。使用您叢集的名稱取代 *my-cluster*。

   ```
   aws eks describe-addon --cluster-name my-cluster --addon-name coredns
   ```

   更新動作可能需要幾秒鐘的時間才能完成。

   範例輸出如下。

   ```
   {
       "addon": {
           "addonName": "coredns",
           "clusterName": "my-cluster",
           "status": "ACTIVE",
           "addonVersion": "v1.11.3-eksbuild.1",
           "health": {
               "issues": []
           },
           "addonArn": "arn:aws:eks:region:111122223333:addon/my-cluster/coredns/d2c34f06-1111-2222-1eb0-24f64ce37fa4",
           "createdAt": "2023-03-01T16:41:32.442000+00:00",
           "modifiedAt": "2023-03-01T18:16:54.332000+00:00",
           "tags": {},
           "configurationValues": "{\"replicaCount\":3}"
       }
   }
   ```