日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Kubernetes集群網(wǎng)絡(luò):k8s對外暴露服務(wù)的方式

一、Master集群網(wǎng)絡(luò)

master集群的網(wǎng)絡(luò)比較簡單,和通常的負(fù)載均衡集群一樣。多個(gè)節(jié)點(diǎn)的apiserver的ip與端口(6443)使用負(fù)載均衡的ip與端口。在master/node節(jié)點(diǎn)join時(shí)均使用此負(fù)載均衡的ip與端口,這樣就是master節(jié)點(diǎn)的集群網(wǎng)絡(luò)。

創(chuàng)新互聯(lián)建站堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都做網(wǎng)站、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的平頂山網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

  • master 節(jié)點(diǎn)之間的網(wǎng)絡(luò):如果有多個(gè) master 節(jié)點(diǎn),它們之間需要通過 etcd 這個(gè)分布式鍵值存儲(chǔ)來保持?jǐn)?shù)據(jù)的一致性。etcd 通常使用 Raft 協(xié)議來實(shí)現(xiàn)高可用和容錯(cuò)性,它需要每個(gè)節(jié)點(diǎn)之間都能夠互相通信,因此需要配置一個(gè)可靠的網(wǎng)絡(luò)連接。
  • master 節(jié)點(diǎn)和 node 節(jié)點(diǎn)之間的網(wǎng)絡(luò):master 節(jié)點(diǎn)和 node 節(jié)點(diǎn)之間需要通過 kube-apiserver 這個(gè)組件來進(jìn)行通信。kube-apiserver 是 master 節(jié)點(diǎn)上運(yùn)行的組件,它提供了 RESTful 的 API 接口,供外部客戶端和內(nèi)部組件訪問 k8s 集群的資源和狀態(tài)。node 節(jié)點(diǎn)上運(yùn)行著 kubelet 和 kube-proxy 這兩個(gè)組件,它們需要定期向 kube-apiserver 匯報(bào)節(jié)點(diǎn)和 Pod 的信息,或者接收 kube-apiserver 的指令。因此,需要配置一個(gè)安全和穩(wěn)定的網(wǎng)絡(luò)連接。
  • master 節(jié)點(diǎn)和外部客戶端之間的網(wǎng)絡(luò):外部客戶端可以通過 kubectl 命令行工具或者其他方式來訪問 master 節(jié)點(diǎn)上的 kube-apiserver,從而對 k8s 集群進(jìn)行管理和操作。為了保證安全性和可訪問性,需要配置一個(gè)合適的網(wǎng)絡(luò)地址和端口,并且使用 TLS/SSL 加密通信。

二、Node集群網(wǎng)絡(luò)

K8s集群對外暴露服務(wù)的方式主要有以下幾種:

  • NodePort:將服務(wù)暴露到集群中每個(gè)節(jié)點(diǎn)的固定端口,客戶端可以通過節(jié)點(diǎn)的 IP 地址和端口訪問服務(wù)。
  • LoadBalancer:使用云平臺(tái)的負(fù)載均衡器將服務(wù)暴露到公網(wǎng),客戶端可以通過公網(wǎng) IP 地址和端口訪問服務(wù)。
  • Ingress:使用 Ingress 控制器將服務(wù)暴露到公網(wǎng),并提供統(tǒng)一的域名訪問。

1、NodePort

NodePort 是 Kubernetes 提供的一種最簡單的服務(wù)暴露方式。當(dāng) Service 的類型為 NodePort 時(shí),Kubernetes 會(huì)為該 Service 分配一個(gè)固定的端口,該端口會(huì)映射到集群中每個(gè)節(jié)點(diǎn)的相同端口??蛻舳丝梢酝ㄟ^集群中任何節(jié)點(diǎn)的 IP 地址和端口訪問服務(wù)。

NodePort 的配置非常簡單,只需要在 Service 的 spec 中設(shè)置 type 為 NodePort,并指定端口號(hào)即可。例如,以下 YAML 定義了一個(gè) NodePort 服務(wù):

apiVersion: v1
kind: Service
metadata:
  name: nginx
spec:
  type: NodePort
  ports:
    - port: 80
      targetPort: 80
      nodePort: 30000

該服務(wù)將暴露到集群中每個(gè)節(jié)點(diǎn)的 30000 端口??蛻舳丝梢酝ㄟ^集群中任何節(jié)點(diǎn)的 IP 地址和 30000 端口訪問該服務(wù)。

NodePort 的優(yōu)點(diǎn)是簡單易用,可以快速將服務(wù)暴露到集群外部。但是,NodePort 也有一定的缺點(diǎn)。
Kubernetes NodePort 類型的服務(wù)將在每個(gè)節(jié)點(diǎn)上暴露一個(gè)端口,并分配一個(gè) cluster IP 地址。外部客戶端可以通過 : 來訪問該服務(wù)。NodePort 類型的服務(wù)適用于需要在集群外部訪問的服務(wù),例如 Web 服務(wù)。

