日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

配置eci-profile

為了減少您對業務YAML的改動,ECI支持了eci-profile功能。eci-profile可以提供集群維度的ECI資源視圖,支持根據selector實現Pod編排。本文介紹如何配置eci-profile。

功能介紹

阿里云容器服務ACK通過VK(部署ack-virtual-node組件)使用ECI時,可能會碰到以下問題:

  • 需要上層業務修改YAML才能調度Pod到ECI

  • 需要上層業務修改YAML才能開啟ECI特有的高級特性

這類問題導致了運維管理工作和業務管理工作混淆在一起。為解決此類問題,ECI支持了eci-profile。eci-profile可以實現以下三個功能:

  • ECI Scheduler

    在混合使用ECI和普通節點的場景下,一般可以通過配置Pod Label、配置Namespace Label和配置ECI彈性調度等方式將Pod調度到ECI,但這些方式均需要對存量資源做一定的修改,無法做到零侵入。

    對于上述情況,ECI Scheduler基于Mutating Webhook機制實現了一種新的調度機制。在eci-profile中,您可以自定義selector,selector可以根據Pod的Label或者Pod所屬Namespace的Label來篩選Pod,滿足selector篩選條件的Pod會自動調度到ECI。

  • ECI Effect

    對于ECI的一些功能特性,例如指定ECS實例規格,啟用鏡像緩存,設置NTP服務等,需要在Pod中追加Annotation或者Label來實現。更多信息,請參見ECI Pod Annotation

    對于上述情況,ECI Effect實現了自動追加Annotation和Label的功能。在eci-profile中,您可以自定義selector,在selector中同時指定篩選條件和要追加的Annotation和Label,滿足selector篩選條件的Pod會自動調度到ECI,并自動追加指定的Annotation和Label。

  • 配置熱更新

    eci-profile中包含了Cluster IP、混合云模式、日志采集、交換機等配置,您可以根據需要進行更新。

    • 更新配置時無需重啟VK。

    • 對于新創建的ECI Pod,可以即時生效更新后的配置;對于存量ECI Pod,需要滾動發布后才能生效更新后的配置。

注意事項

  • 使用該功能時,請確保集群中的VK(ack-virtual-node組件)為最新版本。關于如何升級組件,請參見管理組件

  • 如果需要使用ECI Scheduler功能,則必須要開啟Webhook。ACK Serverless集群默認調度Pod到ECI,無需使用ECI Scheduler功能。

配置說明

創建Pod時,系統會讀取kube-system命名空間下的eci-profile配置文件(名為eci-profile的ConfigMap),按其data配置來創建Pod。您可以通過kubectl get cm -n kube-system eci-profile -o yaml命令查看eci-profile的YAML。eci-profile的YAML模板如下:

apiVersion: v1
data:
  enableClusterIp: "true"
  enableHybridMode: "false"
  enableLinuxArm64Node: "false" 
  enableLogController: "false"
  enablePVCController: "false"
  enablePrivateZone: "false"
  enableReuseSSLKey: "false"
  featureGates: "WaitForFirstConsumer=false"
  securityGroupId: sg-2zeeyaaxlkq9sppl****
  selectors: ""
  slsMachineGroup: ""
  vSwitchIds: vsw-2ze23nqzig8inprou****,vsw-2ze94pjtfuj9vaymf****
  vpcId: vpc-2zeghwzptn5zii0w7****
kind: ConfigMap
metadata:
  creationTimestamp: "2023-01-11T08:28:14Z"
  name: eci-profile
  namespace: kube-system
  resourceVersion: "356"
  uid: b345fa8c-919e-41fc-a981-57864b1a****

您可以修改eci-profile中的data配置,配置selectors或更新固定配置項。

data中的配置項

說明

詳細說明及示例

selectors

可自定義增加selector(分為objectSelector和namespaceSelector)和effect,用于實現ECI Scheduler和ECI Effect功能。您可以根據需要靈活配置selectors。

配置selectors

除selectors外,vpcId、vswitchIds等固定配置項

集群級別配置項,支持熱更新。您可以根據需要更新配置項取值。

更新固定配置項

