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

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: ### 问题起源 在通过容器化的道路上,很多实践都是运行在一个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服务器

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
1月前
|
供应链 安全 Cloud Native
阿里云飞天企业版获【可信云·容器平台安全能力】先进级认证
阿里云飞天企业版容器系列产品获中国信息通信研究院【可信云·容器平台安全能力】先进级认证,这是飞天企业版容器产品获得《等保四级PaaS平台》和《 云原生安全配置基线规范V2.0》之后,本年度再一次获得行业权威认可,证明飞天企业版的容器解决方案具备符合行业标准的最高等级容器安全能力。
阿里云飞天企业版获【可信云·容器平台安全能力】先进级认证
|
30天前
|
缓存 Kubernetes Docker
GitLab Runner 全面解析:Kubernetes 环境下的应用
GitLab Runner 是 GitLab CI/CD 的核心组件,负责执行由 `.gitlab-ci.yml` 定义的任务。它支持多种执行方式(如 Shell、Docker、Kubernetes),可在不同环境中运行作业。本文详细介绍了 GitLab Runner 的基本概念、功能特点及使用方法,重点探讨了流水线缓存(以 Python 项目为例)和构建镜像的应用,特别是在 Kubernetes 环境中的配置与优化。通过合理配置缓存和镜像构建,能够显著提升 CI/CD 流水线的效率和可靠性,助力开发团队实现持续集成与交付的目标。
|
12天前
|
CDN
阿里云CDN怎么收费?看这一篇就够了,CDN不同计费模式收费价格全解析
阿里云CDN的费用由基础费用和增值费用组成。基础费用有三种计费方式:按流量、按带宽峰值和月结95带宽峰值,默认为按流量计费,价格根据使用量阶梯递减。增值费用包括静态HTTPS请求、QUIC请求等,按实际使用量收费,不使用不收费。具体收费标准和详细规则可参考阿里云官方页面。
|
1月前
|
Serverless 对象存储 人工智能
智能文件解析:体验阿里云多模态信息提取解决方案
在当今数据驱动的时代,信息的获取和处理效率直接影响着企业决策的速度和质量。然而,面对日益多样化的文件格式(文本、图像、音频、视频),传统的处理方法显然已经无法满足需求。
83 4
智能文件解析:体验阿里云多模态信息提取解决方案
|
22天前
|
存储 运维 安全
深入解析操作系统控制台:阿里云Alibaba Cloud Linux(Alinux)的运维利器
本文将详细介绍阿里云的Alibaba Cloud Linux操作系统控制台的功能和优势。
49 5
|
2月前
|
存储 物联网 大数据
探索阿里云 Flink 物化表:原理、优势与应用场景全解析
阿里云Flink的物化表是流批一体化平台中的关键特性,支持低延迟实时更新、灵活查询性能、无缝流批处理和高容错性。它广泛应用于电商、物联网和金融等领域,助力企业高效处理实时数据,提升业务决策能力。实践案例表明,物化表显著提高了交易欺诈损失率的控制和信贷审批效率,推动企业在数字化转型中取得竞争优势。
108 16
|
2月前
|
Prometheus Kubernetes 监控
OpenAI故障复盘 - 阿里云容器服务与可观测产品如何保障大规模K8s集群稳定性
聚焦近日OpenAI的大规模K8s集群故障,介绍阿里云容器服务与可观测团队在大规模K8s场景下我们的建设与沉淀。以及分享对类似故障问题的应对方案:包括在K8s和Prometheus的高可用架构设计方面、事前事后的稳定性保障体系方面。
|
2月前
|
运维 安全 Cloud Native
阿里云云安全中心全面解析
阿里云云安全中心作为一款集持续监测、深度防御、全面分析、快速响应能力于一体的云上安全管理平台,为企业提供了全方位的安全保障。本文将详细介绍阿里云云安全中心的功能、应用场景、收费标准以及购买建议,帮助您更好地了解和利用这一强大的安全工具。
阿里云云安全中心全面解析
|
2月前
|
Kubernetes 算法 调度
阿里云 ACK FinOps成本优化最佳实践
本文源自2024云栖大会梁成昊演讲,讨论了成本优化策略的选择与实施。文章首先介绍了成本优化的基本思路,包括优化购买方式、调整资源配置等基础策略,以及使用弹性、资源混部等高级策略。接着,文章详细探讨了集群优化和应用优化的具体方法,如使用抢占式实例降低成本、通过资源画像识别并优化资源配置,以及利用智能应用弹性策略提高资源利用效率。
|
2月前
|
运维 Kubernetes Serverless
阿里云Argo X K8s玩转工作流引擎,实现大规模并行计算
本文基于2024云栖大会田双坤的演讲,介绍了Kubernetes作为云原生操作系统的角色及其在各类任务中的应用,重点探讨了Argo Workflows在Kubernetes上编排并行任务的能力。面对自建Argo Workflows的挑战,如稳定性、成本和安全性等问题,阿里巴巴云推出了全托管的Serverless Argo工作流,提供全托管、免运维、可观测和易集成的特点,显著提升了任务编排的效率和稳定性。适用于数据处理、科学计算、自动驾驶仿真等多个领域。

相关产品

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

    更多