Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >istio 常见问题: 启用 Smart DNS 后解析失败

istio 常见问题: 启用 Smart DNS 后解析失败

原创
作者头像
imroc
发布于 2021-05-04 14:10:54
发布于 2021-05-04 14:10:54
6.7K0
举报

本文摘自 istio 学习笔记

问题描述

在启用了 istio 的 Smart DNS (智能 DNS) 后,我们发现有些情况下 DNS 解析失败,比如:

  • 基于 alpine 镜像的容器内解析 dns 失败。
  • grpc 服务解析 dns 失败。

原因

Smart DNS 初期实现存在一些问题,响应的 DNS 数据包格式跟普通 DNS 有些差别,走底层库 glibc 解析没问题,但使用其它 dns 客户端可能就会失败:

  • alpine 镜像底层库使用 musl libc,解析行为跟 glibc 有些不一样,musl libc 在这种这种数据包格式异常的情况会导致解析失败,而大多应用走底层库解析,导致大部分应用解析失败。
  • 基于 c/c++ 的 grpc 框架的服务,dns 解析默认使用 c-ares 库,没有走系统调用让底层库解析,c-ares 在这种数据包异常情况,部分场景会解析失败。

修复

在 istio 1.9.2 的时候修复了这个问题,参考关键 PR #31251 以及其中一个 issue

规避

