k8s-服务发现

2019-10-10  本文已影响0人  xyz098

3个概念pod、endpoint、service

k8s的服务发现机制

一般分布式系统服务发现实现:服务提供API接口等待抓取数据实现。

k8s通过DNS系统实现。解决service的名字与clusterIP的映射。

DNS系统的组件
分两步实现
配置注意

k8s引入其他DNS

用configMap配置存根域和上游DNS服务

apiVersion: v1
kind: ConfigMap
.......
data:
stubDomains: |       # 存根域
  {"out-of.kuberneters": ["10.10.10.5"]}
upstreamNameservers: |   # 上游dns
  ["8.8.8.8","8.8.8.4"]
解析过程

k8s的pod支持两种策略:Default、ClusterFirst

当pod的dnsPolicy为CulsterFirst时,域名解析会先发送到kube-dns的DNS缓存层,检查域名后缀,为cluster.local由kube-dns解析,为out-of.kuberneters的由10.10.10.5解析,其他后缀有上游dns8.8.8.8解析。

tips:可以使用dnsmasq模拟dns服务器

so,dns解决了servicename与clusterIP的映射关系,service实现了culsterIP代理相同一组pod。因为pod的endpoint会随着创建销毁而变化,这样设计能够一定程度上保证pod对应业务的可用性。 类似:DNS解析某个网站,网站由nginx反向代理后段服务。

上一篇 下一篇

猜你喜欢

热点阅读