天天看點

K8S服務發現與負載均衡原理

一、Pod通路方式

ClusterIP Service(内部)

NodePort Service(由内而外)

LoadBalance Service(外部)

Ingress(外部)

1、ClusterIP

K8S服務發現與負載均衡原理
2、NodePort 
K8S服務發現與負載均衡原理
3、LoadBalance
K8S服務發現與負載均衡原理
4、Ingress
K8S服務發現與負載均衡原理

二、服務發現

Pod内服務調用:localhost:容器内應用端口

Pod間服務調用:服務名.namespace名:服務端口   (namespace名相當于域名)

外部服務調用: 負載均衡器IP:負載均衡器内映射端口或Ingress URL

 1、pod間調用

建立service

vi service.yaml

apiVersion: v1
kind: Service
metadata:
  name: nginx-svc
spec:
  selector:
    app: web_server
  ports:
  - protocol: TCP
    port: 8080
    targetPort: 80        

使service生效

 kubectl apply -f service.yaml

檢視service

K8S服務發現與負載均衡原理

運作busybox

kubectl run busybox --rm -it --image=busybox  /bin/sh

通路nginx-svc

通過IP位址通路

K8S服務發現與負載均衡原理

 檢視index.html

K8S服務發現與負載均衡原理

通過服務名通路

wget nginx-svc.default:8080

K8S服務發現與負載均衡原理

 這就是一個K8s叢集裡Pod之間的通路。

2、外部通路Nginx(外部服務調用)

1)、修改yaml配置

K8S服務發現與負載均衡原理

 端口為30000

2)、測試

http://192.168.127.136:30000/ 或者http://192.168.127.137:30000/

K8S服務發現與負載均衡原理

 因為在虛拟機使用,使用的是192内網位址。如果是雲伺服器,則将外網位址替換192位址。

三、通路政策

支援的網絡協定(Calico、Canal等,flannel不支援政策控制)

繼續閱讀