阿里云Kubernetes配置外部DNS的方式

简介: ### 问题起源 在通过容器化的道路上,很多实践都是运行在一个hybrid的环境里,也就是有部分程序在容器中,也有部分在VM或者物理机中,这个也是可以理解的,毕竟技术不能总放在一个篮子里,不然运维的人要崩溃的。

问题起源

在通过容器化的道路上,很多实践都是运行在一个hybrid的环境里,也就是有部分程序在容器中,也有部分在VM或者物理机中,这个也是可以理解的,毕竟技术不能总放在一个篮子里,不然运维的人要崩溃的。在这样的环境下,很多企业原有的应用都是通过DNS访问的,那么容器里的应用是如何访问到这些应用的呢?在阿里云的Kubernetes里默认配置使用了KubeDNS(在后面的版本将被CoreDNS代替,敬请期待),这个KubeDNS的上行DNS服务器,直接使用了阿里云的DNS服务,从而在默认情况下无法通过DNS的方式访问到企业的这些服务。

解决之道

阿里云的Kubernetes始终保持着对于Kuberbetes的一致性以及可移植性,所以可以直接参考Kubernetes的官方文档:https://kubernetes.io/docs/tasks/administer-cluster/dns-custom-nameservers/。主要思路是通过添加KubeDNS的上游DNS服务器来解决。这里具体演示如何在阿里云的Kubernetes设置上游DNS服务。

具体实践

Kubedns的组件基本介绍:

KubeDNS是Kubernetes的add-on组件,主要提供容器的DNS服务,他包含了一下组件在一个Pod中:

  • kubedns: 监听k8s api server,在内存中维护DNS的记录同时响应DNS的请求
  • dnsmasq: 增加DNS缓存来提高性能,查错主要通过这个组件来日志来判断。
  • sidecar: 提供了一个统一的健康检查接口来执行对其它上面两个组件的健康检查

Kubelet的相关配置

DNS和Kubelete相关的配置有两个:

  • --cluster-dns=<dns-service-ip> 指定容器使用的dns,因为使用了kubeDNS,这里配置的是kuebDNS的clusterip
  • --cluster-domain=<default-local-domain> k8s内部使用的域名后缀。默认值是:cluster.local。目前不建议更改这个值。

配置上游DNS来支持企业内服务DNS服务器

通过kubectl describe kube-dns -n kube-system可以看到,kubedns的启动参数需要使用--config-dir=/kube-dns-config来读取配置文件,而这个配置是通过一个名为kube-dns的configmap获取的,所以我们只需要配置这个configmap就好

kubectl create configmap/kube-dns -n kube-system 

kubectl edit configmap/kube-dns -n kube-system

然后在data下添加对应的内容,例如:

upstreamNameservers: '["8.8.8.8", "100.100.2.136"]'

这里"8.8.8.8"和 "100.100.2.136"就是上游对应的DNS服务器了。

这里需要注意的是,变更了configmap,容器是无法感知的,这个也是我对configmap吐槽最多的地方。要使这个配置生效,只能去delete对应kube-dns的容器,让其重启来获取对应新的配置:

kubectl delete pod/<kube-dns-xxx> -n kube-system

这样我们就配置好了对应的上游服务器DNS了,容器内的应用就可以通过域名的方法来访问集群外的其它企业应用了。

填坑小记:

  • 在阿里云中注意注意安全组的设置,因为kubeDNS是标准的DNS借口,所以主机间需要开放UDP 53端口,如果你发现可以 ping通ip,但是不能ping通域名,很可能就是这个问题了
  • 需要查看kubedns是否已经激活对应的上游dns,可以用如下命令查日志:kubectl logs <kubedns pod> -c dnsmasq -n kube-system
    如图:

Snip20180706_111.png