NodePort 類型的服務(wù)有以下優(yōu)點(diǎn):

  • 配置簡單,只需要指定 type: NodePort 即可。
  • 部署快速,不需要額外的組件。
  • 可用于任何類型的服務(wù),包括 HTTP、TCP 和 UDP。

NodePort 類型的服務(wù)也有以下缺點(diǎn):

  • 端口范圍有限,只能使用 30000-32767 之間的端口。
  • 每個(gè)端口只能提供一種服務(wù),無法同時(shí)提供多個(gè)服務(wù)。
  • 需要手動(dòng)打開防火墻來允許外部流量進(jìn)入集群。

2、LoadBalancer

LoadBalancer 是 Kubernetes 提供的一種更高級(jí)的服務(wù)暴露方式。當(dāng) Service 的類型為 LoadBalancer 時(shí),Kubernetes 會(huì)在云平臺(tái)上創(chuàng)建一個(gè)負(fù)載均衡器(一般付費(fèi)購買相應(yīng)的負(fù)載均衡產(chǎn)品),并將該負(fù)載均衡器綁定到 Service 上。客戶端可以通過負(fù)載均衡器的公網(wǎng) IP 地址和端口訪問服務(wù)。

LoadBalancer 類型的服務(wù)有以下優(yōu)點(diǎn):

  • 具有高可用性,可以保證服務(wù)始終可用。
  • 可以為多個(gè)服務(wù)提供負(fù)載均衡,提高服務(wù)的性能。
  • 可以使用任意端口來暴露服務(wù)。
  • 可以為服務(wù)提供 SSL/TLS 保護(hù)。

LoadBalancer 類型的服務(wù)也有以下缺點(diǎn):

  • 配置復(fù)雜,需要指定負(fù)載均衡器的類型和配置。
  • 部署需要額外的時(shí)間和資源。
  • 可能需要額外付費(fèi),具體取決于負(fù)載均衡器的類型。

3、Ingress

Ingress 是 Kubernetes 提供的一種更靈活的服務(wù)暴露方式。Ingress 控制器可以將多個(gè) Service 統(tǒng)一到一個(gè)域名下,并提供路由規(guī)則,使得客戶端可以通過統(tǒng)一的域名訪問不同的Service。

具體選擇哪種方式需要根據(jù)實(shí)際需求來決定。如果需要快速部署服務(wù),NodePort 是一個(gè)不錯(cuò)的選擇。如果需要將服務(wù)暴露到公網(wǎng),LoadBalancer 或 Ingress 是更好的選擇。

它具有以下優(yōu)點(diǎn):

  • 靈活性和強(qiáng)大功能:Ingress 可以根據(jù)請求的路徑、主機(jī)名、HTTP 方法等來路由流量到不同的 Service。Ingress 還可以提供負(fù)載均衡、SSL/TLS 保護(hù)、緩存等功能。
  • 易用性:ngress 的配置簡單,可以使用 YAML 文件來定義 Ingress 規(guī)則。
  • 可擴(kuò)展性:Ingress 可以使用多個(gè) Ingress Controller 來實(shí)現(xiàn)負(fù)載均衡和高可用性。

Ingress 的缺點(diǎn):

  • 性能開銷:Ingress Controller 需要在集群中運(yùn)行,會(huì)消耗一定的資源。
  • 復(fù)雜性:Ingress 的配置可能比較復(fù)雜,需要一定的學(xué)習(xí)成本。

三、相關(guān)問題

1、已經(jīng)有了Service為什么還需要ingress?

Kubernetes Service 和 Ingress 都是用來將 Kubernetes 服務(wù)暴露給外部世界的資源對象。它們之間主要的區(qū)別如下:

  • Service是Kubernetes 的核心概念,用于將 Pod 集合抽象成一個(gè)邏輯單元,并提供一個(gè)統(tǒng)一的訪問入口。Service 有四種類型:ClusterIP、NodePort、LoadBalancer 和 ExternalName。其中,ClusterIP 類型的 Service 只在集群內(nèi)部可用,NodePort 類型的 Service 在集群內(nèi)部和集群外部都可用,LoadBalancer 類型的 Service 在集群外部可用,ExternalName 類型的 Service 指向一個(gè)外部主機(jī)或域名。
  • Ingress 是 Kubernetes 的擴(kuò)展資源對象,用于為 Service 提供更靈活和強(qiáng)大的路由功能。Ingress 可以根據(jù)請求的路徑、主機(jī)名、HTTP 方法等來路由流量到不同的 Service。Ingress 還可以提供負(fù)載均衡、SSL/TLS 保護(hù)、緩存等功能。

因此,Service 和 Ingress 可以結(jié)合起來使用,以實(shí)現(xiàn)更靈活和強(qiáng)大的服務(wù)路由功能。例如,可以使用 Service 將 Pod 集合抽象成一個(gè)邏輯單元,然后使用 Ingress 為該 Service 提供路由和負(fù)載均衡功能。

