K8S多節點情況下使用nginx負載ingress或者是istio域名服務的處理

K8S多節點情況下使用nginx負載ingress或者是istio域名服務的處理


背景

  • 公司內部有一個自建的K8S測試集羣.同事這邊使用istio或者是ingress發佈了一個域名服務.
  • 公司這邊的DNS管理比較嚴格,比較難以添加DNS記錄,所以處理起來需要手動處理.
  • 爲了進行性能壓測,希望域名能夠平均的負載到K8S的3個worker節點中.
  • 並且能夠儘可能的減少客戶端hosts文件的修改.

處理方式

  • 最簡單的處理是在nginx所在服務器,將istio後者是ingress 對應的worker節點添加到hosts中
vi /etc/hosts
添加 ip 虛擬域名
  • 但是做了一個實現,發現/etc/hosts 並不能很好的實現 域名IP地址的輪詢.
  • 感覺還是需要用bind 添加一個域名關係來處理.
  • 爲了簡單先用 hosts .至少 hsots 能夠實現一定意義的高可用

原理說明

  • 備註: 此處是根據自己的理解
ingress 在使用時 本質是利用 nginx的 virtual hosts的路由分發機制.
根據http 過來的是 server_name 進行區分. 
如果是 serverA 那麼走A服務, 如果是serverB 那麼走B服務
其實就跟VPS實現同一個ip地址可以掛載多個域名是完全一樣的技術路線.

nginx的處理

  • 注意安裝的時候需要 添加 with-stream 的方式來處理
  • 對不修改 hosts 文件
vi /etc/hosts
添加
10.24.19.204  b2b.xxxx.com
10.24.19.205  b2b.xxxx.com
10.24.19.207  b2b.xxxx.com

nginx的模板爲

worker_processes auto;
events {
  multi_accept on;
  use epoll;
  worker_connections 1024;
}
  stream {
    upstream node_ingress {
       least_conn;
       server  b2b.xxxx.com:8080 ;
     }
    server {
    listen        0.0.0.0:80;
    proxy_pass    node_ingress;
    proxy_timeout 10m;
    proxy_connect_timeout 1s;
  }
}

修改客戶端機器的hosts

  • 注意這裏不能與k8s節點一致
c:\windows\system32\drivers\etc\hosts
添加內容
10.24.19.208  b2b.xxxx.com
  • 瀏覽器打開即可

備註說明

  • 注意理論上可以使用在正向代理來實現
  • 注意可以使用bind9 搭建一個自建的dns實現路由的負載均衡.
  • 注意nginx其實需要注意的地方挺多的. 需要逐步學習
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章