活动

天翼云最新优惠活动,涵盖免费试用,产品折扣等,助您降本增效!
查看全部活动
热门活动
  • 免费体验DeepSeek,上天翼云息壤 NEW 新老用户均可免费体验2500万Tokens,限时两周
  • 云上钜惠 HOT 爆款云主机全场特惠,更有万元锦鲤券等你来领!
  • 算力套餐 HOT 让算力触手可及
  • 天翼云脑AOne NEW 连接、保护、办公,All-in-One!
  • 一键部署Llama3大模型学习机 0代码一键部署,预装最新主流大模型Llama3与StableDiffusion
  • 中小企业应用上云专场 产品组合下单即享折上9折起,助力企业快速上云
  • 息壤高校钜惠活动 NEW 天翼云息壤杯高校AI大赛,数款产品享受线上订购超值特惠
  • 天翼云电脑专场 HOT 移动办公新选择,爆款4核8G畅享1年3.5折起,快来抢购!
  • 天翼云奖励推广计划 加入成为云推官,推荐新用户注册下单得现金奖励
免费活动
  • 免费试用中心 HOT 多款云产品免费试用,快来开启云上之旅
  • 天翼云用户体验官 NEW 您的洞察,重塑科技边界

智算服务

打造统一的产品能力,实现算网调度、训练推理、技术架构、资源管理一体化智算服务
智算云(DeepSeek专区)
科研助手
  • 算力商城
  • 应用商城
  • 开发机
  • 并行计算
算力互联调度平台
  • 应用市场
  • 算力市场
  • 算力调度推荐
一站式智算服务平台
  • 模型广场
  • 体验中心
  • 服务接入
智算一体机
  • 智算一体机
大模型
  • DeepSeek-R1-昇腾版(671B)
  • DeepSeek-R1-英伟达版(671B)
  • DeepSeek-V3-昇腾版(671B)
  • DeepSeek-R1-Distill-Llama-70B
  • DeepSeek-R1-Distill-Qwen-32B
  • Qwen2-72B-Instruct
  • StableDiffusion-V2.1
  • TeleChat-12B

应用商城

天翼云精选行业优秀合作伙伴及千余款商品,提供一站式云上应用服务
进入甄选商城进入云市场创新解决方案
办公协同
  • WPS云文档
  • 安全邮箱
  • EMM手机管家
  • 智能商业平台
财务管理
  • 工资条
  • 税务风控云
企业应用
  • 翼信息化运维服务
  • 翼视频云归档解决方案
工业能源
  • 智慧工厂_生产流程管理解决方案
  • 智慧工地
建站工具
  • SSL证书
  • 新域名服务
网络工具
  • 翼云加速
灾备迁移
  • 云管家2.0
  • 翼备份
资源管理
  • 全栈混合云敏捷版(软件)
  • 全栈混合云敏捷版(一体机)
行业应用
  • 翼电子教室
  • 翼智慧显示一体化解决方案

合作伙伴

天翼云携手合作伙伴,共创云上生态,合作共赢
天翼云生态合作中心
  • 天翼云生态合作中心
天翼云渠道合作伙伴
  • 天翼云代理渠道合作伙伴
天翼云服务合作伙伴
  • 天翼云集成商交付能力认证
天翼云应用合作伙伴
  • 天翼云云市场合作伙伴
  • 天翼云甄选商城合作伙伴
天翼云技术合作伙伴
  • 天翼云OpenAPI中心
  • 天翼云EasyCoding平台
天翼云培训认证
  • 天翼云学堂
  • 天翼云市场商学院
天翼云合作计划
  • 云汇计划
天翼云东升计划
  • 适配中心
  • 东升计划
  • 适配互认证

开发者

开发者相关功能入口汇聚
技术社区
  • 专栏文章
  • 互动问答
  • 技术视频
资源与工具
  • OpenAPI中心
开放能力
  • EasyCoding敏捷开发平台
培训与认证
  • 天翼云学堂
  • 天翼云认证
魔乐社区
  • 魔乐社区

支持与服务

为您提供全方位支持与服务,全流程技术保障,助您轻松上云,安全无忧
文档与工具
  • 文档中心
  • 新手上云
  • 自助服务
  • OpenAPI中心
定价
  • 价格计算器
  • 定价策略
基础服务
  • 售前咨询
  • 在线支持
  • 在线支持
  • 工单服务
  • 建议与反馈
  • 用户体验官
  • 服务保障
  • 客户公告
  • 会员中心
增值服务
  • 红心服务
  • 首保服务
  • 客户支持计划
  • 专家技术服务
  • 备案管家

了解天翼云

天翼云秉承央企使命,致力于成为数字经济主力军,投身科技强国伟大事业,为用户提供安全、普惠云服务
品牌介绍
  • 关于天翼云
  • 智算云
  • 天翼云4.0
  • 新闻资讯
  • 天翼云APP
基础设施
  • 全球基础设施
  • 信任中心
最佳实践
  • 精选案例
  • 超级探访
  • 云杂志
  • 分析师和白皮书
  • 天翼云·创新直播间
市场活动
  • 2025智能云生态大会
  • 2024智算云生态大会
  • 2023云生态大会
  • 2022云生态大会
  • 天翼云中国行
