亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

k8s?Ingress實(shí)現(xiàn)流量路由規(guī)則控制的定義格式類型

 更新時間:2023年04月10日 08:39:51   作者:路由器沒有路  
這篇文章主要為大家介紹了k8s?Ingress?實(shí)現(xiàn)流量路由規(guī)則控制的定義格式及類型詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

前言

在 Kubernetes 中,Ingress 是一個非常重要的概念。它可以將外部流量路由到 Kubernetes 集群內(nèi)的不同服務(wù)。

Ingress 可以讓你更加方便地管理 HTTP 和 HTTPS 流量,并且可以配置負(fù)載均衡、SSL 證書等功能。本文將會介紹 Ingress 的定義、類型、更新、以及相關(guān)的控制器和類別。

什么是 Ingress

通常情況下,service 和 pod 的 IP 僅可在集群內(nèi)部訪問。集群外部的請求需要通過負(fù)載均衡轉(zhuǎn)發(fā)到 service 在 Node 上暴露的 NodePort 上,然后再由 kube-proxy 通過邊緣路由器 (edge router) 將其轉(zhuǎn)發(fā)給相關(guān)的 Pod 或者丟棄。

Ingress 是 Kubernetes 的一個 API 對象,它定義了如何將外部流量路由到 Kubernetes 集群內(nèi)的不同服務(wù)。它可以通過 HTTP 和 HTTPS 協(xié)議進(jìn)行流量路由,并且支持域名和路徑的匹配。

Ingress 是一個非常強(qiáng)大的功能,可以讓你更加方便地管理流量,并且可以輕松實(shí)現(xiàn)負(fù)載均衡、SSL 證書等功能。

Ingress 的定義格式

Ingress 的定義格式如下:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: ingress-name
  annotations:
    key: value
spec:
  rules:
    - host: example.com
      http:
        paths:
          - path: /path
            backend:
              serviceName: service-name
              servicePort: service-port

其中,apiVersion字段表示 Ingress 對象的 API 版本,kind字段表示對象的類型,metadata字段包含了 Ingress 對象的元數(shù)據(jù),例如對象名稱和標(biāo)簽等,spec字段則包含了 Ingress 對象的配置信息,例如規(guī)則和后端服務(wù)等。

Ingress 的類型有哪幾種?

Kubernetes 支持多種不同類型的 Ingress,每種類型都有自己的特點(diǎn)和用途。下面是一些常見的 Ingress 類型:

1. Simple fanout

簡單的 Fanout Ingress 會將流量路由到指定的多個服務(wù)上。它可以通過域名和路徑進(jìn)行匹配,并且支持負(fù)載均衡功能。

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: simple-fanout-ingress
spec:
  rules:
  - host: example.com
    http:
      paths:
      - path: /service1
        backend:
          serviceName: service1
          servicePort: 80
      - path: /service2
        backend:
          serviceName: service2
          servicePort: 80

2. Name-based virtual hosting

基于名稱的虛擬主機(jī) Ingress 會將流量路由到指定的服務(wù)上,具體的服務(wù)由請求的 Host 頭部決定。它可以通過域名進(jìn)行匹配,并且支持負(fù)載均衡和 SSL 證書等功能。

foo.example.com --|                 |-> foo.example.com s1:80
                  | 168.92.133.131  |
bar.example.com --|                 |-> bar.example.com s2:80

下面是一個基于 Host header 路由請求的 Ingress:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: name-based-virtual-hosting-ingress
spec:
  rules:
  - host: foo.example.com
    http:
      paths:
      - backend:
          serviceName: service1
          servicePort: 80
  - host: bar.example.com
    http:
      paths:
      - backend:
          serviceName: service2
          servicePort: 80

3. Path-based routing

基于路徑的路由 Ingress 會將流量路由到指定的服務(wù)上,具體的服務(wù)由請求的 URL 路徑?jīng)Q定。它可以通過路徑進(jìn)行匹配,并且支持負(fù)載均衡和 SSL 證書等功能。

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: path-based-routing-ingress
spec:
  rules:
  - host: example.com
    http:
      paths:
      - path: /service1
        backend:
          serviceName: service1
          servicePort: 80
      - path: /service2
        backend:
          serviceName: service2
          servicePort: 80

該如何實(shí)現(xiàn)更新 Ingress

更新 Ingress 非常簡單,只需要修改 Ingress 對象的定義文件,然后執(zhí)行kubectl apply命令即可。例如,假設(shè)我們想要將simple-fanout-ingress的路徑/service1修改為/service3,則可以編輯 Ingress 對象的定義文件,然后執(zhí)行以下命令:

$ kubectl apply -f ingress.yaml

其中,ingress.yaml是 Ingress 對象的定義文件。

更新后:

$ kubectl get ing
NAME      RULE          BACKEND   ADDRESS
test      -                       168.92.133.131
          foo.example.com
          /foo          s1:80
          bar.example.com
          /bar          s2:80

Ingress Controller

Ingress Controller 是一個運(yùn)行在 Kubernetes 集群內(nèi)的服務(wù),它可以監(jiān)聽 Kubernetes API 服務(wù)器上的 Ingress 對象,并將外部流量路由到 Kubernetes 集群內(nèi)的不同服務(wù)。

每種類型的 Ingress 都需要特定的 Ingress Controller 來處理。例如,簡單的 Fanout Ingress 需要使用 Nginx Ingress Controller,而基于名稱的虛擬主機(jī) Ingress 則需要使用 Traefik Ingress Controller。

Ingress Class

Ingress Class 是一個可選的字段,它可以讓你更加精細(xì)地控制 Ingress 對象的路由方式。

每個 Ingress 對象都可以指定一個 Ingress Class,這個 Ingress Class 可以對應(yīng)不同的 Ingress Controller,并且可以讓你更加方便地控制路由方式。

總結(jié)

Ingress 是 Kubernetes 中非常重要的一個資源對象,它可以將外部流量路由到 Kubernetes 集群內(nèi)的不同服務(wù),并且支持多種不同類型的路由方式。

換言之,Ingress 就是為進(jìn)入集群的請求提供路由規(guī)則的集合,可以給 service 提供集群外部訪問的 URL、負(fù)載均衡、SSL 終止、HTTP 路由等功能。

以上就是k8s Ingress 實(shí)現(xiàn)流量路由規(guī)則控制的詳細(xì)內(nèi)容,更多關(guān)于k8s Ingress 實(shí)現(xiàn)流量路由規(guī)則控制的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論