自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Kubernetes集群網(wǎng)絡(luò):k8s對外暴露服務(wù)的方式

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

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

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

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

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

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

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

1、NodePort

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

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

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

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

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

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

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

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

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

2、LoadBalancer

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

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

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

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

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

3、Ingress

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

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

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

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

Ingress 的缺點:

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

三、相關(guān)問題

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

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

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

因此,Service 和 Ingress 可以結(jié)合起來使用,以實現(xiàn)更靈活和強大的服務(wù)路由功能。例如,可以使用 Service 將 Pod 集合抽象成一個邏輯單元,然后使用 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 可以通過插件來擴展功能,但可能不如 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é)點上開放一個端口,轉(zhuǎn)發(fā)流量到服務(wù)。它的優(yōu)點是不需要額外的IP地址或負(fù)載均衡器,但它的缺點是端口范圍有限(30000-32767),不安全(容易被攻擊),不支持七層協(xié)議(無法根據(jù)域名或路徑路由),并且性能受限于節(jié)點數(shù) 。
  • Ingress是一種強大靈活的外部訪問方式,它在多個服務(wù)前端,根據(jù)路徑或域名路由流量到服務(wù)。它的優(yōu)點是可以暴露多個服務(wù),支持HTTP/HTTPS協(xié)議,提供高性能和高可用性,并且可以集成各種插件和功能(如SSL/TLS終止、認(rèn)證、重寫、限流等)。但它的缺點是復(fù)雜難懂,需要額外的控制器和插件,以及云環(huán)境或物理設(shè)備提供的負(fù)載均衡器 。

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

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

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

2021-08-31 09:55:57

服務(wù)開發(fā)K8S

2022-09-05 08:26:29

Kubernetes標(biāo)簽

2023-02-27 07:56:55

IngressKubernetes

2024-06-26 00:22:35

2023-03-05 21:50:46

K8s集群容量

2023-09-03 23:58:23

k8s集群容量

2023-04-12 11:28:36

Kubernetes服務(wù)器

2021-04-22 09:46:35

K8SCluster Aut集群

2023-08-03 08:36:30

Service服務(wù)架構(gòu)

2021-11-04 07:49:58

K8SStatefulSetMySQL

2022-09-22 12:11:38

PodKubernetes

2022-04-22 13:32:01

K8s容器引擎架構(gòu)

2023-11-06 07:16:22

WasmK8s模塊

2022-04-29 11:13:08

K8s資源Linux

2021-11-08 07:48:48

K8SKubernetes 集群

2022-12-28 10:52:34

Etcd備份

2024-05-27 00:00:10

KubernetesK8s云原生

2022-07-05 08:10:25

Kubernetes云原生

2023-12-01 15:46:01

Kubernetes容器

2023-11-24 17:51:18

Kubernetes云原生
點贊
收藏

51CTO技術(shù)棧公眾號