天翼云
  • 活动
  • 智算服务
  • 产品
  • 解决方案
  • 应用商城
  • 合作伙伴
  • 开发者
  • 支持与服务
  • 了解天翼云
      • 文档
      • 控制中心
      • 备案
      • 管理中心

      查看所有产品

      云容器引擎

      云容器引擎

        • 产品动态
        • 产品简介
        • 产品定义
        • 产品优势
        • 产品特性
        • 应用场景
        • 使用限制
        • 相关术语解释
        • 与其它服务的关系
        • 快速入门
        • 入门指引
        • 准备工作
        • 快速创建Kubernetes集群
        • 镜像创建无状态工作负载(Nginx)
        • 计费说明
        • 计费模式
        • 计费项与产品价格
        • 包年/包月计费
        • 按需计费
        • 规格变更
        • 计费模式变更
        • 退订
        • 用户指南
        • 什么是云容器引擎
        • 高危操作及解决方案
        • 集群管理
        • 集群概述
        • 集群基本信息
        • 集群Kubernetes版本发布说明
        • CCE发布Kubernetes 1.29版本说明
        • CCE发布Kubernetes 1.28版本说明
        • CCE发布Kubernetes 1.27版本说明
        • CCE发布Kubernetes 1.25版本说明
        • CCE发布Kubernetes 1.23版本说明
        • (停止维护)CCE发布Kubernetes 1.21版本说明
        • (停止维护)CCE发布Kubernetes 1.19版本说明
        • (停止维护)CCE发布Kubernetes 1.17版本说明
        • (停止维护)CCE发布Kubernetes 1.15版本说明
        • (停止维护)CCE发布Kubernetes 1.13版本说明
        • (停止维护)CCE发布Kubernetes 1.11版本说明
        • (停止维护)CCE发布Kubernetes 1.9及之前版本说明
        • 购买集群
        • CCE Turbo集群与CCE集群的区别
        • iptables与IPVS如何选择
        • 购买集群
        • 访问集群
        • 通过X509证书连接集群
        • 通过kubectl连接集群
        • 通过自定义域名访问集群
        • 集群升级
        • 集群升级概述
        • 升级前须知
        • 升级前检查
        • 节点限制检查
        • 黑名单检查
        • 插件检查
        • Helm模板检查
        • Master节点SSH联通性检查
        • 节点池检查
        • 安全组检查
        • ARM节点限制检查
        • 残留待迁移节点检查
        • K8S废弃资源检查
        • 兼容性风险检查
        • 节点CCEAgent版本检查
        • 节点CPU使用率检查
        • CRD检查
        • 节点磁盘检查
        • 节点DNS检查
        • 节点关键目录文件权限检查
        • 节点Kubelet检查
        • 节点内存检查
        • 节点时钟同步服务器检查
        • 节点OS检查
        • 节点CPU数量检查
        • 节点Python命令检查
        • ASM网格版本检查
        • 节点Ready检查
        • 节点journald检查
        • 节点干扰ContainerdSock检查
        • 内部错误
        • 节点挂载点检查
        • K8S节点污点检查
        • everest插件版本限制检查
        • cce-hpa-controller插件限制检查
        • 动态绑核检查
        • 升级后验证
        • 业务验证
        • 存量Pod检查
        • 存量节点与容器网络检查
        • 存量节点标签与污点检查
        • 新建节点检查
        • 新建Pod检查
        • 重置跳过节点检查
        • 重置升级/滚动升级(1.13版本)
        • 原地升级
        • 集群跨版本业务迁移
        • 管理集群
        • 删除集群(按需计费)
        • 退订/释放集群(包年/包月)
        • 变更集群规格
        • 续费集群(包年/包月)
        • 休眠与唤醒集群(按需计费)
        • 更改集群节点的默认安全组
        • 配置管理
        • 获取集群证书
        • 节点管理
        • 节点概述
        • 节点须知
        • 容器引擎
        • 节点操作系统
        • 安全容器与普通容器
        • 节点最多可以创建多少个Pod
        • 节点预留资源计算公式
        • 数据盘空间分配说明
        • 创建节点
        • 纳管节点
        • 移除节点
        • 重置节点
        • 登录节点
        • 管理节点标签
        • 管理节点污点(taint)
        • 节点排水
        • 同步云服务器
        • 删除节点
        • 节点关机
        • 节点滚动升级
        • 将节点容器引擎从Docker迁移到Containerd
        • 节点池管理
        • 节点池概述
        • 创建节点池
        • 管理节点池
        • 调度管理
        • 调度概述
        • CPU调度
        • GPU调度
        • 工作负载
        • 工作负载概述
        • 创建无状态负载(Deployment)
        • 创建有状态负载(StatefulSet)
        • 创建守护进程集(DaemonSet)
        • 创建普通任务(Job)
        • 创建定时任务(CronJob)
        • 管理工作负载和任务
        • 容器设置
        • 容器基本信息
        • 如何使用第三方镜像
        • 设置容器规格
        • 设置容器生命周期
        • 设置容器健康检查
        • 设置环境变量
        • 健康检查UDP协议安全组规则说明
        • 配置镜像拉取策略
        • 时区同步
        • 工作负载升级配置
        • 调度策略(亲和与反亲和)
        • 实例缩容优先级说明
        • 登录容器
        • Pod标签与注解
        • 网络管理
        • 网络概述
        • 容器网络模型
        • 容器网络模型对比
        • 容器隧道网络
        • VPC网络
        • 云原生网络2.0
        • Service
        • Service概述
        • 集群内访问(ClusterIP)
        • 节点访问(NodePort)
        • 负载均衡(LoadBalancer)
        • Headless Service
        • Service Annotations说明
        • Ingress
        • Ingress概述
        • 通过控制台使用ELB Ingress
        • 通过控制台使用Nginx Ingress
        • DNS
        • DNS概述
        • 工作负载DNS配置说明
        • 使用CoreDNS实现自定义域名解析
        • 使用NodeLocal DNSCache提升DNS性能
        • 容器网络配置
        • 主机网络hostNetwork
        • Pod互访QoS限速
        • 容器隧道网络配置
        • 容器如何访问VPC内部网络
        • 从容器访问公网
        • 存储管理
        • 存储概述
        • 本地磁盘存储
        • 存储卷PV
        • 存储卷声明PVC
        • 存储类StorageClass
        • 快照与备份
        • 本地持久存储卷和临时存储卷
        • 对象存储卷挂载设置自定义访问密钥(AK/SK)
        • 设置挂载参数
        • 运维管理
        • 监控管理
        • 日志管理
        • 使用ICAgent采集容器日志
        • 命名空间
        • 创建命名空间
        • 管理命名空间
        • 设置命名空间级的网络策略
        • 设置资源配额及限制
        • 配置中心
        • 创建配置项
        • 使用配置项
        • 创建密钥
        • 使用密钥
        • 集群系统密钥说明
        • 弹性伸缩
        • 弹性伸缩概述
        • 工作负载弹性伸缩
        • 工作负载伸缩原理
        • 创建工作负载弹性伸缩(HPA)
        • 创建工作负载弹性伸缩(CustomedHPA)
        • CronHPA定时策略
        • 管理工作负载伸缩策略
        • 集群/节点弹性伸缩
        • 节点伸缩原理
        • 创建节点伸缩策略
        • 管理节点伸缩策略
        • 插件管理
        • 插件概述
        • CoreDNS域名解析
        • CCE容器存储(everest)
        • CCE节点故障检测
        • Kubernetes Dashboard
        • CCE集群弹性引擎
        • NGINX Ingress控制器
        • Kubernetes Metrics Server
        • CCE容器弹性引擎
        • prometheus(停止维护)
        • Kubernetes Web终端(停止维护)
        • CCE AI套件(NVIDIA GPU)
        • Volcano调度器
        • 节点本地域名解析加速
        • 云原生监控插件
        • 模板管理(helm)
        • 概述
        • 通过模板部署应用
        • Helm v2与Helm v3的差异及适配方案
        • 通过Helm v2客户端部署应用
        • 通过Helm v3客户端部署应用
        • Helm v2 Release转换成Helm v3 Release
        • 权限管理
        • CCE权限概述
        • 集群权限(IAM授权)
        • 命名空间权限(Kubernetes RBAC授权)
        • 示例:某部门权限设计及配置
        • CCE控制台的权限依赖
        • Pod安全配置
        • PodSecurityPolicy配置
        • Pod Security Admission配置
        • ServiceAccount Token安全性提升说明
        • 系统委托说明
        • 云审计
        • 云审计服务支持的CCE操作列表
        • 查看云审计日志
        • 旧版UI
        • 基本概念
        • 高危操作及解决方案
        • 集群管理
        • 集群概述
        • 集群生命周期
        • 购买混合集群
        • kubectl访问集群
        • Kubectl使用指南
        • 通过kubectl操作CCE集群
        • 通过kubectl配置kube-dns/CoreDNS高可用
        • Kubectl常用命令参考
        • 集群弹性扩容
        • 集群升级
        • 集群版本升级说明
        • 升级集群
        • 集群跨版本业务迁移
        • 管理集群
        • 删除集群
        • 集群休眠与唤醒
        • 配置管理
        • 获取集群证书
        • 集群监控
        • 集群管理权限控制
        • 节点管理
        • 节点概述
        • 购买节点
        • 纳管已有节点到集群
        • 登录节点
        • 节点监控
        • 管理节点标签
        • 同步节点信息
        • 重置节点
        • 删除节点
        • 节点关机
        • 节点滚动升级
        • 节点预留资源计算公式
        • 节点池管理
        • 节点池概述
        • 创建节点池
        • 管理节点池
        • 工作负载
        • 工作负载概述
        • 创建无状态负载(Deployment)
        • 创建有状态负载(StatefulSet)
        • 创建守护进程集(DaemonSet)
        • 创建普通任务(Job)
        • 创建定时任务(CronJob)
        • 管理容器组(Pod)
        • 管理工作负载和任务
        • 工作负载弹性伸缩
        • 容器设置
        • 如何使用第三方镜像
        • 设置容器规格
        • 设置容器生命周期
        • 设置容器启动命令
        • 设置容器健康检查
        • 设置环境变量
        • 采集容器标准输出日志
        • 采集容器内路径日志
        • 对接Prometheus实现自定义指标监控
        • 性能管理配置(性能瓶颈分析)
        • 健康检查UDP协议安全组规则说明
        • Kubernetes集群内置DNS配置说明
        • 亲和/反亲和性调度
        • 调度策略概述
        • 自定义调度策略
        • 节点亲和性
        • 工作负载亲和性
        • 工作负载反亲和性
        • 简易调度策略
        • 工作负载和可用区的亲和性
        • 工作负载和可用区的反亲和性
        • 工作负载和节点的亲和性
        • 工作负载和节点的反亲和性
        • 工作负载间的亲和性
        • 工作负载间的反亲和性
        • 网络管理
        • 网络概述
        • 网络模型
        • 网络模型概述
        • 容器隧道网络
        • VPC网络
        • Service
        • 集群内访问(ClusterIP)
        • 节点访问(NodePort)
        • 负载均衡(LoadBalancer)
        • 通过Kubectl命令行创建Ingress
        • Ingress
        • Ingress概述
        • 基本功能操作
        • NetworkPolicy
        • 存储管理
        • 存储概述
        • 本地磁盘存储
        • 云硬盘存储卷
        • 云硬盘存储卷使用说明
        • 使用云硬盘存储卷
        • 使用kubectl自动创建云硬盘
        • 使用kubectl对接已有云硬盘
        • 使用kubectl部署带云硬盘存储卷的工作负载
        • 文件存储卷
        • 文件存储卷使用说明
        • 使用文件存储卷
        • 极速文件存储卷
        • 极速文件存储卷使用说明
        • 使用极速文件存储卷
        • 快照与备份
        • 命名空间
        • 创建命名空间
        • 管理命名空间
        • 设置命名空间级的网络策略
        • 设置资源配额及限制
        • 配置中心
        • 创建配置项
        • 使用配置项
        • 创建密钥
        • 使用密钥
        • 模板市场
        • 模板概述
        • 准备模板包
        • 上传模板包
        • 通过模板创建工作负载
        • 使用弹性负载均衡
        • 插件管理
        • 插件概述
        • CoreDNS(系统资源插件,必装)
        • Everest(系统资源插件,必装)
        • storage-driver(系统资源插件,必装)
        • autoscaler
        • metrics-server
        • cce-hpa-controller
        • prometheus
        • gpu-beta
        • 弹性伸缩
        • 弹性伸缩概述
        • 工作负载弹性伸缩
        • 工作负载伸缩原理
        • 创建工作负载弹性伸缩(HPA)
        • 创建工作负载弹性伸缩(CustomedHPA)
        • 管理工作负载伸缩策略
        • 集群/节点弹性伸缩
        • 节点伸缩原理
        • 创建节点伸缩策略
        • 管理节点伸缩策略
        • 节点伸缩常见问题
        • 权限管理
        • CCE权限概述
        • 集群权限
        • 命名空间权限
        • 创建用户并授权使用CCE
        • 设置集群权限
        • 设置命名空间权限
        • CCE控制台的权限依赖
        • 云监控服务
        • 支持的监控指标
        • 设置告警规则
        • 查看监控指标
        • 云审计服务
        • 云审计服务支持的CCE操作列表
        • 查看云审计日志
        • 相关服务
        • 容器镜像服务
        • 应用运维管理
        • 最佳实践
        • 集群
        • 通过CCE搭建IPv4/IPv6双栈集群
        • 在CCE中实现高可用部署
        • 快速清理已删除节点上的CCE组件
        • 通过kubectl对接多个集群
        • 使用HPA+CA实现工作负载和节点联动弹性伸缩
        • 选择合适的节点数据盘大小
        • 网络
        • 在CCE的集群网络模型选择及区别
        • CCE集群的网络地址段规划实践
        • 迁移
        • 容器镜像迁移
        • 常见问题
        • 常见问题
        • 高频常见问题
        • 计费类
        • 集群类
        • 节点类
        • 节点池类
        • 工作负载类
        • 网络管理类
        • 存储管理类
        • 模板插件类
        • API&kubectl类
        • 域名DNS类
        • 权限类
        • 参考知识类
        • 文档下载
        • 相关协议
        • 云容器引擎产品服务协议
        • 云容器引擎产品服务等级协议
          无相关产品

          本页目录

          帮助中心 云容器引擎 用户指南 旧版UI 工作负载 容器设置 Kubernetes集群内置DNS配置说明
          Kubernetes集群内置DNS配置说明
          更新时间 2023-07-07 11:07:40
          • 新浪微博
          • 微信
            扫码分享
          • 复制链接
          最近更新时间: 2023-07-07 11:07:40
          下载本页

          Kubernetes集群内置DNS配置说明

          2023-07-07 03:07:40

          工作负载的DNS配置介绍

          Kubernetes集群内置DNS插件Kube-DNS/CoreDNS,为集群内的工作负载提供域名解析服务。业务在高并发调用场景下,如果使用到域名解析服务,可能会触及到Kube-DNS/CoreDNS的性能瓶颈,导致DNS请求概率失败,影响用户业务正常运行。在Kubernetes使用的过程中,在有些场景下工作负载的域名解析存在冗余的DNS查询,使得高并发场景更容易触及DNS的性能瓶颈。根据业务使用场景,对工作负载的DNS配置进行优化,能够在一定程度上减少DNS请求概率失败的问题。

          更多DNS相关信息请参见CoreDNS(系统资源插件,必装)或通过kubectl配置kube-dns/CoreDNS高可用。

          Linux系统域名解析文件配置项的介绍

          在Linux系统的节点或者容器里执行cat /etc/resolv.conf命令,能够查看到DNS配置,以Kubernetes集群的容器DNS配置为例:

          nameserver 10.247.x.x
          search default.svc.cluster.local svc.cluster.local cluster.local
          options ndots:5

          配置项说明:

          • nameserver:容器解析域名时查询的DNS服务器的IP地址列表。如果设置为10.247.x.x说明DNS对接到Kube-DNS/CoreDNS,如果是其他IP地址,则表示采用DNS或者用户自建的DNS。
          • search:定义域名的搜索域列表,当访问的域名不能被DNS解析时,会把该域名与搜索域列表中的域依次进行组合,并重新向DNS发起请求,直到域名被正确解析或者尝试完搜索域列表为止。对于CCE集群来说,容器的搜索域列表配置3个域,当解析一个不存在的域名时,会产生8次DNS查询,因为对于每个域名需要查询两次,分别是IPv4和IPv6。
          • options:定义域名解析配置文件的其他选项,常见的有timeout、attempts和ndots等等。Kubernetes集群容器的域名解析文件设置为options ndots:5,该参数的含义是当域名的“.”个数小于ndots的值,会先把域名与search搜索域列表进行组合后进行DNS查询,如果均没有被正确解析,再以域名本身去进行DNS查询。当域名的“.”个数大于或者等于ndots的值,会先对域名本身进行DNS查询,如果没有被正确解析,再把域名与search搜索域列表依次进行组合后进行DNS查询。如查询www.ctyun.cn域名时,由于该域名的“.”个数为2,小于ndots的值,所以DNS查询请求的顺序依次为:www.ctyun.cn.default.svc.cluster.local、www.ctyun.cn.svc.cluster.local、 www.ctyun.cn.cluster.local和www.ctyun.cn,需要发起至少7次DNS查询请求才能解析出该域名的IP。可以看出,这种配置在访问外部域名时,存在大量冗余的DNS查询,存在优化点。

          说明:完整的Linux域名解析文件配置项说明可以参考文档:http://man7.org/linux/man-pages/man5/resolv.conf.5.html。

          • Kubernetes集群应用的DNS相关配置项介绍

          前面已经分析过,应用在某些场景下会出现冗余的DNS查询。Kubernetes为应用提供了与DNS相关的配置选项,通过对应用进行DNS配置,能够在某些场景下有效地减少冗余的DNS查询,提升业务并发量。目前应用配置中与DNS相关的字段有dnsPolicy和dnsConfig。

          dnsPolicy字段说明:

          dnsPolicy字段是应用设置的DNS策略,默认值为“ClusterFirst”。基于dnsPolicy策略生成的域名解析文件会与dnsConfig设置的DNS参数进行合并,合并规则将在“dnsConfig字段说明”中说明,dnsPolicy当前支持四种参数值:

          −          ClusterFirst:应用对接Kube-DNS/CoreDNS(CCE集群的Kube-DNS/CoreDNS默认级联DNS)。这种场景下,容器既能够解析service注册的集群内部域名,也能够解析发布到互联网上的外部域名。由于该配置下,域名解析文件设置了search搜索域列表和ndots: 5,因此当访问外部域名和集群内部长域名(如kubernetes.default.svc.cluster.local)时,大部分域名都会优先遍历search搜索域列表,导致至少有6次无效的DNS查询,只有访问集群内部短域名(如kubernetes)时,才不存在无效的DNS查询。

          −          ClusterFirstWithHostNet:对于配置主机网络的应用,默认配置kubelet的“--resolv-conf”参数指向的域名解析文件(CCE集群在该配置下对接DNS)。当dnsPolicy设置为“ClusterFirstWithHostNet”时,应用对接Kube-DNS/CoreDNS。该配置下,容器的域名解析文件与“ClusterFirst”一致,也存在无效的DNS查询。

          −          Default:容器的域名解析文件使用kubelet的“--resolv-conf”参数指向的域名解析文件(CCE集群在该配置下对接DNS),没有配置search搜索域列表和options。该配置只能解析注册到互联网上的外部域名,无法解析集群内部域名,且不存在无效的DNS查询。

          −          None:Kubernetes v1.9(Beta in v1.10)中引入的新选项值。设置为None之后,必须设置dnsConfig,此时容器的域名解析文件将完全通过dnsConfig的配置来生成。

          dnsConfig字段说明:

          dnsConfig为应用设置DNS参数,设置的参数将合并到基于dnsPolicy策略生成的域名解析文件中。当dnsPolicy为“None”,应用的域名解析文件完全由dnsConfig指定;当dnsPolicy不为“None”时,会在基于dnsPolicy生成的域名解析文件的基础上,追加dnsConfig中配置的dns参数。

          −          nameservers:DNS的IP地址列表。当应用的dnsPolicy设置为“None”时,列表必须至少包含一个IP地址,否则此属性是可选的。列出的DNS的IP列表将合并到基于dnsPolicy生成的域名解析文件的nameserver字段中,并删除重复的地址。

          −          searches:域名查询时的DNS搜索域列表,此属性是可选的。指定后,提供的搜索域列表将合并到基于dnsPolicy生成的域名解析文件的search字段中,并删除重复的域名。Kubernetes最多允许6个搜索域。

          −          options:DNS的配置选项,其中每个对象可以具有name属性(必需)和value属性(可选)。该字段中的内容将合并到基于dnsPolicy生成的域名解析文件的options字段中,dnsConfig的options的某些选项如果与基于dnsPolicy生成的域名解析文件的选项冲突,则会被dnsConfig所覆盖。

          工作负载的DNS配置实践

          前面介绍了Linux系统域名解析文件以及Kubernetes为应用提供的DNS相关配置项,下面将举例介绍应用如何进行DNS配置。

          • 场景1 对接kubernetes内置的Kube-DNS/CoreDNS

          场景说明:

          这种方式适用于应用中的域名解析只涉及集群内部域名,或者集群内部域名+外部域名两种方式,应用默认采用这种配置。

          示例:

          apiVersion: v1
          kind: Pod
          metadata:
            namespace: default
            name: dns-example
          spec:
            containers:
            - name: test
              image: nginx
            dnsPolicy: ClusterFirst

          该配置下容器的域名解析文件将如下所示:

          nameserver 10.247.3.10
          search default.svc.cluster.local svc.cluster.local cluster.local
          options ndots:5

          • 场景2 直接对接DNS

          场景说明:

          这种方式适用于应用只访问注册到互联网的外部域名,该场景不能解析集群内部域名。

          示例:

          apiVersion: v1
          kind: Pod
          metadata:
            namespace: default
            name: dns-example
          spec:
            containers:
            - name: test
              image: nginx
            dnsPolicy: Default //使用kubelet的“--resolv-conf”参数指向的域名解析文件(CCE集群在该配置下对接DNS)

          该配置下容器的域名解析文件将如下所示:

          nameserver 10.125.x.x

          • 场景3 主机网络模式的应用对接Kube-DNS/CoreDNS

          场景说明:

          对于配置主机网络模式的应用,默认对接DNS,如果应用需要对接Kube-DNS/CoreDNS,需将dnsPolicy设置为“ClusterFirstWithHostNet”。

          示例:

          apiVersion: extensions/v1beta1
          kind: Deployment
          metadata:
            name: nginx
          spec:
            template:
              metadata:
                labels:
                  app: nginx
              spec:
                hostNetwork: true
                dnsPolicy: ClusterFirstWithHostNet
                containers:
                - name: nginx
                  image: nginx:1.7.9
                  ports:
                  - containerPort: 80

          该配置下容器的域名解析文件将如下所示:

          nameserver 10.247.3.10
          search default.svc.cluster.local svc.cluster.local cluster.local
          options ndots:5

          • 场景4 自定义应用的域名配置

          场景说明:

          用户可以完全自定义配置应用的域名解析文件,这种方式非常灵活,dnsPolicy和dnsConfig配合使用,几乎能够满足所有使用场景,如对接用户自建DNS的场景、串联多个DNS的场景以及优化DNS配置选项的场景等等。

          示例1:对接用户自建DNS

          该配置下,dnsPolicy为“None”,应用的域名解析文件完全根据dnsConfig配置生成。

          apiVersion: v1
          kind: Pod
          metadata:
            namespace: default
            name: dns-example
          spec:
            containers:
            - name: test
              image: nginx
            dnsPolicy: "None"
            dnsConfig:
              nameservers:
              - 10.2.3.4 //
          用户自建DNS的IP地址
              searches:
              - ns1.svc.cluster.local
              - my.dns.search.suffix
              options:
              - name: ndots
                value: "2"
              - name: timeout
                value: "3"

          该配置下容器的域名解析文件将如下所示:

          nameserver 10.2.3.4
          search ns1.svc.cluster.local my.dns.search.suffix
          options timeout:3 ndots:2

          示例2:修改域名解析文件的ndots选项,减少无效的DNS查询

          该配置下,dnsPolicy不为“None”,会在基于dnsPolicy生成的域名解析文件的基础上,追加dnsConfig中配置的dns参数。

          apiVersion: v1
          kind: Pod
          metadata:
            namespace: default
            name: dns-example
          spec:
            containers:
            - name: test
              image: nginx
            dnsPolicy: "ClusterFirst"
            dnsConfig:
              options:
              - name: ndots
                value: "2" //
          该配置会将基于ClusterFirst策略生成的域名解析文件的ndots:5参数改写为ndots:2

          该配置下容器的域名解析文件将如下所示:

          nameserver 10.247.3.10
          search default.svc.cluster.local svc.cluster.local cluster.local
          options ndots:2


          分享文章
          • 新浪微博
          • 微信
            扫码分享
          • 复制链接

          工作负载的DNS配置介绍

          Kubernetes集群内置DNS插件Kube-DNS/CoreDNS,为集群内的工作负载提供域名解析服务。业务在高并发调用场景下,如果使用到域名解析服务,可能会触及到Kube-DNS/CoreDNS的性能瓶颈,导致DNS请求概率失败,影响用户业务正常运行。在Kubernetes使用的过程中,在有些场景下工作负载的域名解析存在冗余的DNS查询,使得高并发场景更容易触及DNS的性能瓶颈。根据业务使用场景,对工作负载的DNS配置进行优化,能够在一定程度上减少DNS请求概率失败的问题。

          更多DNS相关信息请参见CoreDNS(系统资源插件,必装)或通过kubectl配置kube-dns/CoreDNS高可用。

          Linux系统域名解析文件配置项的介绍

          在Linux系统的节点或者容器里执行cat /etc/resolv.conf命令,能够查看到DNS配置,以Kubernetes集群的容器DNS配置为例:

          nameserver 10.247.x.x
          search default.svc.cluster.local svc.cluster.local cluster.local
          options ndots:5

          配置项说明:

          • nameserver:容器解析域名时查询的DNS服务器的IP地址列表。如果设置为10.247.x.x说明DNS对接到Kube-DNS/CoreDNS,如果是其他IP地址,则表示采用DNS或者用户自建的DNS。
          • search:定义域名的搜索域列表,当访问的域名不能被DNS解析时,会把该域名与搜索域列表中的域依次进行组合,并重新向DNS发起请求,直到域名被正确解析或者尝试完搜索域列表为止。对于CCE集群来说,容器的搜索域列表配置3个域,当解析一个不存在的域名时,会产生8次DNS查询,因为对于每个域名需要查询两次,分别是IPv4和IPv6。
          • options:定义域名解析配置文件的其他选项,常见的有timeout、attempts和ndots等等。Kubernetes集群容器的域名解析文件设置为options ndots:5,该参数的含义是当域名的“.”个数小于ndots的值,会先把域名与search搜索域列表进行组合后进行DNS查询,如果均没有被正确解析,再以域名本身去进行DNS查询。当域名的“.”个数大于或者等于ndots的值,会先对域名本身进行DNS查询,如果没有被正确解析,再把域名与search搜索域列表依次进行组合后进行DNS查询。如查询www.ctyun.cn域名时,由于该域名的“.”个数为2,小于ndots的值,所以DNS查询请求的顺序依次为:www.ctyun.cn.default.svc.cluster.local、www.ctyun.cn.svc.cluster.local、 www.ctyun.cn.cluster.local和www.ctyun.cn,需要发起至少7次DNS查询请求才能解析出该域名的IP。可以看出,这种配置在访问外部域名时,存在大量冗余的DNS查询,存在优化点。

          说明:完整的Linux域名解析文件配置项说明可以参考文档:http://man7.org/linux/man-pages/man5/resolv.conf.5.html。

          • Kubernetes集群应用的DNS相关配置项介绍

          前面已经分析过,应用在某些场景下会出现冗余的DNS查询。Kubernetes为应用提供了与DNS相关的配置选项,通过对应用进行DNS配置,能够在某些场景下有效地减少冗余的DNS查询,提升业务并发量。目前应用配置中与DNS相关的字段有dnsPolicy和dnsConfig。

          dnsPolicy字段说明:

          dnsPolicy字段是应用设置的DNS策略,默认值为“ClusterFirst”。基于dnsPolicy策略生成的域名解析文件会与dnsConfig设置的DNS参数进行合并,合并规则将在“dnsConfig字段说明”中说明,dnsPolicy当前支持四种参数值:

          −          ClusterFirst:应用对接Kube-DNS/CoreDNS(CCE集群的Kube-DNS/CoreDNS默认级联DNS)。这种场景下,容器既能够解析service注册的集群内部域名,也能够解析发布到互联网上的外部域名。由于该配置下,域名解析文件设置了search搜索域列表和ndots: 5,因此当访问外部域名和集群内部长域名(如kubernetes.default.svc.cluster.local)时,大部分域名都会优先遍历search搜索域列表,导致至少有6次无效的DNS查询,只有访问集群内部短域名(如kubernetes)时,才不存在无效的DNS查询。

          −          ClusterFirstWithHostNet:对于配置主机网络的应用,默认配置kubelet的“--resolv-conf”参数指向的域名解析文件(CCE集群在该配置下对接DNS)。当dnsPolicy设置为“ClusterFirstWithHostNet”时,应用对接Kube-DNS/CoreDNS。该配置下,容器的域名解析文件与“ClusterFirst”一致,也存在无效的DNS查询。

          −          Default:容器的域名解析文件使用kubelet的“--resolv-conf”参数指向的域名解析文件(CCE集群在该配置下对接DNS),没有配置search搜索域列表和options。该配置只能解析注册到互联网上的外部域名,无法解析集群内部域名,且不存在无效的DNS查询。

          −          None:Kubernetes v1.9(Beta in v1.10)中引入的新选项值。设置为None之后,必须设置dnsConfig,此时容器的域名解析文件将完全通过dnsConfig的配置来生成。

          dnsConfig字段说明:

          dnsConfig为应用设置DNS参数,设置的参数将合并到基于dnsPolicy策略生成的域名解析文件中。当dnsPolicy为“None”,应用的域名解析文件完全由dnsConfig指定;当dnsPolicy不为“None”时,会在基于dnsPolicy生成的域名解析文件的基础上,追加dnsConfig中配置的dns参数。

          −          nameservers:DNS的IP地址列表。当应用的dnsPolicy设置为“None”时,列表必须至少包含一个IP地址,否则此属性是可选的。列出的DNS的IP列表将合并到基于dnsPolicy生成的域名解析文件的nameserver字段中,并删除重复的地址。

          −          searches:域名查询时的DNS搜索域列表,此属性是可选的。指定后,提供的搜索域列表将合并到基于dnsPolicy生成的域名解析文件的search字段中,并删除重复的域名。Kubernetes最多允许6个搜索域。

          −          options:DNS的配置选项,其中每个对象可以具有name属性(必需)和value属性(可选)。该字段中的内容将合并到基于dnsPolicy生成的域名解析文件的options字段中,dnsConfig的options的某些选项如果与基于dnsPolicy生成的域名解析文件的选项冲突,则会被dnsConfig所覆盖。

          工作负载的DNS配置实践

          前面介绍了Linux系统域名解析文件以及Kubernetes为应用提供的DNS相关配置项,下面将举例介绍应用如何进行DNS配置。

          • 场景1 对接kubernetes内置的Kube-DNS/CoreDNS

          场景说明:

          这种方式适用于应用中的域名解析只涉及集群内部域名,或者集群内部域名+外部域名两种方式,应用默认采用这种配置。

          示例:

          apiVersion: v1
          kind: Pod
          metadata:
            namespace: default
            name: dns-example
          spec:
            containers:
            - name: test
              image: nginx
            dnsPolicy: ClusterFirst

          该配置下容器的域名解析文件将如下所示:

          nameserver 10.247.3.10
          search default.svc.cluster.local svc.cluster.local cluster.local
          options ndots:5

          • 场景2 直接对接DNS

          场景说明:

          这种方式适用于应用只访问注册到互联网的外部域名,该场景不能解析集群内部域名。

          示例:

          apiVersion: v1
          kind: Pod
          metadata:
            namespace: default
            name: dns-example
          spec:
            containers:
            - name: test
              image: nginx
            dnsPolicy: Default //使用kubelet的“--resolv-conf”参数指向的域名解析文件(CCE集群在该配置下对接DNS)

          该配置下容器的域名解析文件将如下所示:

          nameserver 10.125.x.x

          • 场景3 主机网络模式的应用对接Kube-DNS/CoreDNS

          场景说明:

          对于配置主机网络模式的应用,默认对接DNS,如果应用需要对接Kube-DNS/CoreDNS,需将dnsPolicy设置为“ClusterFirstWithHostNet”。

          示例:

          apiVersion: extensions/v1beta1
          kind: Deployment
          metadata:
            name: nginx
          spec:
            template:
              metadata:
                labels:
                  app: nginx
              spec:
                hostNetwork: true
                dnsPolicy: ClusterFirstWithHostNet
                containers:
                - name: nginx
                  image: nginx:1.7.9
                  ports:
                  - containerPort: 80

          该配置下容器的域名解析文件将如下所示:

          nameserver 10.247.3.10
          search default.svc.cluster.local svc.cluster.local cluster.local
          options ndots:5

          • 场景4 自定义应用的域名配置

          场景说明:

          用户可以完全自定义配置应用的域名解析文件,这种方式非常灵活,dnsPolicy和dnsConfig配合使用,几乎能够满足所有使用场景,如对接用户自建DNS的场景、串联多个DNS的场景以及优化DNS配置选项的场景等等。

          示例1:对接用户自建DNS

          该配置下,dnsPolicy为“None”,应用的域名解析文件完全根据dnsConfig配置生成。

          apiVersion: v1
          kind: Pod
          metadata:
            namespace: default
            name: dns-example
          spec:
            containers:
            - name: test
              image: nginx
            dnsPolicy: "None"
            dnsConfig:
              nameservers:
              - 10.2.3.4 //
          用户自建DNS的IP地址
              searches:
              - ns1.svc.cluster.local
              - my.dns.search.suffix
              options:
              - name: ndots
                value: "2"
              - name: timeout
                value: "3"

          该配置下容器的域名解析文件将如下所示:

          nameserver 10.2.3.4
          search ns1.svc.cluster.local my.dns.search.suffix
          options timeout:3 ndots:2

          示例2:修改域名解析文件的ndots选项,减少无效的DNS查询

          该配置下,dnsPolicy不为“None”,会在基于dnsPolicy生成的域名解析文件的基础上,追加dnsConfig中配置的dns参数。

          apiVersion: v1
          kind: Pod
          metadata:
            namespace: default
            name: dns-example
          spec:
            containers:
            - name: test
              image: nginx
            dnsPolicy: "ClusterFirst"
            dnsConfig:
              options:
              - name: ndots
                value: "2" //
          该配置会将基于ClusterFirst策略生成的域名解析文件的ndots:5参数改写为ndots:2

          该配置下容器的域名解析文件将如下所示:

          nameserver 10.247.3.10
          search default.svc.cluster.local svc.cluster.local cluster.local
          options ndots:2


          上一篇 :  健康检查UDP协议安全组规则说明
          下一篇 :  亲和/反亲和性调度
          建议与反馈
          以上内容是否对您有帮助?
          有 没有
          感谢您的反馈,您的支持是我们前进的动力!
          您的操作过于频繁,清稍后再试
          文档反馈

          建议您登录后反馈,可在建议与反馈里查看问题处理进度

          鼠标选中文档,精准反馈问题

          选中存在疑惑的内容,即可快速反馈问题,我们会跟进处理

          知道了

           文本反馈
          搜索
            无相关产品
            ©2025 天翼云科技有限公司版权所有 增值电信业务经营许可证A2.B1.B2-20090001
            公司地址:北京市东城区青龙胡同甲1号、3号2幢2层205-32室
            备案 京公网安备11010802043424号 京ICP备 2021034386号
            ©2025天翼云科技有限公司版权所有
            京ICP备 2021034386号
            备案 京公网安备11010802043424号
            增值电信业务经营许可证A2.B1.B2-20090001
            用户协议 隐私政策 法律声明