使用ingress+service機(jī)制實(shí)現(xiàn)高可用負(fù)載均衡

ingress是k8s內(nèi)置的7層反向代理的抽象,其自帶了負(fù)載與代理尋址功能,通過對ingress controller的實(shí)現(xiàn),可以方便的將內(nèi)部資源以域名及路徑的形式暴露出去,結(jié)合service可以輕松實(shí)現(xiàn)負(fù)載均衡及高可用。

k8s部署pod,會自動生成endpoint信息(容器的IP及端口清單),service指向endpoint。


關(guān)系圖

對于外部資源(未使用k8s部署的,如外部的數(shù)據(jù)庫或應(yīng)用),也可以使用ingress+service+endpoint的模式實(shí)現(xiàn)高可用及負(fù)載均衡,我們用nginx模擬下這個(gè)場景:
分別在節(jié)點(diǎn)1,節(jié)點(diǎn)2用docker啟用nginx:
映射到主機(jī)端口為8021

docker run --name nginx81 -p 8021:80 -d   -v  /data/nginx81/nginx.conf:/etc/nginx/nginx.conf -v /data/nginx81/html:/usr/share/nginx/html -v /data/nginx81/conf.d:/etc/nginx/conf.d  nginx:latest

然后我們創(chuàng)建一個(gè)1.html文件
html正文,兩個(gè)節(jié)點(diǎn)分別寫各自節(jié)點(diǎn)名稱,以區(qū)分。

node1:
<html><body>node1 8021    1.html</body></html>
node2:
<html><body>node2 8021    1.html</body></html>

然后我們預(yù)覽兩個(gè)地址:


節(jié)點(diǎn)1
節(jié)點(diǎn)2

通過ingress映射外部

---
kind: Endpoints
apiVersion: v1
metadata:
  name: edp-test
  namespace: my-system
subsets:
  - addresses:
#這里可以填寫多個(gè)IP終結(jié)點(diǎn)IP,我們填寫的是node1/node2的IP及端口
      - ip: 192.168.0.230
      - ip: 192.168.0.137
    ports:
      - port: 8021
---
apiVersion: v1
kind: Service
metadata:
  name: edp-test
  namespace: my-system
spec:
  ports:
    - port: 8021
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: edp-test
  namespace: my-system
spec:
  rules:
  - host: api.xxx.cn
    http:
      paths:
      - path: /edp
        backend:
          serviceName: edp-test
          servicePort: 8021
隨機(jī)到節(jié)點(diǎn)2

隨機(jī)到節(jié)點(diǎn)1

當(dāng)我們把節(jié)點(diǎn)2停止:docker stop nginx81
再次多次刷新界面,發(fā)現(xiàn)并不會再往節(jié)點(diǎn)2分配資源,說明k8s的service會自動幫我們找到有效的節(jié)點(diǎn)。
k8s的ingress+service+endpoint+pod的模式,是自帶注冊中心,負(fù)載均衡和高可用的,通過這種模式,您可以免去引入很多第三方組件,能夠快速實(shí)現(xiàn)微服務(wù)架構(gòu)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容