kubernetes实践之五:深入理解Service及内部DNS搭建
程序员文章站
2023-11-16 11:22:58
一.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层)
三.service类型
clusterip 默认模式,只能在集群内部访问
通过endpoints可知每一个service后端关联的pod
loadbalancer 要配合支持公有云负载均衡使用比如gce、aws。其实也是nodeport,只不过会把<nodeip>:<nodeport>自动添加到公有云的负载均衡当中
四.service代理模式
iptables:
• 灵活,功能强大
• 规则遍历匹配和更新,呈线性时延
• 可扩展性
ipvs(建议)
• 工作在内核态,有更好的性能
• 调度算法丰富:rr,wrr,lc,wlc,ip hash……
通过ipvsadm查看具体转发信息
# yum -y install ipvsadm
# ipvsadm -l -n
五.dns
dns服务监视kubernetes api,为每一个service创建dns记录用于域名解析。
下载地址: (建议复制出来)
下面3部分需要修改:
发布coredns
# kubectl apply -f core-dns.yaml
测试创建busybox:
# vim busybox.yaml
# kubectl apply -f busybox.yaml
# kubectl get svc
# kubectl exec -it busybox -- nslookup nginx-service