service select:
service通過selector和pod建立關聯。
k8s會根據service關聯到pod的podip信息組成一個endpoint。
若service定義中沒有selector字段,service被創建時,endpoint controller不會創建endpoint。
service負載分發策略有兩種:
RoundRobin: 輪訓模式,即輪序請求轉發到后段的各個pod上。(默認模式)
SessionAffinty: 基於客戶端ip地址進行會話保持的模式,第一次客戶端訪問后段某個pod,之后的請求都會轉發到這個pod上。
k8s服務發現方式:
DNS: 可以通過cluster add-on的方式輕松輕松的創建KubeDNS來對集群內的service進行服務發現,這也是官方強烈推薦的方式。為了讓pod中的容器可以使用kube-dns來解析域名,k8s會修改容器的/etc/resolv.conf配置。
k8s服務發現原理:
endpoint
endpoint是集群中的一個資源對象,儲存在etcd中,用來記錄一個service對應的pod的訪問地址。
service配置serlector,endpoint controler才會自動創建對應的endpoint對象;否則,則不會創建endpoint對象。
endpoint controlor
endpoint controlor是k8s集群的其中一個組件,其功能如下:
負責生成和維護所有的endpoint對象的控制器。
負責監聽
源文章地址:
https://blog.csdn.net/luanpeng825485697/article/details/84296765?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164199455616780265488959%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=164199455616780265488959&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~baidu_landing_v2~default-4-84296765.first_rank_v2_pc_rank_v29&utm_term=endpoint#