欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

kubernetes实践之五:深入理解Service及内部DNS搭建

程序员文章站 2022-06-11 08:35:35
一.Service存在的意义: 防止Pod失联(服务发现) 定义一组Pod的访问策略(负载均衡) 支持ClusterIP,NodePort以及LoadBalancer三种类型 Service的底层实现主要有iptables 和ipvs二种网络模式 二.Pod与Service的关系 通过label-s ......

一.service存在的意义:

  • 防止pod失联(服务发现)
  • 定义一组pod的访问策略(负载均衡)
  • 支持clusterip,nodeport以及loadbalancer三种类型
  • service的底层实现主要有iptables 和ipvs二种网络模式

二.pod与service的关系

  • 通过label-selector相关联
  • 通过service实现pod的负载均衡( tcp/udp 4层)

kubernetes实践之五:深入理解Service及内部DNS搭建

三.service类型

kubernetes实践之五:深入理解Service及内部DNS搭建

clusterip 默认模式,只能在集群内部访问

kubernetes实践之五:深入理解Service及内部DNS搭建

通过endpoints可知每一个service后端关联的pod

kubernetes实践之五:深入理解Service及内部DNS搭建

kubernetes实践之五:深入理解Service及内部DNS搭建

kubernetes实践之五:深入理解Service及内部DNS搭建

 

kubernetes实践之五:深入理解Service及内部DNS搭建

loadbalancer 要配合支持公有云负载均衡使用比如gce、aws。其实也是nodeport,只不过会把<nodeip>:<nodeport>自动添加到公有云的负载均衡当中

四.service代理模式

    kubernetes实践之五:深入理解Service及内部DNS搭建

iptables:

• 灵活,功能强大

• 规则遍历匹配和更新,呈线性时延

• 可扩展性

ipvs(建议)

• 工作在内核态,有更好的性能

• 调度算法丰富:rr,wrr,lc,wlc,ip hash……

kubernetes实践之五:深入理解Service及内部DNS搭建

通过ipvsadm查看具体转发信息

# yum -y install ipvsadm

# ipvsadm -l -n

kubernetes实践之五:深入理解Service及内部DNS搭建

五.dns

dns服务监视kubernetes api,为每一个service创建dns记录用于域名解析。

下载地址: (建议复制出来)

kubernetes实践之五:深入理解Service及内部DNS搭建

下面3部分需要修改:

kubernetes实践之五:深入理解Service及内部DNS搭建

kubernetes实践之五:深入理解Service及内部DNS搭建

kubernetes实践之五:深入理解Service及内部DNS搭建

发布coredns

# kubectl apply -f core-dns.yaml

kubernetes实践之五:深入理解Service及内部DNS搭建

kubernetes实践之五:深入理解Service及内部DNS搭建

kubernetes实践之五:深入理解Service及内部DNS搭建

测试创建busybox:

# vim busybox.yaml

kubernetes实践之五:深入理解Service及内部DNS搭建

# kubectl apply -f busybox.yaml

# kubectl get svc

kubernetes实践之五:深入理解Service及内部DNS搭建

# kubectl exec -it busybox -- nslookup nginx-service

kubernetes实践之五:深入理解Service及内部DNS搭建