从而判断是否配置了上游的DNS服务器

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
存储 缓存 网络协议
阿里云特惠云服务器99元与199元配置与性能和适用场景解析:高性价比之选
2025年,阿里云长效特惠活动继续推出两款极具吸引力的特惠云服务器套餐:99元1年的经济型e实例2核2G云服务器和199元1年的通用算力型u1实例2核4G云服务器。这两款云服务器不仅价格亲民,而且性能稳定可靠,为入门级用户和普通企业级用户提供了理想的选择。本文将对这两款云服务器进行深度剖析,包括配置介绍、实例规格、使用场景、性能表现以及购买策略等方面,帮助用户更好地了解这两款云服务器,以供参考和选择。
|
8月前
|
存储 域名解析 弹性计算
阿里云上云流程参考:云服务器+域名+备案+域名解析绑定,全流程图文详解
对于初次通过阿里云完成上云的企业和个人用户来说,很多用户不仅是需要选购云服务器,同时还需要注册域名以及完成备案和域名的解析相关流程,从而实现网站的上线。本文将以上云操作流程为核心,结合阿里云的活动政策与用户系统梳理云服务器选购、域名注册、备案申请及域名绑定四大关键环节,以供用户完成线上业务部署做出参考。
|
域名解析 应用服务中间件 Shell
使用nps配置内网穿透加域名解析
使用nps配置内网穿透加域名解析
1190 77
|
10月前
|
人工智能 缓存 Kubernetes
ACK GIE配置建议
Gateway with Inference Extension是基于Kubernetes社区Gateway API及其扩展规范实现的增强型组件,支持四层/七层路由服务,并面向生成式AI推理场景提供负载均衡优化、服务管理简化等能力,适用于AI推理服务的高可用部署与性能优化。在不同的场景使用ACK Gateway with Inference Extension时,可能需要根据业务需求和高可用需要对网关和推理扩展进行不同的配置调整。本文主要介绍在实际业务场景中针对ACK GIE的配置建议,以获得更好的使用效果。
748 23
|
运维 API 开发工具
【阿里云】操作系统控制台操作体验与性能评测全解析
操作系统控制台是现代云计算环境中进行系统管理和运维的重要工具,提供系统概览、诊断、观测、管理等功能,支持API、SDK、CLI等管理方式。通过创建角色、系统配置和组件安装等操作,用户可以高效管理云端资源,提升操作系统的使用效率和稳定性。尤其适合需要高效管理操作系统的用户及学习云计算、网络管理的学生。建议增强自定义功能、优化性能报告和完善文档支持,以进一步提升用户体验。
439 21
【阿里云】操作系统控制台操作体验与性能评测全解析
|
Prometheus Kubernetes 监控
Kubernetes监控:Prometheus与AlertManager结合,配置邮件告警。
完成这些步骤之后,您就拥有了一个可以用邮件通知你的Kubernetes监控解决方案了。当然,所有的这些配置都需要相互照应,还要对你的Kubernetes集群状况有深入的了解。希望这份指南能帮助你创建出适合自己场景的监控系统,让你在首次发现问题时就能做出响应。
808 22
|
监控 Shell Linux
Android调试终极指南:ADB安装+多设备连接+ANR日志抓取全流程解析,覆盖环境变量配置/多设备调试/ANR日志分析全流程,附Win/Mac/Linux三平台解决方案
ADB(Android Debug Bridge)是安卓开发中的重要工具,用于连接电脑与安卓设备,实现文件传输、应用管理、日志抓取等功能。本文介绍了 ADB 的基本概念、安装配置及常用命令。包括:1) 基本命令如 `adb version` 和 `adb devices`;2) 权限操作如 `adb root` 和 `adb shell`;3) APK 操作如安装、卸载应用;4) 文件传输如 `adb push` 和 `adb pull`;5) 日志记录如 `adb logcat`;6) 系统信息获取如屏幕截图和录屏。通过这些功能,用户可高效调试和管理安卓设备。
10009 2
|
缓存 边缘计算 安全
阿里云CDN:全球加速网络的实践创新与价值解析
在数字化浪潮下,用户体验成为企业竞争力的核心。阿里云CDN凭借技术创新与全球化布局,提供高效稳定的加速解决方案。其三层优化体系(智能调度、缓存策略、安全防护)确保低延迟和高命中率,覆盖2800+全球节点,支持电商、教育、游戏等行业,帮助企业节省带宽成本,提升加载速度和安全性。未来,阿里云CDN将继续引领内容分发的行业标准。
759 7
|
设计模式 存储 安全
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析
结构型模式描述如何将类或对象按某种布局组成更大的结构。它分为类结构型模式和对象结构型模式,前者采用继承机制来组织接口和类,后者釆用组合或聚合来组合对象。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象结构型模式比类结构型模式具有更大的灵活性。 结构型模式分为以下 7 种: • 代理模式 • 适配器模式 • 装饰者模式 • 桥接模式 • 外观模式 • 组合模式 • 享元模式
885 140
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析

相关产品

  • 容器服务Kubernetes版
  • 推荐镜像

    更多