修改eci-profile的方式如下:

  • 通過kubectl edit命令

    kubectl edit configmap eci-profile -n kube-system
  • 通過容器服務管理控制臺

    1. 登錄容器服務管理控制臺

    2. 在集群頁面,找到目標集群,單擊集群名稱。

    3. 在集群管理頁的左側導航欄,選擇配置管理>配置項

    4. 選擇命名空間為kube-system

    5. 找到eci-profile,單擊YAML編輯

配置selectors

selectors包含了ECI Scheduler和ECI Effect的配置。創建Pod時,系統會按照selectors去匹配Pod,對于Label能夠匹配上的Pod,會自動調度到ECI,或者追加Annotation和Label,以便生效ECI的功能特性。

selectors中可以包含多個selector,在每個selector中,您必須聲明selector的name,可以根據需要聲明以下信息:

  • namespaceSelector:要匹配的Namespace Label。

  • objectSelector:要匹配的Pod Label。

  • effect:要動態追加的Annotation和Label。

selectors的配置模板如下:

說明

請根據自身業務場景設計selectors,實際配置時請去除注釋信息。

data:
  selectors: |
    [
      {
        "name": "selector-demo1", #selector名稱,必填,不能為空
        "namespaceSelector": {    #通過NameSpace Label篩選,可選
          "matchLabels": {        #要匹配的NameSpace Label。如果填寫多個,為與關系
            "eci": "true"
          }
        },
        "objectSelector": {       #通過Pod Label篩選,可選
          "matchLabels": {        #要匹配的Pod Label。如果填寫多個,為與關系
            "eci": "true"
          }
        },
        "effect": {               #要動態追加的Annotation和Label,可選
          "annotations": {
            "k8s.aliyun.com/eci-use-specs": "ecs.c6.xlarge"
          },
          "labels": {
            "created-by-eci": "true"
          }
        }
      },
      {
        "name": "selector-demo2",   
        "objectSelector": {      
          "matchLabels": {     
            "eci": "test"
    	  }
        }
      }
    ]

上述模板中,名為selector-demo1的selector可以實現以下功能:

如果Pod所屬命名空間含有eci: true Label,并且Pod本身含有eci: true Label,則該Pod會自動調度到ECI,并且增加"k8s.aliyun.com/eci-use-specs": "ecs.c6.xlarge"的Annotation,以及created-by-eci: true Label。

重要
  • 在一個selector中,建議您至少配置namespaceSelector和objectSelector中的一個。如果兩者同時配置了,則Pod需要同時匹配兩者;如果兩者均未配置但配置了effect,則effect對所有調度到ECI的Pod均生效。

  • 如果配置了多個selector,將按照順序匹配selector。匹配成功后,會自動把effect中聲明的Annotation和Label追加到Pod中(只追加,不覆蓋)。對于重復的Annotation和Label,Pod中原有聲明的值優先級最高,其次是順序匹配上的第一個selector中的effect,以此類推。

配置selectors后,您可以通過以下命令確認selectors是否生效。如果返回的YAML中已包含配置的selectors,則表示配置成功;如果未包含selectors,請檢查selectors的格式是否有誤。

kubectl get mutatingwebhookconfigurations -o yaml vk-webhook

配置示例一:將特定Pod調度到ECI

配置namespaceSelector和objectSelector實現以下功能:

如果Pod含有created-by-eci: true Label,且所屬Namespace含有type: eci Label,則該Pod會被調度到ECI。

data:
  selectors: |
    [
      {
        "name":"eci-selector",
        "namespaceSelector":{
          "matchLabels":{
            "type":"eci"
          }
        },
        "objectSelector":{
          "matchLabels":{
            "created-by-eci":"true"
          }
        }
      }
    ]

配置示例二:將特定Pod調度到ECI并使用GPU規格創建

配置namespaceSelector和effect實現以下功能:

如果Pod所屬Namespace含有gpu: true Label,則該Pod會被調度到ECI,并使用指定的GPU實例規格ecs.gn6v-c8g1.2xlarge,同時添加gpu: test Label。

