一.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記錄用於功能變數名稱解析。
下載地址: 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