学习网站
https://kubernetes.feisky.xyz/introduction/index
https://kubernetes.io/docs

即用稳定的dns名字代替了ip访问

Namespaces of Services

pod:data
namespace:test
dns: data.test
kubelet 为每个pod配置了 /etc/resolv.conf
配置的resolv.conf如图所示

nameserver 10.32.0.10
search <namespace>.svc.cluster.local svc.cluster.local cluster.local
options ndots:5

data.test补全后其实是 data.test.svc.cluster.local

service

分为normal service和headless service
Normal service 指定一个 clusterip,对pod的访问是通过clusterip或者dns进行访问,本质上是轮询访问,dns解析访问的clusterip
headlsess service 没有clusterip,对pod的访问是通过podip或者dns进行访问,适用于statefulset,比如访问数据库集群的主节点,你就要具体到pod。使用podip.service.namespace.svc.cluster.local进行访问,dns解析访问的pod ip

pod

第一种访问方式 podip.servicename.namespace.svc.cluster.local
第二种访问方式 podhostname.servicename.namespace.svc.cluster.local(spec:hostname指定,没有设置默认是pod名字),可选subdomain(spec.subdomain) podhostname.subdomain.servicename.namespace.svc.cluster.local

podDNS策略

default:继承运行所在节点解析配置
ClusterFirst:使用集群内部的dns解析,对于后缀不匹配的dns查询,将转发到上游名称服务器,这个也是默认的DNS策略
注意如果以hostNetwork运行的pod,ClusterFirst应该设置为ClusterFirstWithHostNet
None:忽略DNS设置,使用dnsConfig字段中所提供的配置

最后修改:2024 年 08 月 09 日
如果觉得我的文章对你有用,请随意赞赏