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

優(yōu)化大規(guī)模Terway集群NetworkPolicy的擴展性

在Terway的集群中,可以使用NetworkPolicy來控制Pod之間的訪問。當Terway的集群節(jié)點數(shù)量增加到100以上時,NetworkPolicy的代理會給Kubernetes的管控造成不小的壓力,所以需要對NetworkPolicy做針對大規(guī)模集群的優(yōu)化調(diào)整。本文介紹如何優(yōu)化大規(guī)模Terway集群中NetworkPolicy的性能。

背景信息

Terway使用Calico的Felix作為NetworkPolicy功能的實現(xiàn)。在節(jié)點數(shù)量大于100的大規(guī)模集群中,每個節(jié)點上的Felix都從API Server獲取規(guī)則,這樣會給API Server帶來不小的壓力,所以在大規(guī)模集群中可以采用關(guān)閉NetworkPolicy的功能或者部署中繼組件Typha的方式降低Felix對API Server的壓力。

您可以通過兩種方式優(yōu)化大規(guī)模集群中NetworkPolicy的性能:

  • 部署NetworkPolicy中繼。

  • 關(guān)閉集群的NetworkPolicy功能。

    說明

    關(guān)閉集群的NetworkPolicy能力會導(dǎo)致NetworkPolicy的功能不可用。

前提條件

部署NetworkPolicy中繼

  1. 登錄容器服務(wù)管理控制臺

  2. 升級集群的Terway組件至最新版本,具體步驟請參見管理組件

    Terway不同模式使用的組件有所不同。詳細信息,請參見Terway各種模式對比

  3. 復(fù)制以下代碼至新建的calico-typha.yaml文件中,用以部署NetworkPolicy中繼組件Typha。

    apiVersion: v1
    kind: Service
    metadata:
      name: calico-typha
      namespace: kube-system
      labels:
        k8s-app: calico-typha
    spec:
      ports:
        - port: 5473
          protocol: TCP
          targetPort: calico-typha
          name: calico-typha
      selector:
        k8s-app: calico-typha
    
    ---
    
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: calico-typha
      namespace: kube-system
      labels:
        k8s-app: calico-typha
    spec:
      replicas: 3 # 根據(jù)集群規(guī)模修改其中的replicas的副本數(shù)(一個副本對應(yīng)200個節(jié)點,最少3個副本)。
      revisionHistoryLimit: 2
      selector:
        matchLabels:
          k8s-app: calico-typha
      template:
        metadata:
          labels:
            k8s-app: calico-typha
          annotations:
            cluster-autoscaler.kubernetes.io/safe-to-evict: 'true'
        spec:
          nodeSelector:
            kubernetes.io/os: linux
          hostNetwork: true
          tolerations:
            - operator: Exists
          serviceAccountName: terway
          priorityClassName: system-cluster-critical
          containers:
          - image: registry-vpc.{REGION-ID}.aliyuncs.com/acs/typha:v3.20.2 # 修改{REGION-ID}為對應(yīng)集群的地域。
            name: calico-typha
            ports:
            - containerPort: 5473
              name: calico-typha
              protocol: TCP
            env:
              - name: TYPHA_LOGSEVERITYSCREEN
                value: "info"
              - name: TYPHA_LOGFILEPATH
                value: "none"
              - name: TYPHA_LOGSEVERITYSYS
                value: "none"
              - name: TYPHA_CONNECTIONREBALANCINGMODE
                value: "kubernetes"
              - name: TYPHA_DATASTORETYPE
                value: "kubernetes"
              - name: TYPHA_HEALTHENABLED
                value: "true"
            livenessProbe:
              httpGet:
                path: /liveness
                port: 9098
                host: localhost
              periodSeconds: 30
              initialDelaySeconds: 30
            readinessProbe:
              httpGet:
                path: /readiness
                port: 9098
                host: localhost
              periodSeconds: 10
    
    ---
    
    apiVersion: policy/v1 # 若Kubernetes為v1.21以前版本,apiVersion對應(yīng)的版本為policy/v1beta1。
    kind: PodDisruptionBudget
    metadata:
      name: calico-typha
      namespace: kube-system
      labels:
        k8s-app: calico-typha
    spec:
      maxUnavailable: 1
      selector:
        matchLabels:
          k8s-app: calico-typha
    
    ---
    
    apiVersion: apiextensions.k8s.io/v1
    kind: CustomResourceDefinition
    metadata:
      name: bgppeers.crd.projectcalico.org
    spec:
      scope: Cluster
      group: crd.projectcalico.org
      versions:
      - name: v1
        served: true
        storage: true
        schema:
          openAPIV3Schema:
            type: object
            properties:
              apiVersion:
                type: string
      names:
        kind: BGPPeer
        plural: bgppeers
        singular: bgppeer
    說明
    • 修改模板中的{REGION-ID}為對應(yīng)的地域。

    • 根據(jù)集群規(guī)模修改其中的replicas的副本數(shù)(一個副本對應(yīng)200個節(jié)點,最少3個副本)。

    • 根據(jù)集群版本適配PodDisruptionBudgetapiVersion:集群版本為v1.21或更高,PodDisruptionBudgetapiVersion需要設(shè)置為policy/v1;集群版本低于v1.21,PodDisruptionBudgetapiVersion需要設(shè)置為policy/v1beta1

  4. 執(zhí)行以下命令,部署中繼組件。

    kubectl apply -f calico-typha.yaml
  5. 執(zhí)行以下命令,修改Terway的配置項文件eni-config

    kubectl edit cm eni-config -n kube-system

    在打開的文件中增加中繼配置felix_relay_service: calico-typha,并將disable_network_policy的參數(shù)取值配置為"false"(如果沒有該參數(shù),則無需配置)。這兩個參數(shù)均與eni_conf參數(shù)對齊。

      felix_relay_service: calico-typha
      disable_network_policy: "false" # 如果沒有該參數(shù),則無需新增。
  6. 執(zhí)行以下命令,重啟集群中的Terway。

    kubectl get pod -n kube-system  | grep terway | awk '{print $1}' | xargs kubectl delete -n kube-system pod

    預(yù)計輸出:

    pod "terway-eniip-8hmz7" deleted
    pod "terway-eniip-dclfn" deleted
    pod "terway-eniip-rmctm" deleted
    ...

關(guān)閉集群NetworkPolicy

當您不需要NetworkPolicy的功能時,也可以采用直接關(guān)閉集群的NetworkPolicy功能,從而降低NetworkPolicy的代理對API Server的壓力。

  1. 執(zhí)行以下命令,修改Terway的配置項文件eni-config,增加禁用NetworkPolicy的配置disable_network_policy: "true"。

    kubectl edit cm -n kube-system eni-config 
    # 修改(如果有以下key)或者新增:
    disable_network_policy: "true"
  2. 執(zhí)行以下命令,重啟集群中的Terway。

    kubectl get pod -n kube-system  | grep terway | awk '{print $1}' | xargs kubectl delete -n kube-system pod

    預(yù)計輸出:

    pod "terway-eniip-8hmz7" deleted
    pod "terway-eniip-dclfn" deleted
    pod "terway-eniip-rmctm" deleted
    ...

執(zhí)行結(jié)果

上述操作完成后,NetworkPolicy的代理會使用中繼組件,從而不會再對Kubernetes的API Server造成過大壓力。通過觀察集群API Server的SLB的監(jiān)控情況,可以看到API Server的負載下降。