如果暂时无法升级 istio 到 1.9.2 以上,可以通过以下方式来规避:

  • 基础镜像从 alpine 镜像到其它镜像 (其它基础镜像底层库基本都是 glibc)。
  • c/c++ 的 grpc 服务,指定 GRPC_DNS_RESOLVER 环境变量为 native,表示走底层库解析,不走默认的 c-ares 库。环境变量解释参考 GRPC 官方文档

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
如何解决 ERROR: Failed building wheel for lxml 问题:一键解决lxml编译失败问题
在使用 pip install lxml 或者依赖包含 lxml 的项目时,常常会遇到如下错误:
猫头虎
2025/05/12
2590
不要轻易使用 Alpine 镜像来构建 Docker 镜像,有坑!
第一部分着重介绍多阶段构建(multi-stage builds),因为这是镜像精简之路至关重要的一环。在这部分内容中,我会解释静态链接和动态链接的区别,它们对镜像带来的影响,以及如何避免那些不好的影响。中间会穿插一部分对 Alpine 镜像的介绍。链接:两个奇技淫巧,将 Docker 镜像体积减小 99%[1]
米开朗基杨
2020/05/26
27.7K0
Kubernetes 网络疑难杂症排查分享
到目前为止,本人见到的最有诚意的 K8s 网络问题分享,而且还有小图片呢!迫不及待的申请了转载授权。
崔秀龙
2019/08/16
1.9K0
Kubernetes 网络疑难杂症排查分享
优雅!太优雅了!竟能如此顺滑攻破K8s疑难杂症!
👉腾小云导读 作者经常帮助用户解决各种 K8s 各类「疑难杂症」,积累了丰富经验。本文将分享几个网络相关问题的排查和解决思路,深入分析并展开相关知识,实用性较强。此外,本文几个情况是在使用 TKE 时遇到的。不同厂商的网络环境可能不一样,文中会对不同问题的网络环境进行说明。欢迎继续往下阅读。 👉看目录点收藏,随时涨技术 1 跨 VPC 访问 NodePort 经常超时 2 LB 压测 CPS 低 3 DNS 解析偶尔 5S 延时 4 Pod 访问另一个集群的 apiserver 有延时 5 DNS 解析异常
腾讯云开发者
2023/05/29
1.4K0
优雅!太优雅了!竟能如此顺滑攻破K8s疑难杂症!
k8s夺命的5秒DNS延迟
客户反馈从pod中访问服务时,总是有些请求的响应时延会达到5秒。正常的响应只需要毫秒级别的时延。
腾讯云原生
2020/02/14
9.5K1
TKE常见问题以及故障定位
建议:暂时没有完美解决方案,可通过 Pod 反亲和打散 client 避免流量集中规避
蒋经纬
2020/06/16
2.2K0
记一次持续三个月的 K8s DNS 排障过程
我主要是负责我们这边(灵雀云)容器网络的事情,我们有一个开源项目叫 Kube-OVN,可能有的人知道,但我今天不讲那块儿,做容器网络的话,会知道名义上我们是开发,但是可能一多半的时间都在排查问题。今天的话我就给大家介绍一下,我们利用 DeepFlow 来帮助我们排查了一个比较困难、困扰我们比较长时间问题的一个案例,希望对大家有一些启发。
我是阳明
2023/08/21
1.5K0
记一次持续三个月的 K8s DNS 排障过程
Kubernetes 踩坑分享: 部分 DNS 查询延迟
客户反馈从pod中访问服务时,总是有些请求的响应时延会达到5秒。正常的响应只需要毫秒级别的时延。
imroc
2019/06/20
8.1K0
gRPC 1.23.0 发布,Google高性能 RPC 框架
gRPC 1.23.0 发布了。gRPC 是 Google 开源的高性能、通用 RPC 框架,面向移动和 HTTP/2 设计,是由谷歌发布的首款基于 Protocol Buffers 的 RPC 框架。gRPC 基于 HTTP/2 标准设计,带来诸如双向流、流控、头部压缩、单 TCP 连接上的多复用请求等特性。这些特性使得其在移动设备上表现更好,更省电且节省空间占用。
Debian中国
2020/01/21
9730
Istio 运维实战系列(2):让人头大的『无头服务』-上
作者赵化冰,腾讯云高级工程师,Istio contributor,ServiceMesher管理委员,热衷于开源、网络和云计算。目前主要从事服务网格的开源和研发工作。 本系列文章将介绍用户从 Spring Cloud,Dubbo 等传统微服务框架迁移到 Istio 服务网格时的一些经验,以及在使用 Istio 过程中可能遇到的一些常见问题的解决方法。 什么是『无头服务』? 『无头服务』即 Kubernetes 中的 Headless Service。Service 是 Kubernetes 对后端一组提供
腾讯云原生
2020/09/21
3.7K0
Istio流量管理实现机制深度解析
Istio作为一个service mesh开源项目,其中最重要的功能就是对网格中微服务之间的流量进行管理,包括服务发现,请求路由和服务间的可靠通信。Istio实现了service mesh的控制面,并整合Envoy开源项目作为数据面的sidecar,一起对流量进行控制。
赵化冰
2022/08/01
1.9K0
Istio流量管理实现机制深度解析
精彩分享 | 欢乐游戏 Istio 云原生服务网格三年实践思考
吴连火,腾讯游戏专家开发工程师,负责欢乐游戏大规模分布式服务器架构。有十余年微服务架构经验,擅长分布式系统领域,有丰富的高性能高可用实践经验,目前正带领团队完成云原生技术栈的全面转型。 导语 欢乐游戏这边对 Istio 服务网格的引进,自 2019 开始,从调研到规模化落地,至今也已近三年。本文对实践过程做了一些思考总结,期望能给对网格感兴趣的同学们以参考。 在正文开始之前,先明确一下本文所说的服务网格(service mesh)概念 —— 基于 sidecar 通信代理,网状拓扑的后端架构级解决方案。目前
腾讯云原生
2022/05/13
7950
精彩分享 | 欢乐游戏 Istio 云原生服务网格三年实践思考
从Docker镜像构建演化史来了解多阶段构建的影响
现在很多开发者都会慢慢习惯在开发环境通过Docker来构建开发环境,有时候可能会有环境移植的问题,所以需要我们写好一套Dockerfile来构建相关的开发镜像,既然说到镜像,那我想问问大家了解Docker镜像的演变史吗?我们现在就来回顾一下吧。
云爬虫技术研究笔记
2019/11/05
8050
从Docker镜像构建演化史来了解多阶段构建的影响
利用bind实现内网域名解析走内网默认dns,其他域名解析走公网公共dns或自建dns
如果是非AD要用别的DNS,但又不想云平台的内网域名解析不了,那就添加内网域名解析到hosts或者参考如下方法配置。
Windows技术交流
2021/09/17
48.5K2
Java Cloud Native 的未来 Graal AOT 编译器
Java 这门语言与生俱来的显著特性就是“一次编译,到处运行”,这种功能得益于 JVM 平台的支持,Java 程序通常通过将其打包为 JAR 或 WAR 包,并依赖 JVM 和 Servlet 容器来运行。其底层运行时 JVM 采用 JIT(即时编译)模式来执行程序代码,JVM 会在运行时进行编译优化和动态执行代码,这通常会导致较高的内存占用。这样的好处是采用 JIT 可以热更新和热部署程序,并且 JVM 可以在运行期间对程序进行动态分析,来实时优化程序以达到最好的性能状态。
一大块芝士
2024/07/23
2930
Java Cloud Native 的未来 Graal AOT 编译器
石墨文档基于 Kubernetes 的微服务实践
在 2014 年 6 月 Google 开源了 Kubernetes 后,经过这几年的发展,已逐渐成为容器编排领域的事实标准, 可以称之为云原生时代的操作系统,它使得基础设施维护变得异常简单。在云原生时代,微服务依赖于 Kubernetes 的优势在哪,微服务的生命周期基于 Kubernetes 该如何实践呢?本文整理自石墨文档架构负责人彭友顺在 Gopher China Meetup 西安站的主题演讲《石墨文档基于 Kubernetes 的 Go 微服务实践(上篇)》。下篇会在近期整理出来,敬请期待。
深度学习与Python
2021/10/13
4570
Istio 0.8 的 Helm Chart 解析
儿童节期间,拖拉了一个多月的 Istio 0.8 正式发布了,这可能是 Istio 1.0 之前的最后一个 LTS 版本,意义重大。
崔秀龙
2019/07/23
7050
istio 常见异常分析
istio 支持多平台,不过 Istio 和 k8s 的兼容性是最优的,不管是设计理念,核心团队还是社区, 都有一脉相承的意思。但 istio 和 k8s 的适配并非完全没有冲突, 一个典型问题就是 istio 需要 k8s service 按照协议进行端口命名(port naming)。
钟华
2020/03/09
3.7K1
使用服务网格/Istio开发微服务2:应用开发
腾讯网格商店(Tencent Mesh Shop) 【账号:demo/111111】是一个购物网站示例。他使用服务网格技术进行部署,使用了多种编程语言,包括 java,go, nodejs, python, c# 等。
谢正伟
2020/05/25
1.7K0
使用服务网格/Istio开发微服务2:应用开发
【Tornado】协程队列和异步DNS解析器在Tornado项目里的实战表现已经运用详解
从队列中删除项目并将其返回。 返回可等待项目龙卷风。util在项目可用或引发after TimeoutError超时后解析。 超时可以是一个表示时间的数字(使用tornado.ioloop.ioloop.time,通常是time.time)datetime timedelta对象用于相对于当前时间的截止时间。指示先前排队的任务已完成。
上进小菜猪
2022/12/13
8420
推荐阅读
相关推荐
如何解决 ERROR: Failed building wheel for lxml 问题:一键解决lxml编译失败问题
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档