详情页标题前

阿里云容器服务ACK优化大规模Terway集群NetworkPolicy的扩展性-云淘科技

详情页1

Terway的集群中,可以使用NetworkPolicy来控制Pod之间的访问。当Terway的集群Node数量多了之后(节点大于100),NetworkPolicy的代理会给Kubernetes的管控造成不小的压力,所以在大规模集群中需要对NetworkPolicy做针对大规模集群的优化调整。本文介绍如何优化大规模Terway集群中NetworkPolicy的性能。

前提条件

  • 集群网络模式为Terway且集群规模大于100个节点以上,详情请参见创建Kubernetes托管版集群。
  • 获取集群KubeConfig并通过kubectl工具连接集群。

背景信息

Terway使用Calico的Felix作为NetworkPolicy功能的实现。在大规模(节点大于100)的集群中,每个节点上的Felix都从API Server获取规则,这样会给API Server带来不小的压力,所以在大规模集群中可以采用关闭NetworkPolicy的功能或者部署中继组件Typha的方式降低Felix对API Server的压力。

您可以通过两种方式优化大规模集群中NetworkPolicy的性能:

  • 部署NetworkPolicy中继。
  • 关闭集群的NetworkPolicy能力。说明 关闭集群的NetworkPolicy能力会导致NetworkPolicy的功能不可用。

部署NetworkPolicy中继

  1. 登录容器服务管理控制台。
  2. 升级集群的Terway组件至最新版本,具体步骤请参见管理组件。
  3. 使用以下模板并执行kubectl apply -f部署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
      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
            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/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}为对应的地域。
    • 根据集群规模修改其中的replicas的副本数(一个副本对应200个节点,最小3副本)。
  4. 执行以下命令修改Terway的配置项文件eni-config,增加中继配置felix_relay_service: calico-typha。
    kubectl edit cm eni-config -n kube-system
    #在打开的文件中增加以下中继配置,与eni_conf参数对齐。
    felix_relay_service: calico-typha
  5. 执行以下命令重启集群中的Terway。
    kubectl get pod -n kube-system  | grep terway | awk '{print $1}' | xargs kubectl delete -n kube-system pod

    预计输出:

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

关闭集群NetworkPolicy

当您不需要NetworkPolicy的功能时,也可以采用直接关闭集群的NetworkPolicy功能,从而降低NetworkPolicy的代理对API Server的压力。

  1. 修改Terway的配置项文件eni-config,增加禁用NetworkPolicy的配置disable_network_policy: “true”。
    kubectl edit cm -n kube-system eni-config 
    # 修改(如果有以下key)或者新增:
    disable_network_policy: "true"
  2. 执行以下命令重启集群中的Terway。
    kubectl get pod -n kube-system  | grep terway | awk '{print $1}' | xargs kubectl delete -n kube-system pod

    预计输出:

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

执行结果

上述操作完成后,NetworkPolicy的代理会使用中继组件而不会再对Kubernetes的API Server造成过大压力。通过观察集群API Server的SLB的监控情况,API Server的负载下降。

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家

阿里云企业补贴进行中: 马上申请

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心。

购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠

转转请注明出处:https://www.yunxiaoer.com/170964.html

(0)
上一篇 2023年12月10日
下一篇 2023年12月10日
详情页2

相关推荐

  • 阿里云容器服务ACK在ACK集群使用网络策略-云淘科技

    Kubernetes网络策略(Network Policy)提供基于策略的网络控制。当您使用Terway容器网络时,如果您希望在IP地址或者端口层面控制网络流量,您可以为集群中特定应用使用网络策略。本文介绍如何使用ACK集群的网络策略及常用的使用场景。 前提条件 已创建ACK托管集群或ACK专有集群,具体操作,请参见创建Kubernetes托管版集群、创建K…

    2023年12月10日
  • 阿里云容器服务ACK配置Terway网络下节点级别网络-云淘科技

    Terway网络下所有节点默认使用命名空间kube-system中名称为eni-config的ConfigMap,如果需要按节点维度配置所使用的虚拟交换机、安全组,则可以通过创建新的ConfigMap实现。Terway将会以MergePatch(rfc7396)的形式将新配置合并到默认配置上。本文介绍Terway网络下如何实现节点级别的网络配置。 前提条件 …

    2023年12月10日
  • 阿里云容器服务ACK使用Terraform管理组件-云淘科技

    阿里云容器服务ACK提供丰富的组件,用于扩展集群功能。本文主要介绍如何在Terraform中配置组件,以帮助您在多场景下完成业务的管理。 组件类型 容器服务ACK管理的集群组件类型包括系统组件和可选组件。更多组件信息,请参见组件概述。 系统组件 系统组件是运行ACK集群所依赖的基础组件,创建集群时,会默认安装。例如: kube-apiserver kube-…

    阿里云容器服务 2023年12月10日
  • 阿里云容器服务ACK使用Terraform管理组件-云淘科技

    阿里云容器服务ACK提供丰富的组件,用于扩展集群功能。本文主要介绍如何在Terraform中配置组件,以帮助您在多场景下完成业务的管理。 组件类型 容器服务ACK管理的集群组件类型包括系统组件和可选组件。更多组件信息,请参见组件概述。 系统组件 系统组件是运行ACK集群所依赖的基础组件,创建集群时,会默认安装。例如: kube-apiserver kube-…

    阿里云容器服务 2023年12月10日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 阿里云容器服务ACK使用Terraform管理组件-云淘科技

    阿里云容器服务ACK提供丰富的组件,用于扩展集群功能。本文主要介绍如何在Terraform中配置组件,以帮助您在多场景下完成业务的管理。 组件类型 容器服务ACK管理的集群组件类型包括系统组件和可选组件。更多组件信息,请参见组件概述。 系统组件 系统组件是运行ACK集群所依赖的基础组件,创建集群时,会默认安装。例如: kube-apiserver kube-…

    阿里云容器服务 2023年12月10日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。