kubernetes實踐之五:深入理解Service及內部DNS搭建


一.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記錄用於域名解析。

下載地址: https://github.com/kubernetes/kubernetes/blob/master/cluster/addons/dns/coredns/coredns.yaml.base(建議復制出來)

下面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

 

      

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM