給阿里雲K8s集羣添加自定義 ingress 端口

0x00 背景

在生產環境中部署nacos, skywalking 等服務時, 發現nginx ingress 的80,443端口有點不夠用了.
之前的解決辦法是, 給不同的服務, 指定不同的host, 那麼即使是相同的80端口,也可以通過請求域名,響應到不同的後端service.
上面的原理也很簡單, 因爲ingress nginx 最終實現就是轉換爲nginx的配置文件, 對於nginx 而言, 一個443,響應多個域名這是基本操作.

但是, 這不夠優雅呀, 今天嘗試找一下自定義端口方法.
參考: https://www.cnblogs.com/caibao666/p/12202335.html

0x01 開搞

第一步: 增加LB端口

原來的nginx-ingress-lb只開放80,443端口.

kubectl get svc -A | grep nginx
kube-system   nginx-ingress-lb                     LoadBalancer   172.21.12.8     172.16.79.230   80:31728/TCP

開始增加修改:

kubectl edit svc nginx-ingress-lb -n kube-system

# 增加一組端口
   - name: nacos-port
     nodePort: 32123  # 這裏隨意寫一個未被使用的30000以上的端口
     port: 8848
     protocol: TCP
     targetPort: 8848
#保存退出, 立即生效
:wq

再次確認一下修改效果

kubectl get svc -A | grep nginx
kube-system   nginx-ingress-lb                     LoadBalancer   172.21.12.8     172.16.79.230   80:31728/TCP,443:31954/TCP,8848:32123/TCP
第二步: 修改configmap
kubectl edit configmap tcp-services -n kube-system

# 在 apiVersion 下面添加一組配置: data 
apiVersion: v1
data:
  # 格式:  對外端口 :  namespace/service_name:service_port
  "8848": default/nacos-headless:8848

0x03 驗證

這時候去查看 ingress 的信息, 發現不會有啥變化, 但這個LB是確確實實多了一個服務端口.
此時, 我們可以通過K8s的LB IP , 加上這個自定義端口, 就可以正常訪問裏面的nacos服務了.

我這裏的nginx ingress 安裝的是內網LB, 所以需要在外部配置一下nginx 把公網請求轉進來, 比較簡單, 不再贅述.

完~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章