美文网首页
k8s-服务发现

k8s-服务发现

作者: xyz098 | 来源:发表于2019-10-10 07:59 被阅读0次

    3个概念pod、endpoint、service

    • pod

      一组container组成,被RC(replicationController)、Deployment、DaemonSet、Job、StatefulSet管理

    • endpoint

      每个pod都提供一个独立的endpoint(PodIP + ContainerPort)以被客户端访问

    • service

      由多个pod副本组成,通过selector来选择。相同label的pod组成一个servie。

      解决问题:service对于的ClusterIP在service的生命周期内不会变化。而pod的endpoint会随pod的改变而改变。

    k8s的服务发现机制

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

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

    DNS系统的组件
    • etcd: DNS存储(域名与IP)

      key: /dns服务名(skydns)/local/cluster/namespace/serviceName

      value: 对应clusterIP

    • kube2sky:通过k8s master获取都所有service注册到etcd

    • skyDNS: k8s里的DNS域名解析服务器 (有一个service)

    • healthz: 提供对kube2sky的健康检测

    分两步实现
    • kube2sky通过master的获取与更新所有service的映射数据到etcd的数据。

    • pod配置skydns到/etc/resolv.conf,当需要访问其他其他service(对应其他pod)时,先通过skydns解析(去etcd获取)到对应的clusterIP,再由kube-proxy转发到pod。

    配置注意
    • kube2sky启动参数 --kube_master_url=http://k8s-master-ip:port --domain=xxx(一般为cluster.local)

    • node节点kubelet启动参数 --cluseter-dns=DNS服务的clusterIP --cluster_domain=cluster.local

    • kube2sky为service生成2条记录: service_name.namespace_name.domainservice_name.namespace_name.svc.domain

    k8s引入其他DNS

    • 存根域: 公司自建服务发现系统(如cosul)完成域名解析
    • 外部上游域名:8.8.8.8 (google的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

    • Default : 域名解析配置从pod的/etc/resolv.conf继承
    • ClusterFirst: Dns查询被发送到kube-dns(skydns)服务,以域名后缀进行服务名解析

    当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反向代理后段服务。

    相关文章

      网友评论

          本文标题:k8s-服务发现

          本文链接:https://www.haomeiwen.com/subject/utxopctx.html