data:
  selectors: |
    [
      {
        "name":"gpu-namespace-selector",
        "namespaceSelector":{
          "matchLabels":{
            "gpu":"true"
          }
        },
        "effect": {
          "annotations": {
            "k8s.aliyun.com/eci-use-specs":"ecs.gn6v-c8g1.2xlarge"
          },        
          "labels":{
            "gpu":"test"
          }
        }
      }
    ]

配置示例三:將特定Pod調度到ECI并開啟自動匹配鏡像緩存

配置objectSelector和effect實現以下功能:

如果Pod含有imc: auto Label,則該Pod會被調度到ECI,并使用自動匹配鏡像緩存功能。

data:
  selectors: |
    [
      {
        "name":"autoimc-object-selector",
        "objectSelector":{
          "matchLabels":{
            "imc":"auto"
          }
        },
        "effect": {
          "annotations": {
            "k8s.aliyun.com/eci-auto-imc": "true"
          }
        }
      }
    ]

更新固定配置項

data中包含的vpcId、vswitchIds等固定配置項對應VPC、交換機等信息,您可以根據需要進行更新,更新后的配置可以即時生效(無需重啟VK)。支持更新的配置項如下:

說明

以下配置項均為集群級別的配置項,即在創建ECI Pod時,如果沒有額外配置,會采用eci-profile中的配置。

配置項

示例值

說明

enableClusterIp

"true"

是否支持Cluster IP。

enableLinuxArm64Node

"false"

是否開啟ARM節點。更多信息,請參見調度Pod到ARM架構的虛擬節點

enableLogController

"false"

是否開啟SLS CRD日志采集功能。如果配置為true,還需配置

slsMachineGroup。

enablePVCController

"false"

是否開啟云盤在線擴容功能。如果配置為true,則允許對綁定了云盤的PVC進行在線擴容。

enablePrivateZone

"false"

是否使用PrivateZone進行域名解析。

enableReuseSSLKey

"false"

是否開啟SSL Key復用。如果配置為true,則在創建ECI Pod時,會復用SSL Key來提升創建效率。

重要

默認情況下,創建ECI Pod時,VK會給每個ECI Pod下發不同的SSL證書,這在大批量創建時會影響效率。開啟SSL Key復用后,VK會給每個ECI Pod下發同一個SSL證書,這在安全性上會有所降低。

featureGates

"WaitForFirstConsumer=false"

featureGates表示灰度特性,您可以按需配置,目前僅支持配置WaitForFirstConsumer。

配置WaitForFirstConsumer=true時,表示VK+ECI模式下,StorageClass默認使用WaitForFirstConsumer模式。

  • 啟用該配置前,需確保csi-provisioner組件已升級到最新release版本,

  • 啟用該配置后,當PVC被Pod使用時,需要Pod完成調度后,才觸發PV和后端存儲的創建,同時完成PVC和PV的綁定。此時,StorageClass中的Zone和Region將不再生效,而是使用Pod調度所在節點的Zone和Region創建存儲資源,以保證計算資源調度優先。

更多信息,請參見Volume Binding Mode

securityGroupId

sg-2ze0b9o8pjjzts4h****

ECI Pod所屬安全組。

slsMachineGroup

"test-mg"

ECI Pod所屬機器組。當enableLogController配置為true時,需配置該項。

vSwitchIds

vsw-2zeet2ksvw7f14ryz****

ECI Pod所屬交換機。可配置多個,用半角逗號間隔。

vpcId

vpc-2zeghwzptn5zii0w7****

ECI Pod所屬VPC。

配置示例如下:

data:
  enableClusterIp: "true"
  enableHybridMode: "false"
  enableLinuxArm64Node: "false" 
  enableLogController: "false"
  enablePVCController: "false"
  enablePrivateZone: "false"
  enableReuseSSLKey: "false"
  featureGates: "WaitForFirstConsumer=false"
  securityGroupId: sg-2zeeyaaxlkq9sppl****
  selectors: ""
  slsMachineGroup: ""
  vSwitchIds: vsw-2ze23nqzig8inprou****,vsw-2ze94pjtfuj9vaymf****
  vpcId: vpc-2zeghwzptn5zii0w7****