tencent cloud

文档反馈

DNSAutoscaler 说明

最后更新时间:2024-02-01 10:17:19

    简介

    组件介绍

    DNSAutoscaler 是 DNS 自动水平伸缩组件,可通过一个 deployment 获取集群的节点数和核数,根据预设的伸缩策略,自动水平伸缩 DNS 的副本数。目前的伸缩模式分为两种,分别是 Linear 线性模式Ladder 阶梯模式

    Linear Mode

    ConfigMap 配置示例如下:
    data:
    linear: |-
    {
    "coresPerReplica": 2,
    "nodesPerReplica": 1,
    "min": 1,
    "max": 100,
    "preventSinglePointFailure": true
    }
    目标副本计算公式: replicas = max(ceil(cores × 1/coresPerReplica) , ceil(nodes × 1/nodesPerReplica))
    replicas = min(replicas, max)
    replicas = max(replicas, min)

    Ladder Mode

    ConfigMap 配置示例如下:
    data:
    ladder: |-
    {
    "coresToReplicas":
    [
    [ 1, 1 ],
    [ 64, 3 ],
    [ 512, 5 ],
    [ 1024, 7 ],
    [ 2048, 10 ],
    [ 4096, 15 ]
    ],
    "nodesToReplicas":
    [
    [ 1, 1 ],
    [ 2, 2 ]
    ]
    }
    目标副本计算: 假设 100nodes/400cores 的集群中,按上述配置,nodesToReplicas 取2(100>2),coresToReplicas 取3(64<400<512),二者取较大值3,最终 replica 为3。

    部署在集群内的 Kubernetes 对象

    kubernets 对象名称
    类型
    请求资源
    所属 Namespace
    tke-dns-autoscaler
    Deployment
    每节点20mCPU,10Mi内存
    kube-system
    dns-autoscaler
    ConfigMap
    -
    kube-system
    tke-dns-autoscale
    ServiceAccount
    -
    kube-system
    tke-dns-autoscaler
    ClusterRole
    -
    kube-system
    tke-dns-autoscaler
    ClusterRoleBinding
    -
    kube-system

    限制条件

    仅在 1.8 版本以上的 kubernetes 集群支持。
    集群中的 dns server 的工作负载为 deployment/coredns。

    特别说明

    CoreDNS 的水平伸缩可能导致部分副本在一段时间内不可用,强烈建议安装该组件前,进行相关的优化配置,最大程度保证 DNS 服务的可用性,具体可参考 配置 CoreDNS 平滑升级

    组件权限说明

    权限说明

    该组件权限是当前功能实现的最小权限依赖。

    权限场景

    功能
    涉及对象
    涉及操作权限
    需要监听集群内 node 资源的变化。
    node
    list/watch
    修改 deployment 部署的 coredns 副本数。
    replicationcontrollers/scale、deployments/scale 和 replicasets/scale
    get/update
    获取 configmap 中参数配置。在没有配置参数的情况下,会创建默认参数的 configmap。
    configmap
    get/create

    权限定义

    kind: ClusterRole
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
    name: tke-dns-autoscaler
    rules:
    - apiGroups:
    - ""
    resources:
    - nodes
    verbs:
    - list
    - watch
    - apiGroups:
    - ""
    resources:
    - replicationcontrollers/scale
    verbs:
    - get
    - update
    - apiGroups:
    - extensions
    - apps
    resources:
    - deployments/scale
    - replicasets/scale
    verbs:
    - get
    - update
    - apiGroups:
    - ""
    resources:
    - configmaps
    verbs:
    - get
    - create

    使用方法

    1. 登录 容器服务控制台,在左侧导航栏中选择集群
    2. 在集群管理页面单击目标集群 ID,进入集群详情页。
    3. 选择左侧菜单栏中的组件管理,进入组件列表页面。
    4. 在组件列表页面中选择新建,并在新建组件页面中勾选 DNSAutoscaler。 该组件默认伸缩配置策略如下:
    data:
    ladder: |-
    {
    "coresToReplicas":
    [
    [ 1, 1 ],
    [ 128, 3 ],
    [ 512, 4 ]
    ],
    "nodesToReplicas":
    [
    [ 1, 1 ],
    [ 2, 2 ]
    ]
    }
    扩展组件创建成功后,可以通过修改 kube-system 命名空间下的 configmap/tke-dns-autoscaler 来变更配置。详细配置请参见 官方文档
    5. 单击完成即可创建组件。
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持