確定您可以為 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防EKS止 Amazon 管理附加元件,並可能導致在附加元件更新時覆寫您的變更。

欄位管理語法

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

  • 全受管 — 欄位的所有金鑰均由 Amazon 管理EKS。修改任何值皆會導致衝突。

  • 部分管理 — 欄位的某些金鑰由 Amazon 管理EKS。只有對 Amazon 明確管理的金鑰進行修改才EKS會造成衝突。

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

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

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

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

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

  • i:index,其中 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. 判定要檢查的附加元件。若要查看部署到叢集的所有 deploymentsDaemonSets,請參閱 檢視中的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 於您的欄位。