活动

天翼云最新优惠活动,涵盖免费试用,产品折扣等,助您降本增效!
热门活动
  • 618智算钜惠季 爆款云主机2核4G限时秒杀,88元/年起!
  • 免费体验DeepSeek,上天翼云息壤 NEW 新老用户均可免费体验2500万Tokens,限时两周
  • 云上钜惠 HOT 爆款云主机全场特惠,更有万元锦鲤券等你来领!
  • 算力套餐 HOT 让算力触手可及
  • 天翼云脑AOne NEW 连接、保护、办公,All-in-One!
  • 中小企业应用上云专场 产品组合下单即享折上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云生态大会
  • 天翼云中国行
天翼云
  • 活动
  • 智算服务
  • 产品
  • 解决方案
  • 应用商城
  • 合作伙伴
  • 开发者
  • 支持与服务
  • 了解天翼云
      • 文档
      • 控制中心
      • 备案
      • 管理中心
      文档中心

      云容器引擎

      云容器引擎

        • 产品动态
        • DeepSeek专题
        • DeepSeek专题导航
        • 图解:DeepSeek与公有云深度融合
        • 从基础设施到智能中枢:DeepSeek如何重塑公有云服务价值链
        • 高性能GPU云主机助力DeepSeek深度应用
        • 天翼云SD-WAN与DeepSeek超强联动,开启云上高效互联新时代
        • 实践指南:DeepSeek驱动高效能云生态
        • GPU云主机/弹性云主机:零基础搭建DeepSeek云端环境指南
        • GPU物理机:物理机搭建DeepSeek指南
        • SD-WAN跨境:SD-WAN助力DeepSeek模型定向加速
        • 智算容器:云容器引擎与DeepSeek融合实践
        • DeepSeek-R1蒸馏模型部署
        • 函数计算:天翼云函数计算与DeepSeek大模型
        • Q&A:典型问题解析与策略应对
        • 产品介绍
        • 产品定义
        • 产品优势
        • 版本对比
        • 产品功能
        • 功能特性
        • 应用场景
        • 基本概念
        • 使用限制
        • 智算版产品介绍
        • 智算版产品概述
        • 智算版计费说明
        • 智算版使用限制
        • 计费说明
        • 计费项及其计费方式
        • 价格
        • 快速入门
        • 创建一个应用集群
        • 订购集群
        • 查看集群
        • 退订集群
        • 创建一个无状态工作负载
        • 创建工作负载及服务
        • 查看容器实例事件
        • 查看容器实例日志
        • 查看容器实例监控
        • 使用容器镜像实例推送和拉取镜像
        • 前提条件
        • 获取实例地址、登录用户名和密码
        • 创建命名空间
        • 创建镜像仓库
        • 登录镜像仓库实例
        • 推送镜像
        • 拉取镜像
        • 使用容器镜像服务发布容器应用
        • 创建一个智算版容器集群
        • 订购智算版容器集群
        • 退订智算版容器集群
        • 用户指南
        • 高危操作及解决方案
        • 概览
        • 集群
        • 集群概述
        • 集群概览
        • 基本信息
        • 连接信息
        • 集群资源
        • Kubernetes版本发布记录
        • Kubernetes 1.31版本说明
        • Kubernetes 1.29版本说明
        • Kubernetes 1.27版本说明
        • Kubernetes 1.25版本说明
        • Kubernetes 1.23版本说明
        • 新建集群
        • 搭建IPv4/IPv6双栈集群
        • 集群安全组规划配置
        • iptables与IPVS如何选择
        • 创建高可用集群
        • 制作节点自定义镜像
        • 自定义集群APIServer证书SAN
        • 使用ServiceAccount Token卷投影
        • 连接集群
        • 删除集群
        • 升级集群
        • 节点与节点池
        • 节点容器运行时说明
        • 节点操作系统说明
        • 节点
        • 节点标签
        • 节点管理
        • 监控节点
        • 为节点扩容数据盘
        • 节点资源预留策略
        • 节点重置
        • 纳管节点
        • 节点异常问题排查
        • 虚拟节点
        • 指定ECS和ECI的资源分配
        • 节点池概述
        • 节点池
        • 升级节点池
        • 扩缩容节点池
        • 修复节点操作系统CVE漏洞
        • 自定义节点池kubelet配置
        • 节点池节点恢复
        • 节点池管理
        • 命名空间
        • 工作负载(新版)
        • 工作负载概述
        • 创建无状态负载(Deployment)
        • 创建有状态负载(StatefulSet)
        • 创建守护进程(DaemonSet)
        • 创建普通任务(Job)
        • 创建定时任务(CronJob)
        • 使用cube-volcano
        • 设置容器健康检查
        • 设置容器生命周期
        • 添加环境变量
        • 配置负载调度策略
        • 负载调度策略概述
        • 设置负载的节点选择器(nodeSelector)
        • 设置节点亲和调度(nodeAffinity)
        • 设置工作负载亲和/反亲和调度(podAffinity/podAntiAffinity)
        • 配置负载容忍策略
        • 负载网络配置
        • 工作负载(旧版)
        • 无状态
        • 有状态
        • 守护进程
        • 任务
        • 定时任务
        • 容器组
        • 自定义资源
        • 设置容器规格
        • 设置调度策略
        • 网络
        • 网络概述
        • 集群网络概述
        • Service
        • Ingress
        • 服务发现DNS
        • 容器网络插件
        • Calico网络插件
        • Cubecni网络插件
        • 使用Cubecni网络插件
        • 为Pod配独占网卡和固定IP及独立子网、安全组
        • Service管理
        • Service概述
        • LoadBalancer类型Service
        • 通过Annotation配置负载均衡类型的服务
        • Ingress管理
        • Ingress概述
        • NGINX Ingress Controller
        • IngressFAQ
        • Ingress常见错误信息及故障排查方法
        • 服务发现DNS
        • DNS概述
        • CoreDNS介绍
        • DNS策略
        • NodeLocal DNSCache加速
        • DNS FAQ
        • DNS最佳实践
        • POD联网使用案例
        • 配置管理
        • 配置项
        • 保密字典
        • 镜像拉取凭证
        • 应用管理
        • 应用发布
        • 应用灰度发布
        • 应用原地升级
        • Pod异常问题排查
        • 存储
        • 存储概述
        • cstor-csi插件
        • 云硬盘存储(CT-EVS)
        • 云硬盘概述
        • 使用云盘动态存储卷
        • 使用云盘静态存储卷
        • 快照与备份
        • 弹性文件存储(CT-SFS)
        • 弹性文件概述
        • 使用SFS动态存储卷
        • 使用SFS静态存储卷
        • 对象存储(CT-ZOS)
        • 对象存储概述
        • 使用ZOS动态存储卷
        • 使用ZOS静态存储卷
        • 本地存储
        • 本地存储概述
        • 使用HostPath存储卷
        • 使用LocalPV动态存储卷
        • 使用LocalPV静态存储卷
        • 使用LVM动态存储卷
        • 并行文件(CT-HPFS)
        • 并行文件概述
        • 使用HPFS动态存储卷
        • 使用HPFS静态存储卷
        • 海量文件
        • 海量文件概述
        • 使用OceanFS动态存储卷
        • 使用OceanFS静态存储卷
        • 存储FAQ-CSI
        • 插件
        • 插件概述
        • 插件市场
        • 插件实例
        • 插件FAQ
        • 安全管理
        • 角色
        • 子账号授权
        • RBAC授权
        • 容器安全策略
        • 运维管理
        • 监控
        • Pod 水平自动扩缩(HPA)
        • 黑盒监控
        • 基础资源监控
        • 集群拓扑监控
        • 指标告警
        • 日志
        • 开启APIServer审计日志
        • 事件中心
        • 集群巡检
        • 故障诊断
        • 故障诊断概述
        • Service诊断
        • 节点诊断
        • Pod诊断
        • Ingress诊断
        • 集群备份
        • ETCD备份
        • 集群备份
        • 集群定时备份
        • ETCD备份保存到对象存储
        • 模板市场
        • 模板市场
        • 模板实例
        • 弹性伸缩
        • 弹性伸缩概述
        • 工作负载弹性伸缩
        • 容器定时伸缩(CronHPA)
        • 容器水平伸缩(HPA)
        • 容器垂直伸缩(VPA)
        • 节点弹性伸缩
        • 节点伸缩原理
        • 启用节点自动伸缩
        • 节点弹性伸缩策略
        • 调度
        • 任务调度
        • 使用Gang scheduling
        • 使用CPU拓扑感知调度
        • 在离线混部
        • 在离线混部概述
        • 在离线混部插件安装与卸载
        • 在离线应用优先级管理
        • 超卖调度与离线应用CPU压制
        • 高优先级应用的CPU独占与隔离
        • 容器磁盘读写限速
        • 容器网络限速
        • 智算版集群
        • 节点管理
        • 智算控制台
        • 智算套件
        • 任务调度策略
        • AI负载调度
        • GPU共享调度
        • 装箱调度(Binpack)
        • Gang Scheduling调度
        • GPU资源监控面板
        • 配置AK/SK
        • 配置HPFS
        • 最佳实践
        • 客户案例
        • 某交投能源充电桩项目
        • 某量子云平台迁移项目
        • 迁移
        • 将K8S集群迁移到云容器引擎集群
        • 容灾
        • 应用高可用部署推荐
        • 集群高可靠推荐配置
        • 安全
        • 密钥Secret的安全使用
        • 集群
        • 集群规格推荐规划
        • 搭建IPv4/IPv6双栈集群
        • 通过kubectl连接多集群
        • 节点和节点池
        • 操作系统升级
        • 使用等保加固版本CTyunOS镜像
        • 节点池最佳实践
        • 存储
        • 存储卷
        • 容器化Web访问MySQL
        • 自定义存储资源对象
        • 网络
        • 集群网络地址段规划实践
        • 负载均衡
        • 会话保持
        • Ingress
        • 如何将Ingress服务暴露到公网
        • CoreDNS配置优化实践
        • Cubecni插件扩容Pod子网
        • 集群安全组规则配置
        • 容器内获取客户端源IP
        • ELB访问控制配置
        • 工作负载
        • 使用容器镜像服务发布应用
        • 发布
        • 服务发布
        • Service实现灰度发布和蓝绿发布
        • Nginx Ingress实现灰度发布和蓝绿发布
        • 容器
        • 合理分配容器资源
        • 获取容器Core Dump
        • 容器升级业务不中断
        • 容器与节点时区同步
        • 容器中域名解析的最佳实践
        • 使用hostAliases配置Pod /etc/hosts
        • x86和ARM镜像的混合部署
        • 通过特权容器配置内核参数
        • 权限
        • 集群命名空间RBAC授权
        • 通过配置kubeconfig文件实现集群权限精细化管理
        • 智算版集群
        • PyTorch 分布式训练任务
        • OpenSora 推理生成视频
        • API参考
        • API使用说明
        • 附录
        • 云容器引擎资源池
        • 如何获取接口URI中参数
        • password字段加密的方法
        • 节点规格和节点镜像
        • 常见问题
        • 计费
        • 订购
        • 节点
        • 集群
        • 工作负载
        • Pod异常问题排查
        • 启动实例失败时的重试机制是怎样的?
        • 存储管理
        • API&kubectl
        • 用户访问集群API Server的方式有哪些?
        • 如果不配置集群管理权限,是否可以使用kubectl命令呢?
        • 网络
        • Ingress相关问题
        • Service相关问题
        • 监控
        • 域名DNS
        • DNS解析异常问题排查
        • 其他
        • 节点NTP时间不同步怎么排查?
        • 节点已经绑定EIP,仍无法访问公网yum源进行安装更新?
        • 接入集群如何通过IPv6接入管控实例
        • 视频专区
        • 文档下载
        • 操作手册
        • 相关协议
        • 服务协议
        • 服务等级协议
          无相关产品

          本页目录

          帮助中心云容器引擎常见问题域名DNSDNS解析异常问题排查
          DNS解析异常问题排查
          更新时间 2025-01-08 18:51:22
          • 新浪微博
          • 微信
            扫码分享
          • 复制链接
          最近更新时间: 2025-01-08 18:51:22
          分享文章
          • 新浪微博
          • 微信
            扫码分享
          • 复制链接
          本节介绍了: Pod内DNS解析异常的诊断流程、排查思路、常见解决方案和排查方法。

          诊断流程的基本概念

          • 集群内部域名:CoreDNS会将集群中的服务暴露为集群内部域名,默认以.cluster.local结尾,这类域名的解析通过CoreDNS内部缓存完成,不会从上游DNS服务器查询。

          • VPC、地域内部域名:在VPC、地域内DNS服务器中注册的天翼云各产品内部服务域名,默认以.cnsp-internal.ctyun.cn结尾,这类域名通常与地域、VPC相关,由CoreDNS的上游DNS服务器负责解析,CoreDNS仅做解析请求转发。

          • 公网域名:在第三方DNS服务商、天翼云DNS云解析等产品注册的权威解析,这类域名由CoreDNS的上游DNS服务器负责解析,CoreDNS仅做解析请求转发。

          • 业务Pod:部署在Kubernetes集群中的容器Pod,特指非Kubernetes自身系统组件的容器。

          • 使用CoreDNS的业务Pod:容器内DNS服务器地址为CoreDNS的Service IP(查看容器/etc/resolv.conf文件得到的DNS服务器地址与CoreDNS的Service IP相同)。

          • 使用NodeLocal DNSCache的业务Pod:集群中安装了NodeLocal DNSCache插件后,通过自动或手动方式注入DNSConfig的业务Pod。这类Pod在解析域名时,会优先访问本地缓存组件。在访问本地缓存组件不通或无DNS缓存记录时,会再次访问CoreDNS提供的kube-dns服务。

          异常诊断流程

          检查业务Pod的DNS配置

          #以default命名空间的nginx容器为例
          #查看nginx容器的YAML配置,并确认DNSPolicy字段是否符合预期。
          kubectl get pod nginx-xxxxxxxxx-xxxxx -n default -o yaml
          
          #当DNSPolicy符合预期时,可以进一步进入Pod容器中,查看实际生效的DNS配置。
          
          #通过bash命令进入nginx容器,若bash不存在可使用sh代替。
          kubectl exec -it nginx-xxxxxxxxx-xxxxx -n default bash
          
          #进入容器后,可以查看DNS配置,nameserver后面为DNS服务器地址。
          cat /etc/resolv.conf

          检查业务Pod的DNS配置

          DNS Policy示例如下所示

          apiVersion: v1
          kind: Pod
          metadata:
            name: nginx-xxxxxxxxx-xxxxx
            namespace: default
          spec:
            containers:
            - image: <container-image>
              name: <container-name>
          
          #默认场景下的DNS Policy。
            dnsPolicy: ClusterFirst
          #使用了NodeLocal DNSCache时的DNS Policy。
            dnsPolicy: None
            dnsConfig:
              nameservers:
              - 192.168.0.10
              - 10.96.0.10
              options:
              - name: ndots
                value: "3"
              - name: timeout
                value: "1"
              - name: attempts
                value: "2"
              searches:
              - default.svc.cluster.local
              - svc.cluster.local
              - cluster.local
          
            securityContext: {}
            serviceAccount: default
            serviceAccountName: default
            terminationGracePeriodSeconds: 30
          DNSPolicy字段值使用的DNS服务器
          ClusterFirst此为DNSPolicy默认值,Pod会将CoreDNS提供的kube-dns服务IP作为DNS服务器。开启HostNetwork的Pod,如果选择ClusterFirst模式,效果等同于Default模式。
          ClusterFirstWithHostNet开启HostNetwork的Pod,如果选择ClusterFirstWithHostNet模式,效果等同于ClusterFirst。
          None配合DNSConfig字段,可用于自定义DNS服务器和参数。在NodeLocal DNSCache开启注入时,DNSConfig会将DNS服务器指向本地缓存IP及CoreDNS提供的kube-dns服务IP。
          Default只适用于不需要访问集群内部服务的场景。Pod创建时会从主机节点/etc/resolv.conf文件继承DNS服务器列表。

          检查CoreDNS Pod运行状态

          执行以下命令,查看容器组信息

          # kubectl -n kube-system get pod -o wide -l k8s-app=kube-dns
          NAME                      READY   STATUS    RESTARTS   AGE   IP            NODE
          coredns-xxxxxxxxx-xxxxx   1/1     Running   0          2h   172.16.6.53   192.168.0.1

          执行以下命令,查看Pod的实时资源使用情况(依赖于metrics-server采集相关数据,需要事先安装监控组件cube-metrics-server)。

          # kubectl -n kube-system top pod -l k8s-app=kube-dns
          NAME                      CPU(cores)   MEMORY(bytes)
          coredns-xxxxxxxxx-xxxxx   4m           20Mi

          如果Pod不处于Running状态,可以通过kubectl -n kube-system describe podcoredns-xxxxxxxxx-xxxxx命令,查询问题原因。

          检查CoreDNS运行日志

          执行以下命令,输出CoreDNS Pod最新的500行日志和对应的日志时间。

          # kubectl -n kube-system logs --tail=500 --timestamps coredns-xxxxxxxxx-xxxxx

          检查CoreDNS DNS查询请求日志

          DNS查询请求日志仅会在开启CoreDNS的log插件后,才会打印到容器日志中。

          开启log插件的具体操作如下:

          通过控制台或命令行工具编辑kube-system命名空间下的coredns configmap,增加log模块

          # kubectl edit configmap -n kube-system coredns
            Corefile: |
              .:53 {
                  errors
                  log
                  health {
                     lameduck 15s
                  }
                  ready
                  kubernetes cluster.local in-addr.arpa ip6.arpa {
                    pods insecure
                    fallthrough in-addr.arpa ip6.arpa
                    ttl 30
                  }
                  prometheus :9153
                  forward . /etc/resolv.conf {
                        prefer_udp
                  }
                  cache 30
                  loop
                  reload
                  loadbalance
              }

          检查CoreDNS Pod的网络连通性

          • 登录CoreDNS Pod所在集群节点。

          • 执行ps aux | grep coredns,查询CoreDNS的进程ID。

          • 执行nsenter -t <pid> -n bash,进入CoreDNS所在容器网络命名空间,其中pid为上一步得到的进程ID。

          • 测试网络连通性

            • 运行telnet <apiserver_clusterip> 6443,测试Kubernetes API Server的连通性。其中apiserver_clusterip为default命名空间下Kubernetes服务的IP地址,默认为10.96.0.1。

            • 运行dig <domain> @<upstream_dns_server_ip>,测试CoreDNS Pod到上游DNS服务器的连通性。其中domain为测试域名,upstream_dns_server_ip为上游DNS服务器地址。

          • 常见问题

            现象原因处理方案
            业务Pod无法通过CoreDNS服务IP解析机器负载高、kube-proxy没有正常运行、安全组没有放开UDP协议53端口等。检查安全组是否放开UDP 53端口,若已放开请提交工单排查。
            业务Pod无法连通CoreDNS容器副本容器网络异常或安全组没有放开ICMP。检查安全组是否放开ICMP,若已放开请提交工单排查。
            业务Pod无法通过CoreDNS容器IP解析机器负载高、安全组没有放开UDP协议53端口等。检查安全组是否放开UDP 53端口,若已放开请提交工单排查。

          检查业务Pod到CoreDNS的网络连通性

          选择以下任意一种方式,进入客户端Pod容器网络。

          方法一(适合镜像本身含有sh、ping等命令的Pod):

          使用kubectl exec -it -n <命名空间> <PodName> /bin/sh命令进入到Pod中。

          方法二(适合镜像本身不含常用命令、且稳定运行的Pod):

          登录业务Pod所在集群节点。

          执行ps aux | grep <业务进程名>命令,查询业务容器的进程ID。

          执行nsenter -t <pid> -n bash命令,进入业务Pod所在容器网络命名空间。其中pid为上一步得到的进程ID。

          方法三:(适合频繁重启的Pod)

          如果运行时是docker:登录业务Pod所在集群节点。

          执行docker ps -a | grep <业务容器名>命令,查询k8s_POD_ 开头、使用镜像为pause的沙箱容器,记录容器ID。

          执行docker inspect <沙箱容器 ID> | grep netns命令,查询/var/run/docker/netns/xxxx的容器网络命名空间路径。

          执行nsenter -n<netns 路径> bash命令,进入容器网络命名空间。(其中netns 路径为上一步得到的路径,且-n和<netns 路径>之间不加空格)。

          如果运行时是containerd:登录业务Pod所在集群节点,执行crictl ps -a | grep <PodName>根据Pod名称查看容器id。

          根据查到的容器id,执行ctr -n k8s.io container ls  | grep <容器id>查找完整的容器id(ctr使用的时候,必须写全,而docker对于id的长度没要求)

          执行ctr -n k8s.io container info <完整的容器id> | grep -i pid -C 3获取业务Pod中pause容器的pid

          path里面的数字即为pause容器的pid。

          执行nsenter -t <pid> -n 进入容器网络命名空间。

          进入容器网络命名空间后,测试网络连通性。

          执行dig <domain> @<kube_dns_svc_ip>命令,测试业务Pod到CoreDNS服务kube-dns解析查询的连通性。其中<domain>为测试域名,<kube_dns_svc_ip>为kube-system命名空间中kube-dns的服务IP。默认为10.96.0.10。

           

          执行ping <coredns_pod_ip>命令,测试业务Pod到CoreDNS容器副本的连通性。其中<coredns_pod_ip>为kube-system命名空间中CoreDNS Pod的IP。

          执行dig <domain> @<coredns_pod_ip>命令,测试业务Pod到CoreDNS容器副本解析查询的连通性。其中<domain>为测试域名,<coredns_pod_ip>为kube-system命名空间中CoreDNS Pod的IP。

          常见问题

          现象原因处理方案
          业务Pod无法通过CoreDNS服务IP解析机器负载高、kube-proxy没有正常运行、安全组没有放开UDP协议53端口等。检查安全组是否放开UDP 53端口,若已放开请提交工单排查。
          业务Pod无法连通CoreDNS容器副本容器网络异常或安全组没有放开ICMP。检查安全组是否放开ICMP,若已放开请提交工单排查。
          业务Pod无法通过CoreDNS容器IP解析机器负载高、安全组没有放开UDP协议53端口等。检查安全组是否放开UDP 53端口,若已放开请提交工单排查。

          当无法定位问题时,需要抓包进行辅助诊断。在正常情况下,抓包对业务无影响,仅会增加小部分的CPU负载和磁盘写入。

          • 登录出现异常的业务Pod、CoreDNS Pod所在节点。

          • 在ECS(非容器内)执行以下命令 tcpdump -i any port 53 -C 20 -W 200 -w /tmp/client_dns.pcap ,可以将最近所有的53端口信息抓取到文件中。以上命令会对抓取到的包进行rotate,最多可以写200个20 MB的.pcap文件。

          • 结合业务日志的报错定位到精准的报错时间的报文信息。

          集群外部域名解析异常

          问题现象

          业务Pod可以正常解析集群内部域名,但无法解析某些集群外部域名。

          问题原因

          上游服务器域名解析返回异常。

          解决方案

          修改CoreDNS配置文件corefile,开启log模块以打印查询请求日志,检查CoreDNS DNS查询请求日志。

          常见请求日志

          CoreDNS接收到请求并回复客户端后会打印一行日志,示例如下:

          # 其中包含状态码RCODE NOERROR,代表解析结果正常返回。
          [INFO] 172.20.2.25:44525 - 36259 "A IN nginx.default.svc.cluster.local. udp 56 false 512" NOERROR qr,aa,rd 110 0.000116946s

          常见返回码RCODE

          返回码RCODE含义原因
          NXDOMAIN域名不存在容器内请求域名时,会被拼接上search后缀,若拼接的结果域名不存在,则会出现该请求码。如果确认日志中请求的域名内容存在,则说明存在异常。
          SERVFAIL上游服务器异常常见于无法连接上游DNS服务器等情况。
          REFUSED拒绝应答常见于CoreDNS配置或集群节点/etc/resolv.conf文件指向的上游DNS服务器无法处理该域名的情况,请排查CoreDNS配置文件。

          当CoreDNS DNS查询请求日志中显示集群外部域名返回为NXDOMAIN、SERVFAIL、REFUSED时,说明CoreDNS的上游DNS服务器返回异常。请提交工单排查。

          StatefulSets Pod域名无法解析

          问题现象

          Headless服务无法通过Pod域名解析。

          问题原因

          StatefulSets Pod YAML中ServiceName必须和其暴露SVC的名字一致,否则无法访问Pod域名(例如pod.headless-svc.ns.svc.cluster.local),只能访问到服务域名(例如headless-svc.ns.svc.cluster.local)。

          解决方案

          修改StatefulSets Pod YAML中ServiceName名称,确保和其暴露SVC的名字一致。

          CoreDNS Pod负载高

          问题现象

          部分节点或全部节点接入CoreDNS的业务,Pod解析域名的延迟增加、概率性或持续性失败。

          检查CoreDNS Pod运行状态发现各副本CPU、Memory使用量接近其资源限制。

          问题原因

          由于CoreDNS副本数不足、业务请求量高等情况导致的CoreDNS负载高。

          解决方案

          考虑采用NodeLocal DNSCache缓存方案,提升DNS解析性能,降低CoreDNS负载。

          适当扩充CoreDNS副本数。

          常见请求日志

          CoreDNS Pod负载不均

          问题现象

          部分接入CoreDNS的业务Pod解析域名的延迟增加、概率性或持续性失败。

          检查CoreDNS Pod运行状态发现各副本CPU使用量负载不均衡。CoreDNS副本数少于两个,或多个CoreDNS副本位于同节点上。

          问题原因

          由于CoreDNS副本调度不均、Service亲和性设置导致CoreDNS Pod负载不均衡。

          解决方案

          扩容并打散CoreDNS副本到不同的节点上。参考:合理分配CoreDNS副本运行的位置。

          负载不均衡时,可禁用kube-dns服务的亲和性属性。参考:关闭kube-dns服务的session亲和性配置。

          合理分配CoreDNS副本运行的位置

          建议您在部署CoreDNS副本时,应将CoreDNS副本打散在不同可用区、不同集群节点上,避免单节点、单可用区故障。CoreDNS默认配置了按节点的弱反亲和性,可能会因为节点资源不足导致部分或全部副本部署在同一节点上,如果遇到这种情况,请删除Pod重新触发其调度来调整。

          CoreDNS所运行的集群节点应避免CPU、内存用满的情况,否则会影响域名解析的QPS和响应延迟。当集群节点条件允许时,可以考虑使将CoreDNS调度至独立的集群节点上,以提供稳定的域名解析服务。

          手动扩容副本数

          当集群节点数长时间较为固定时,您可以通过以下命令扩容CoreDNS副本数,如:扩容副本数为3。

          kubectl scale --replicas=3 deployment/coredns -n kube-system

          关闭kube-dns服务的session亲和性配置

          session亲和性配置可能导致CoreDNS不同副本间存在较大负载差异,建议按以下步骤关闭。

          控制台操作方式

          • 登录云容器引擎管理控制台。

          • 在控制台左侧导航栏中,点击集群。

          • 在集群列表页面中,点击目标集群名称。

          • 在集群管理页左侧导航栏中,选择网络 > 服务。

          • 在kube-system命名空间下,点击服务kube-dns右侧的查看YAML。

          • 如果发现sessionAffinity字段为None,则无需进行以下步骤。如果发现sessionAffinity为ClientIP,则进行以下步骤。

          • 点击编辑按钮,删除sessionAffinity、sessionAffinityConfig及所有子键,然后点击保存。

            # 删除以下所有内容。
            sessionAffinity: ClientIP
              sessionAffinityConfig:
                clientIP:
                  timeoutSeconds: 10800
          • 再次点击服务kube-dns右侧的查看YAML,校验sessionAffinity字段是否为None,为None则Kube-DNS服务变更成功。

          命令行方式

          • 执行以下命令查看kube-dns服务配置信息。

          kubectl -n kube-system get svc kube-dns -o yaml
          • 如果发现sessionAffinity字段为None,则无需执行以下步骤。如果发现sessionAffinity为ClientIP,则执行以下步骤:打开并编辑名为kube-dns的服务。

          kubectl -n kube-system edit service kube-dns
          • 删除sessionAffinity相关设置(sessionAffinity、sessionAffinityConfig及所有子键),并保存退出。

          # 删除以下所有内容。
          sessionAffinity: ClientIP
            sessionAffinityConfig:
              clientIP:
                timeoutSeconds: 10800
          •  修改完成后,再次运行以下命令查看sessionAffinity字段是否为None,为None则Kube-DNS服务变更成功。

          kubectl -n kube-system get svc kube-dns -o yaml

          A记录和AAAA记录并发解析异常

          问题现象

          接入CoreDNS的业务Pod解析域名概率性失败。

          从抓包或检查CoreDNS DNS查询请求日志可以发现,A和AAAA通常在同一时间的出现,并且请求的源端口一致。

          问题原因

          并发A和AAAA的DNS请求触发Linux内核Conntrack模块缺陷,导致UDP报文丢失。

          解决方案

          考虑采用NodeLocal DNSCache缓存方案,提升DNS解析性能,降低CoreDNS负载。

          CentOS、Ubuntu等基础镜像,可以通过options timeout:2 attempts:3 rotate single-request-reopen等参数优化。

          如果容器镜像是以Alpine制作的,建议更换基础镜像。

          PHP类应用短连接解析问题较多,如果使用的是PHP Curl的调用,可以使用CURL_IPRESOLVE_V4参数仅发送IPv4解析。

          NodeLocal DNSCache未生效

          问题现象

          NodeLocal DNSCache没有流量进入,所有请求仍在CoreDNS上。

          问题原因

          未配置DNSConfig注入,业务Pod实际仍配置了CoreDNS kube-dns服务IP作为DNS服务器地址。

          业务Pod采用Alpine作为基础镜像,Alpine基础镜像会并发请求所有nameserver,包括本地缓存和CoreDNS。

          解决方案

          配置DNSConfig自动注入。

          如果容器镜像是以Alpine制作的,建议更换基础镜像。

          文档反馈

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

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

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

          知道了

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