首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Kubernetes(k8s)-CoreDNS介绍(二)

Kubernetes(k8s)-CoreDNS介绍(二)

作者头像
运维小路
发布2025-01-11 15:50:59
发布2025-01-11 15:50:59
3690
举报
文章被收录于专栏:运维小路运维小路

我们上一章介绍了Docker基本情况,目前在规模较大的容器集群基本都是Kubernetes,但是Kubernetes涉及的东西和概念确实是太多了,而且随着版本迭代功能在还增加,笔者有些功能也确实没用过,所以只能按照我自己的理解来讲解。

我们在上一小节介绍了coredns的的基本功能和pod的解析域名的流程,那么这一小节我们将介绍一些更细节的东西。

服务全称

在 Kubernetes 集群中,默认的域名后缀是 .cluster.local。这是由 Kubernetes 集群的 DNS 配置决定的。

这个配置在部署的时候自动生成的,如果不通过配置文件修改这个默认配置,则是系统自动生成,默认就是.cluster.local。

在 Kubernetes 中,每个命名空间都有一个默认的域名后缀,该后缀是命名空间名称加上 .svc.cluster.local。例如,如果命名空间的名称是 "default",那么默认的域名后缀将是 .default.svc.cluster.local

通过这个默认域名后缀,可以在集群内部访问 Kubernetes Service,而不需要额外指定完整的域名。

例如,如果有一个名为 "ingress-nginx-controller" 的 Service,在ingress-nginx的命名空间中,可以通过

ingress-nginx-controller.ingress-nginx.svc.cluster.local 这样的域名来访问该 Service。

如果想要修改这个域名,需要在创建集群的时候进行定义,后面修改会比较麻烦,尤其是已经大面积使用的情况下,目前已知这些地方是有coredns的cm,kube-apiserver.yaml和kubelet的配置文件config.yaml都涉及到这个配置。

如果要在修改,需要提前准备配置文件,参考Kubernetes(k8s)-安装k8s(docker版)的创建集群的命令,准备下面的配置文件。

代码语言:javascript
复制
#当然这个配置的文件内容其实可以有很多
apiVersion: kubeadm.k8s.io/v1beta3
kind: ClusterConfiguration
kubernetesVersion: v1.23.12
controlPlaneEndpoint: "192.168.31.211:6443"  # 如果你有一个负载均衡器或者需要一个稳定的API服务器访问地址,请指定它。
networking:
  podSubnet: "10.244.0.0/16"
  serviceSubnet: "10.96.0.0/12"  # 如果你需要指定服务子网
  dnsDomain: "mycustomdomain.local"  # 自定义域名后缀
apiServer:
  extraArgs:
    advertise-address: "192.168.31.211"
  certSANs:
  - "192.168.31.211"  # 如果你有其他SAN条目,可以继续添加
controllerManager: {}
scheduler: {}
imageRepository: registry.aliyuncs.com/google_containers  # 镜像仓库
代码语言:javascript
复制
#创建集群
kubeadm init \
--config kubeadm-config.yaml 

通过这个方式创建的集群,则域名就是我们指定的域名地址,而不再使用默认的cluster.local 。

服务简写

虽然上面的名字具有通用性,但是还是太长了,能否有比较简单的方法,比如只用服务名字就可以了呢?当然是可以的,同一个命名空间中访问其他 Service 时,可以直接使用 Service 的名称进行域名解析。不需要指定命名空间,当然也不需要添加默认域名。因为同一命名空间中的资源默认都是可见的,但是如果是跨命名空间则不能简写。

例如,如果在命名空间 namespace1 中的 Pod 需要访问命名空间 namespace2 中的 Service,需要使用 <service-name>.<namespace2>.svc.cluster.local 的域名即可。

这样,Pod 就可以通过 Service 的域名来解析和访问其他命名空间中的 Service。Kubernetes 会自动将域名解析到正确的 IP 地址和端口,以实现跨命名空间的通信。

历史推荐内容Docker-docker基本信息,基本命令,dockerfile,原理,仓库,存储网络日志,番外篇云计算&虚拟化-包括服务器购买,虚拟化介绍,虚拟磁盘,虚拟网络,创建虚拟机,安装虚拟机,dashboard,xml解释,克隆,快照,初始化,esxi介绍。Linux进阶-包括硬件,日常运维,基础软件,日志,进阶命令,防火墙,shell编程,内核,linux系统及初始化Linux基础-包括文件的增删改查,磁盘管理,网络配置,用户配置,权限配置

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-01-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维小路 微信公众号,前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 服务全称
  • 通过这个方式创建的集群,则域名就是我们指定的域名地址,而不再使用默认的cluster.local 。
  • 服务简写
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档