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

配置acs-profile實現Pod配置自動注入

為了減少您對業務YAML的改動,ACS支持acs-profile功能,可以提供集群維度的資源視圖。本文介紹如何配置acs-profile。

功能介紹

acs-profile支持Pod配置自動注入,其中包含了交換機、安全組、域名解析模式等集群維度的配置,您可以根據需要進行更新:

  • 更新配置時無需重啟acs-virtual-node組件。

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

配置說明

創建Pod時,系統會讀取kube-system命名空間下的acs-profile配置文件(名為acs-profile的ConfigMap),并按照文件中的配置來創建Pod。您可以通過以下命令查看acs-profile的YAML。

kubectl get cm -n kube-system acs-profile -o yaml

YAML內容如下:

apiVersion: v1
kind: ConfigMap
metadata:
  name: acs-profile
  namespace: kube-system
data:
  enablePrivateZone: "false"
  securityGroupId: sg-2zeeyaaxlkq9sppl****
  vSwitchIds: vsw-2ze23nqzig8inprou****,vsw-2ze94pjtfuj9vaymf****
  vpcId: vpc-2zeghwzptn5zii0w7****
  selectors: ""

修改acs-profile的方式如下:

  • 通過kubectl edit命令

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

    1. 登錄容器計算服務控制臺

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

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

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

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

說明

如果修改acs-profile中的某項配置后,文件存在格式錯誤,修改的配置將不會生效,具體的錯誤信息會保存到event中,您可以通過以下kubectl命令查看

kubectl -n kube-system get event --field-selector involvedObject.namespace=kube-system,involvedObject.name=acs-profile

更新集群配置項

acs-profile中包含了vpcId、vSwitchIds等集群配置項對應VPC、交換機等信息,您可以根據需要進行更新,更新后的配置可以即時生效(熱更新)。支持更新的配置項如下:

配置項

示例值

說明

securityGroupId

sg-2ze0b9o8pjjzts4h****

ACS Pod所屬安全組。

vSwitchIds

vsw-2zeet2ksvw7f14ryz****

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

vpcId

vpc-2zeghwzptn5zii0w7****

ACS Pod所屬VPC。

enablePrivateZone

"false"

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

說明

上述配置項均為集群級別的默認配置項,如果在創建ACS Pod時沒有特別修改和覆蓋某些參數,系統將會采用acs-profile中預先設定的默認配置。

配置Selectors

創建Pod時,系統會按照Selectors去匹配Pod,對于Label能夠匹配上的Pod,會自動追加Annotation和Label,以便生效ACS Pod的功能特性。

Selectors中可以包含多個Selector,在每個Selector中,您必須聲明Selector的name,配置格式如下:

配置項

說明

name

Selector名稱,必填不能為空。

namespaceSelector

通過Namespace Label篩選Pod。

namespaceSelector.matchLabels

通過{key,value}格式描述匹配規則。

namespaceSelector.matchExpressions

通過選擇運算符列表描述匹配規則。

有效的運算符包括InNotInExistsDoesNotExist。 在InNotIn的情況下,設置的值必須是非空的。

objectSelector

通過Pod Label篩選。

objectSelector.matchLabels

通過{key,value}格式描述匹配規則。

objectSelector.matchExpressions

通過選擇運算符列表描述匹配規則。

有效的運算符包括InNotInExistsDoesNotExist。 在InNotIn的情況下,設置的值必須是非空的。

effect

要動態追加的Annotation和Label。

Selectors的配置模板如下:

apiVersion: v1
kind: ConfigMap
metadata:
  name: acs-profile
  namespace: kube-system
data:
  selectors: |
    [
      {
        "name": "selector-demo1",
        "namespaceSelector": {
          "matchLabels": {
            "kubernetes.io/metadata.name": "dev-ns"
          }
        },
        "objectSelector": {
          "matchLabels": {
            "acs": "true"
          },
          "matchExpressions": [
            {
              "key": "usage",
              "operator": "In",
              "values": ["testing"]
            }
          ]
        },
        "effect": {
          "annotations": {
            "network.alibabacloud.com/custom-dnsconfig": "{\"servers\":[\"114.114.114.114\",\"8.8.8.8\"],\"searches\":[\"xx.com\",\"yy.com\"],\"options\":[\"ndots:2\",\"edns0\"]}"
          },
          "labels": {
            "created-by-acs": "true"
          }
        }
      }
    ]

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

如果Pod所屬命名空間為dev-ns,并且Pod本身含有acs=trueusage=testingLabel,則該Pod會自動增加network.alibabacloud.com/custom-dnsconfig="{\"servers\":[\"114.114.114.114\",\"8.8.8.8\"],\"searches\":[\"xx.com\",\"yy.com\"],\"options\":[\"ndots:2\",\"edns0\"]}"的Annotation,以及created-by-acs=true 的Label。

重要

為了確保精確匹配,建議您在一個Selector中至少配置namespaceSelectorobjectSelector中的一個。如果兩者同時配置,則Pod需要同時滿足兩種條件才可以成功匹配;如果兩者都不配置,則該effect將作用于集群內所有的ACS Pod,可能會導致不必要的影響。

如果同時配置了多個Selector,ACS將按照順序匹配。成功匹配某個Selector后,會自動將該Selector中effect聲明的Annotation和Label追加到Pod中,不會覆蓋Pod原有的值。如存在重復的Annotation和Label,作用的優先級如下:

Pod原有的聲明值。

最先被匹配上的Selector中effect聲明的值。

后續匹配的Selector中effect聲明的值。

演示示例

  1. 使用以下內容,創建一個符合selector-demo1條件的Deployment。具體步驟,請參見使用YAML模板創建

    apiVersion: v1
    kind: Pod
    metadata:
      name: nginx
      namespace: dev-ns
      labels:
        acs: "true"
        usage: "testing"
    spec:
      containers:
      - name: nginx
        image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
        command: ["sleep", "infinity"]
        ports:
        - containerPort: 80
  2. Deployment創建完成后,查看Pod信息如下圖所示。

    image