2、是否可以使用nginx代替ingress?

Ingress 和外部 Nginx 之間的主要區(qū)別如下:

  • 部署位置:Ingress 是 Kubernetes 中的資源對象,需要在 Kubernetes 集群中部署。外部 Nginx 可以部署在 Kubernetes 集群外部,也可以部署在 Kubernetes 集群內(nèi)部。
  • 管理方式:Ingress 由 Kubernetes 控制器管理,可以使用 Kubernetes API 來管理 Ingress。外部 Nginx 需要通過外部工具或命令來管理。
  • 功能:Ingress 提供了更豐富的功能,例如負(fù)載均衡、SSL/TLS 保護(hù)、緩存等。外部 Nginx 可以通過插件來擴(kuò)展功能,但可能不如 Ingress 的功能豐富。

Ingress 是 Kubernetes 中更完整的解決方案,它提供了更豐富的功能和更靈活的配置方式。如果您需要使用 Kubernetes 集群中的所有功能,那么使用 Ingress 是更好的選擇。

以下是一些使用外部 Nginx 代替 Ingress 的場景:

  • 您已經(jīng)有現(xiàn)有的 Nginx 服務(wù)器,并且不想部署 Ingress。
  • 您需要使用外部 Nginx 的特定功能,例如特定的插件或配置。
  • 您需要將 Kubernetes 服務(wù)暴露到外部網(wǎng)絡(luò),但不需要使用 Ingress 的所有功能。

3、NodePort vs Ingress

  • NodePort是一種簡單易用的外部訪問方式,它在所有節(jié)點(diǎn)上開放一個(gè)端口,轉(zhuǎn)發(fā)流量到服務(wù)。它的優(yōu)點(diǎn)是不需要額外的IP地址或負(fù)載均衡器,但它的缺點(diǎn)是端口范圍有限(30000-32767),不安全(容易被攻擊),不支持七層協(xié)議(無法根據(jù)域名或路徑路由),并且性能受限于節(jié)點(diǎn)數(shù) 。
  • Ingress是一種強(qiáng)大靈活的外部訪問方式,它在多個(gè)服務(wù)前端,根據(jù)路徑或域名路由流量到服務(wù)。它的優(yōu)點(diǎn)是可以暴露多個(gè)服務(wù),支持HTTP/HTTPS協(xié)議,提供高性能和高可用性,并且可以集成各種插件和功能(如SSL/TLS終止、認(rèn)證、重寫、限流等)。但它的缺點(diǎn)是復(fù)雜難懂,需要額外的控制器和插件,以及云環(huán)境或物理設(shè)備提供的負(fù)載均衡器 。

四、部署應(yīng)用的步驟

在 k8s node 集群節(jié)點(diǎn)部署的 java 應(yīng)用,要想向外提供訪問服務(wù),需要使用 k8s 的 Service 和 Ingress 這兩個(gè)資源對象。Service 是一種抽象,它定義了一組 Pod 的邏輯訪問方式,可以實(shí)現(xiàn) Pod 之間和 Pod 與外部網(wǎng)絡(luò)之間的負(fù)載均衡和服務(wù)發(fā)現(xiàn)。Ingress 是一種規(guī)則集合,它定義了如何將外部請求路由到集群內(nèi)部的 Service 上,可以實(shí)現(xiàn)域名、路徑、SSL/TLS 等高級(jí)功能 。具體可以通過以下幾個(gè)步驟來實(shí)現(xiàn):

  • 首先,需要在 node 節(jié)點(diǎn)上創(chuàng)建一個(gè) Deployment對象,來定義 java 應(yīng)用的 Pod 的數(shù)量、規(guī)格、鏡像等信息,并且為每個(gè) Pod 分配一個(gè) IP 地址。
  • 然后,需要在 node 節(jié)點(diǎn)上創(chuàng)建一個(gè) Service 對象,來定義 java 應(yīng)用的訪問方式,如端口、協(xié)議、選擇器等信息,并且為 Service 分配一個(gè)虛擬 IP 地址。
  • 接著,需要在 node 節(jié)點(diǎn)上創(chuàng)建一個(gè) Ingress 對象,來定義 java 應(yīng)用的外部訪問規(guī)則,如域名、路徑、證書等信息,并且為 Ingress 分配一個(gè)公網(wǎng) IP 地址或者域名。
  • 最后,需要在 node 節(jié)點(diǎn)上安裝一個(gè) Ingress Controller 組件,如 nginx-ingress、traefik 等,來根據(jù) Ingress 對象的規(guī)則,將外部請求轉(zhuǎn)發(fā)到對應(yīng)的 Service 上。

網(wǎng)頁名稱:Kubernetes集群網(wǎng)絡(luò):k8s對外暴露服務(wù)的方式
文章源于:http://www.5511xx.com/article/cooggsp.html