判斷您可以自訂 Amazon EKS 附加元件的欄位 - Amazon EKS

協助改善此頁面

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

若要提供此使用者指南,請選擇位於每個頁面右窗格中的 GitHub 上編輯此頁面連結。

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

判斷您可以自訂 Amazon EKS 附加元件的欄位

使用標準的最佳實務組態將 Amazon EKS 附加元件安裝到您的叢集。如需將 Amazon EKS 附加元件新增至叢集的詳細資訊,請參閱 Amazon EKS 附加元件

您可能想要自訂 Amazon EKS 附加元件的組態,以啟用進階功能。Amazon EKS 使用 Kubernetes 伺服器端套用功能來啟用 Amazon EKS 管理附加元件,而不會覆寫非 Amazon EKS 管理的設定組態。如需詳細資訊,請參閱 Kubernetes 文件中的伺服器端套用。為了達到此目的,Amazon EKS 會為其安裝的每個附加元件管理一組數量最少的欄位。您可以修改不是由 Amazon EKS 管理的所有欄位,或另一個 Kubernetes 控制平面程序,例如 kube-controller-manager,不會發生問題。

重要

修改 Amazon EKS 管理的欄位會阻止 Amazon EKS 管理附加元件,並且可能會導致在更新附加元件時覆寫您的變更。

欄位管理語法

檢視 Kubernetes 物件的詳細資訊時,輸出中會傳回受管和未受管的欄位。受管欄位可以是以下類型之一:

  • 全受管:欄位的所有索引鍵均由 Amazon EKS 管理。修改任何值皆會導致衝突。

  • 部分受管:欄位的某些索引鍵由 Amazon EKS 管理。只有對明確由 Amazon EKS 管理的索引鍵進行修改才會造成衝突。

這兩種類型的欄位均使用 manager: eks 標記。

每個索引鍵可以是 . 表示欄位本身,其一律會映射到一個空集,或映射至表示子欄位或項目的字串。欄位管理的輸出包含下列類型的宣告:

  • f:name ,其中名稱是清單中欄位的名稱。

  • k:keys ,其中索引鍵是清單項目欄位的映射。

  • v:value ,其中 是清單項目的確切 JSON 格式值。

  • i:index ,其中索引是清單中項目的位置。

CoreDNS 附加元件的下列輸出部分會說明先前的宣告:

  • 全受管欄位:如果受管欄位具有指定的 f: (欄位),但沒有 k: (索引鍵),則會管理整個欄位。修改此欄位中的任何值皆會導致衝突。

    在下列輸出中,您可以看到名為 coredns 的容器由 eks 管理。argsimageimagePullPolicy 子欄位也由 eks 管理。修改這些欄位中的任何值皆會導致衝突。

    [...]
    f:containers:
      k:{"name":"coredns"}:
      .: {}
      f:args: {}
      f:image: {}
      f:imagePullPolicy: {}
    [...]
    manager: eks
    [...]
  • 部分受管欄位:如果受管索引鍵具有指定的值,則會針對該欄位管理宣告的索引鍵。修改指定的索引鍵會導致衝突。

    在下列輸出中,您可以看到 eks 管理 config-volume 和使用 name 索引鍵設定的 tmp 磁碟區。

    [...]
    f:volumes:
      k:{"name":"config-volume"}:
        .: {}
        f:configMap:
          f:items: {}
          f:name: {}
        f:name: {}
      k:{"name":"tmp"}:
        .: {}
        f:name: {}
    [...]
    manager: eks
    [...]
  • 將索引鍵新增至部分受管欄位:如果只管理特定鍵值,您可以安全地將其他索引鍵 (例如引數) 新增至欄位,而不會造成衝突。如果您新增其他金鑰,請確定 欄位未先受管。新增或修改受管的任何值會導致衝突。

    在下列輸出中,您可以看到 name 索引鍵和 name 欄位皆為受管項目。新增或修改任何容器名稱會導致與此受管索引鍵發生衝突。

    [...] f:containers: k:{"name":"coredns"}: [...] f:name: {} [...] manager: eks [...]

程序

您可以使用 kubectl,查看哪些欄位由 Amazon EKS 管理,適用於任何 Amazon EKS 附加元件。

您可以修改不是由 Amazon EKS 管理的所有欄位,或另一個 Kubernetes 控制平面程序,例如 kube-controller-manager,不會發生問題。

  1. 判定要檢查的附加元件。若要查看部署到叢集的所有 deployments和 DaemonSets,請參閱 在 中檢視 Kubernetes 資源 AWS Management Console

  2. 執行下列命令以檢視附加元件的受管欄位:

    kubectl get type/add-on-name -n add-on-namespace -o yaml

    例如,您可以使用下列命令查看 CoreDNS 附加元件的受管欄位。

    kubectl get deployment/coredns -n kube-system -o yaml

    欄位管理會列在傳回輸出的下一區段中。

    [...] managedFields: - apiVersion: apps/v1 fieldsType: FieldsV1 fieldsV1: [...]
    注意

    如果您在輸出managedFields中看不到 ,請將 --show-managed-fields新增至命令,然後再次執行。您使用kubectl的 版本會決定預設是否傳回受管欄位。

後續步驟

AWS 為您的附加元件自訂 未擁有的欄位。