centos7下kubernetes(15。kubernetes-外網訪問service)


kubernetes提供了多種類型的service,默認是cluster IP

 

ClusterIP

cluster內部IP對外提供服務,只有cluster內的節點和pod可訪問,這是默認的service。

 

NodePort

service通過cluster節點的靜態端口對外提供服務,cluster外部可以通過 nodeip:nodeport訪問service

 

loadbalancer

Service 利用 cloud provider 特有的 load balancer 對外提供服務,cloud provider 負責將 load balancer 的流量導向 Service。目前支持的 cloud provider 有 GCP、AWS、Azure 等。

 

 

 

實驗nodeport

更改service的yml文件

添加type:NodePort,然后重新創建service

kubernetes依然會為httpd-svc分配一個cluterIP,不同的是:

1.Type類型是Nodeprot,

2.Port是8080:32242/TCP,8080依然是cluster的端口,32242是node節點的端口,Kubernetes 會從 30000-32767 中分配一個可用的端口,每個節點都會監聽此端口並將請求轉發給service

 

測試nodeport是否正常工作:

通過兩個節點的IP+端口都可以正常的訪問

 

那么,kubernetes是如何將nodeip+端口映射到pod的呢?

與clusterIP一樣也是通過iptables,與clusterIP相比,每個節點的eiptables中增加了下面兩條規則

訪問node節點的32242時會應用 KUBE-SVC-RL3JAE4GN7VOGDGP規則

其實就是負載均衡到每一個pod

 

noedport默認是隨機選擇,不過我們可以用nodeport指定特定的端口

現在配置文件中有三個Port

nodeport是節點上監聽的端口。

port是clusterIP上監聽的端口

targetport是pod監聽的端口

 

最終,node和clusterIP在各自端口上接受到的請求都會通過iptables轉發到pod的targetport上

nodeport:30000已經生效了


免責聲明!

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



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