[英]Exposing kubernetes clusteer to “the world” without Load Balancer of cloud provider
到目前為止,我已經建立了一個運行我的 NodeJS 部署的 kubernetes 集群。 我現在准備將它暴露給“世界”,並且在閱讀了執行此操作的服務之后,我相信它們都需要負載均衡器。 通常這些負載均衡器是由托管 kubernetes 的雲提供商創建的。 我遇到了一些限制,有些價格很高,有些對連接有限制等等......
我現在正試圖弄清楚如何避免這些負載均衡器並公開我的 kubernetes 集群,但是以一種高性能、安全和可管理的方式。 我查看了文檔,似乎提到了NodePort
和Ingress
之類的東西。 據我了解, NodePort
僅適用於集群中的單台機器? 並且Ingress
仍然需要來自某個地方的流量,通常是負載均衡器。
這是我目前的清單,我應該從這里 go 向公眾公開,理想情況下使用允許 SSL 證書、速率限制等的方法......生產中需要的常見東西
開發.yaml
---
# ClusterIP
apiVersion: v1
kind: Service
metadata:
name: development-actions-cip
spec:
type: ClusterIP
selector:
app: development-actions
ports:
- protocol: TCP
port: 80
targetPort: 4000
---
# Actions NodeJS server
apiVersion: apps/v1
kind: Deployment
metadata:
name: development-actions
spec:
replicas: 1
selector:
matchLabels:
app: development-actions
template:
metadata:
labels:
app: development-actions
spec:
containers:
- image: my-image/latest
name: development-actions
ports:
- containerPort: 4000
protocol: TCP
要解決這個問題有一些方法:
hostNetwork:true
與您的 nginx-ingress Pod 一起使用,以便可以通過機器網絡直接訪問這些機器。有關更多信息和設置詳細信息,請訪問 Nginx 入口的官方文檔,網址為: https://kubernetes.github.io/ingress-nginx-anode/deployport
我已經嘗試了所有這些選項來部署我的應用程序,我的建議是,如果您使用某些雲服務來部署集群,請使用雲服務提供商的負載均衡器,因為它更加安全、高度可用和可靠。 我正在使用本地部署 go 用於用戶定義的邊緣創建或 MetalLB 服務
您可以使用hostNetwork: true
在選定的專用 kubernetes 節點中部署 nginx 入口 controller 。 這意味着 nginx 將偵聽主機 VM 網絡上的端口80
和443
。 將浮動公共 IP 分配給 VM。 將 VM 的公共 IP 作為A record
添加到 DNS 提供程序配置中,以將域的流量路由到 VM。
然后對於所有后端 pod 只需創建 clusterIP 服務和入口資源以將其公開給外部世界。
要使其成為 HA,您可以將相同的設置復制到多個 kubernetes 節點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.