日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Kubernetes NodePort vs Loadbalancer vs Ingress 在生成中如何选择?

發布時間:2024/1/23 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Kubernetes NodePort vs Loadbalancer vs Ingress 在生成中如何选择? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近,有人問我NodePortLoadBalancersIngress之間有什么區別。它們都是將外部流量帶入群集的不同方法,并且它們都以不同的方式進行。簡單的說,生產環境建議使用Loadbalancer和Ingress,四層(TCP/UDP)代理使用Loadbalancer,七層(HTTP/HTTPS)代理使用Ingress。

?

讓我們看一下它們各自的工作方式以及何時使用它們。

?

ClusterIP

ClusterIP是默認的Kubernetes服務類型。它為你提供了群集內部的服務訪問方式,集群內的應用程序可以訪問該服務。外部應用不能訪問。

ClusterIP服務的YAML如下所示:

apiVersion: v1 kind: Service metadata:name: my-internal-service spec:selector:app:my-apptype: ClusterIPports:- name: httpport: 80targetPort: 80 protocol: TCP

如果您無法從Internet訪問ClusterIP服務,為什么要談論它?原來您可以使用Kubernetes代理訪問它!

啟動Kubernetes代理:

$ kubectl proxy --port=8080

現在,您可以使用以下方案瀏覽Kubernetes API以訪問該服務:

http://localhost:8080/api/v1/proxy/namespaces/<NAMESPACE>/services/<SERVICE-NAME>:<PORT-NAME>/

因此,要訪問我們上面定義的服務,您可以使用以下地址:

http://localhost:8080/api/v1/proxy/namespaces/default/services/my-internal-service:http/

什么時候用代理?

在某些情況下,您將使用Kubernetes代理訪問服務。

  • 調試服務,或出于某些原因直接從筆記本電腦連接到服務

  • 允許內部流量,顯示內部儀表板等

  • ?

    因為此方法要求您以經過身份驗證的用戶身份運行kubectl,所以不應使用此方法將服務公開到Internet或將其用于生產服務。

    NodePort

    NodePorrt服務是將外部流量直接轉到服務的最原始的方法。顧名思義,NodePort會在所有節點(VM)上打開一個特定的端口,并且發送到該端口的所有流量都將轉發到該服務。

    NodePort服務的YAML如下所示:

    apiVersion: v1 kind: Service metadata:name: my-nodeport-service sepc:selector:app:my-apptype: NodePortports:- name: httpport: 80targetPort: 80nodePort: 30036 protocol: TCP

    基本上,NodePort服務于普通的"ClusterIP"服務有兩個區別。首先,類型為"NodePort"。還有一個名為nodePort的附加端口,用于指定要在節點上打開的端口。如果您未指定此端口,它將選擇一個隨機端口。大多數時候,您應該讓Kubernetes選擇端口。如thockin所說,有許多可使用的端口的警告。

    什么時候用NodePort?

    此方法有很多缺點:

    • 每個端口只能提供一次服務
    • 您只能使用端口30000-32767
    • 如果您的節點/VM IP地址更改,則需要處理

    由于這些原因,不建議在生產中使用此方法直接公開您的服務。如果您運行的服務不一定總是可用,或者您對成本非常敏感,則此方法將對您有用。NodePort服務一個很好的例子是演示應用程序或臨時應用程序。

    ?

    LoadBalancer

    LoadBalancer服務是將服務公開到Internet的標準方法。在華為云CCE上,這將啟動網絡負載均衡器,該網絡負載均衡器姜維您提供一個IP地址,該地址會將所有流量轉到您的服務。

    什么時候用Loadbalancer?

    如果要直接公開服務,這是默認方法。您指定的端口上的所有流量都將轉發到服務。沒有過濾,沒有路由等。這意味著您可以向它發送幾乎任何類型的流量,例如HTTP,TCP,UDP,Websockets,gRPC或其他任何內容。

    最大的缺點是,使用LoadBalancer公開的每個服務都將獲得其自己的IP地址,并且您必須為每個公開的服務支付LoadBalancer的費用,這可能會變得昂貴!

    Ingress

    與上述所有示例不同,Ingress實際上不是一種服務。相反,它位于多種服務的前面,并充當“智能路由器”或集群的入口點。

    您可以使用Ingress進行許多不同的操作,并且有許多類型的Ingress控制器具有不同的功能。

    默認的CCE Ingress控制器將為您啟動HTTP(S)負載均衡器,這將使您可以同時進行局域路徑和基于子域的到后端服務的路由。例如,您可以將foo.yourdomain.com上的所有內容發送到foo服務,并將yourdomain.com/bar/路徑下的所有內容發送到bar服務。

    具有L7 HTTP負載均衡器的CCE上Ingress對象的YAML可能看起來像這樣:

    kind: Ingress metadata:name: my-ingress spec:backend:serviceName: otherservicePort: 8080rules:- host: foo.mydomain.comhttp:paths:- backend:serviceName:fooservicePort: 8080- host: mydomain.comhttp:paths:- path: /bar/*backend:serviceName: barservicePort: 8080

    什么時候用Ingress?

    Ingress可能是公開服務的最強大方法,但也可能是最復雜的。華為云端負載均衡器,Nginx,Contour,Istio等,有很多類型的Ingress控制器。還有一些用于Ingress控制器的插件,例如cert-manager,可以為您的服務自動設置SSL證書。

    ?

    如果要在同一IP地址下公開多個服務,并且這些服務都使用相同的L7協議(通常為HTTP),則Ingress最有用。

    ?

    總結

    以上是生活随笔為你收集整理的Kubernetes NodePort vs Loadbalancer vs Ingress 在生成中如何选择?的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。