国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

再見 Kubernetes Ingress,是時候擁抱更強大的繼任者 Gateway API 了

系統 Linux
Gateway API 是 Kubernetes 中的一個 API 資源集合,包括 GatewayClass、Gateway、HTTPRoute、TCPRoute、Service 等,這些資源共同為各種網絡用例構建模型。

 

Gateway API(之前叫 Service API)是由 SIG-NETWORK 社區管理的開源項目,項目地址:https://gateway-api.sigs.k8s.io/。

主要原因是 Ingress 資源對象不能很好的滿足網絡需求,很多場景下 Ingress 控制器都需要通過定義 annotations 或者 crd 來進行功能擴展,這對于使用標準和支持是非常不利的,新推出的 Gateway API 旨在通過可擴展的面向角色的接口來增強服務網絡。

Gateway API 是 Kubernetes 中的一個 API 資源集合,包括 GatewayClass、Gateway、HTTPRoute、TCPRoute、Service 等,這些資源共同為各種網絡用例構建模型。

Gateway API的價值與定位

  •  提供跨Namespace的一種Ingress機制:讓多個跨Namespace的服務,可以分享一個L7 LoadBalancer
  •  可實現多租戶的一種Ingress機制:提供HttpRoute與Gateway分離的抽象組件,讓設計路由(HttpRoute)的人,可以共享一個L7 LoadBalancer,
  •  藍綠部署金絲雀部署時為使用同一個命名空間下的部署,可以簡單的定義在HttpRoute中
  •  基于Hostname、Header、或Subpath的服務,使用AB測試等等。

Gateway API 介紹

網關API主要分為以下幾個角色:

  •  GatewayClass(由Cloud或K8s提供者提供),
  •  Gateway(由網管平臺公司自建GatewayClass),
  •  HTTPRoute(由開發者團隊服務部署者選擇對應的網關對接)

目前 GKE 提供了四種網關類,分別是:

  •  gke-l7-rilb建立在內部 HTTP(S) 負載均衡上的區域內部 HTTP(S) 負載均衡器(單叢集Internal LoadBalancer)
  •  gke-l7-gxlb建立在外部 HTTP(S) 負載均衡之上的全球外部 HTTP(S) 負載均衡器(單叢集External LoadBalancer)
  •  gke-l7-rilb-mc基于Internal HTTP(S) Load Balancing的多集群區域負載均衡器(多叢集Internal LoadBalancer)
  •  gke-l7-gxlb-mc基于External HTTP(S) Load Balancing的多集群全局負載均衡器(多叢集External LoadBalancer)

網關部署

目前GKE的Gateway APIK8S 1.20以上的版本,如果使用GKE發布頻道需要捧油,現在需要使用RAPID區域,同時僅在以下提供公開Beta測試:

  •  us-west1
  •  us-east1
  •  us-central1
  •  europe-west4
  •  europe-west3
  •  europe-west2
  •  europe-west1
  •  asia-southeast1

下面的測試,我們選擇先測試Interal-LoadBalancer并嘗試下面的拓撲圖:

部署私有 GKE

我們先開發一個私人GKE集群,可以參照我提供的Terraform腳本,請直接將shawn.tfvars改為符合你集群的參數,另外,由于我使用遠端GCS也請設置保存 tfstate,修改config.tf里面的bucket名稱。其他經常設置和私有GKE類似,只需要使用內部LB而增加了一個proxy-only的子網給Envoy使用。

部署網關

根據上述的第三個階段,我們先部署Gateway API的CRD檔案: 

  1. kubectl kustomize "github.com/kubernetes-sigs/gateway-api/config/crd?ref=v0.3.0" \  
  2. | kubectl apply -f -  
  3. # 部署成功後,可使用下方命令檢視單叢集internal/external GatewayClass  
  4. private-gke-tf % kubectl get gatewayclass  
  5. NAME          CONTROLLER                  AGE  
  6. gke-l7-gxlb   networking.gke.io/gateway   23h  
  7. gke-l7-rilb   networking.gke.io/gateway   23h 

下一步我們準備部署網關,使用 kubectl apply -f 部署底下YAML: 

  1. kind: Gateway  
  2. apiVersion: networking.x-k8s.io/v1alpha1  
  3. metadata:  
  4.   name: internal-http  
  5. spec:  
  6.   gatewayClassName: gke-l7-rilb  
  7.   listeners:  
  8.   - protocol: HTTP  
  9.     port: 80  
  10.     routes:  
  11.       kind: HTTPRoute  
  12.       selector:  
  13.         matchLabels:  
  14.           gateway: internal-http  
  15.       namespaces:  
  16.         from: "All" 

因為Gateway可以接受三個關聯模式,基于 kind,selector,以及namespace。

  •  kind:以下可選任一種Route: HTTPRoute, TCPRoute, or customRoute
  •  標簽:通過選擇或選擇對應的標簽
  •  namespaces:貫穿 namespaces.from 選擇Route所在的namespace,預設是跟Gateway在同一個namespace的Route

因為我們想創建一個跨命名空間的共享網關,所以我們將 namespaces.from 改成 All。

部署成功后,可以通過以下命令來查看: 

  1. private-gke-tf % kubectl describe gateway internal-http  
  2. Events:  
  3.   Type    Reason  Age                    From                   Message  
  4.   ----    ------  ----                   ----                   -------  
  5.   Normal  SYNC    4m59s (x396 over 23h)  sc-gateway-controller  SYNC on default/internal-http was a success 

部署服務+HTTPRoute

接下來我們快速部署測試的兩個服務,其中 store 服務部署在默認命名空間,site 服務部署在 site 命名空間。部署對應的 HTTPRoute,其中 http-route.yaml 適用于 store 服務的: 

  1. kind: HTTPRoute  
  2. apiVersion: networking.x-k8s.io/v1alpha1  
  3. metadata:  
  4.   name: store  
  5.   labels:  
  6.     gateway: internal-http  
  7. spec:  
  8.   hostnames:  
  9.   - "store.example.com"  
  10.   rules:  
  11.   - forwardTo:  
  12.     - serviceName: store-v1  
  13.       port: 8080  
  14.       weight: 50  
  15.     - serviceName: store-v2  
  16.       port: 8080 
  17.       weight: 50  
  18.   - matches:  
  19.     - headers:  
  20.         type: Exact  
  21.         values:  
  22.           env: canary  
  23.     forwardTo:  
  24.     - serviceName: store-v2  
  25.       port: 8080  
  26.   - matches:  
  27.     - path:  
  28.         type: Prefix  
  29.         value: /de  
  30.     forwardTo:  
  31.     - serviceName: store-german  
  32.       port: 8080 

我們針對 store 服務,故意開發了三個不同的后端服務,一次來測試HTTPRoute的不同能力

  •  (1)主機名匹配:通過不同的主機名(如store.example.com or site.example.com)將用戶連接路由到指定的后臺服務
  •  (2.1) header match: 如果請求 header 中包含 env: canary 這樣的信息,就會被路由到 store-v2 服務
  •  (2.2)前綴匹配:若請求路徑前綴是 /de,則會被路由到 store-german 服務
  •  (3)默認路由:根據權重,自動均衡到指定的 store-v1 與 store-v2 的兩個后臺服務

而 http-service.yaml 是用于配置服務的,由于 HTTPRoute 與 Gateway 所在的命名空間不同,因此必須引入一個 gatewayRefs 參數: 

  1. kind: HTTPRoute  
  2. apiVersion: networking.x-k8s.io/v1alpha1  
  3. metadata:  
  4.   name: site  
  5.   namespace: site 
  6.    labels:  
  7.     gateway: internal-http  
  8. spec:  
  9.   gateways:  
  10.     allow: FromList  
  11.     gatewayRefs:  
  12.     - name: internal-http  
  13.       namespace: default  
  14.   hostnames:  
  15.   - "site.example.com"  
  16.   rules:  
  17.   - forwardTo:  
  18.     - serviceName: site-v1  
  19.       port: 8080 

由于我們使用的是 Internal LoadBalancer,所以我們需要開一臺 GCE VM 來進行測試,由于我們使用的是 private cluster,所以要記得 GCE VM 和 private GKE cluster 在同一個 VPC 中。

在 K8S client上,獲取 Internal LoadBalancer 的IP地址: 

  1. kubectl get gateway internal-http -o jsonpath='{.status.addresses[0].value}'  
  2. 10.81.68.140 

在 GCE VM 上,我們來測試上面我們定義的 HttpRoute:

(1) 按照 Hostname 來路由服務:通過定義 hostname 為 site.example.com 來路由到另一個 namespace 的K8S服務中: 

  1. shawnho@jumper2:~$ curl -H "host: site.example.com" 10.81.68.140  
  2.  
  3.   "cluster_name": "pgke-1",  
  4.   "host_header": "site.example.com",  
  5.   "metadata": "site-v1",  
  6.   "node_name": "gke-pgke-1-cluster-runtime-425beb23-vx9j.c.shawn-demo-2021.internal",  
  7.   "pod_name": "site-v1-86dc4b4fbc-4g6jr",  
  8.   "pod_name_emoji": "🌾",  
  9.   "project_id": "shawn-demo-2021",  
  10.   "timestamp": "2021-07-18T15:26:15",  
  11.   "zone": "asia-southeast1-a"  

(2) 基于Hostname: “store.example.com”,再分別測試 (2.1) Header 與 (2.2) Prefix 前綴機制: 

  1. # 測試header match  
  2. shawnho@jumper2:~$ curl -H "host: store.example.com" -H "env: canary" 10.81.68.140  
  3.  
  4.   "cluster_name": "pgke-1",  
  5.   "host_header": "store.example.com",  
  6.   "metadata": "store-v2",  
  7.   "node_name": "gke-pgke-1-cluster-runtime-425beb23-vx9j.c.shawn-demo-2021.internal",  
  8.   "pod_name": "store-v2-6856f59f7f-49fv8",  
  9.   "pod_name_emoji": "🎹",  
  10.   "project_id": "shawn-demo-2021",  
  11.   "timestamp": "2021-07-18T15:33:04",  
  12.   "zone": "asia-southeast1-a"  
  13. # 測試prefix match 
  14.  shawnho@jumper2:~$ curl -H "host: store.example.com" 10.81.68.140/de  
  15.  
  16.   "cluster_name": "pgke-1",  
  17.   "host_header": "store.example.com",  
  18.   "metadata": "Gutentag!",  
  19.   "node_name": "gke-pgke-1-cluster-runtime-425beb23-vx9j.c.shawn-demo-2021.internal",  
  20.   "pod_name": "store-german-66dcb75977-ttngz",  
  21.   "pod_name_emoji": "💇🏼‍♀",  
  22.   "project_id": "shawn-demo-2021",  
  23.   "timestamp": "2021-07-18T15:32:15",  
  24.   "zone": "asia-southeast1-a"  

(3) 通過基于 Host: store.example.com 下的 Default Route 按權重(1:1)路由服務: 

  1. # 測試default route  
  2.  shawnho@jumper2:~$ curl -H "host: store.example.com" 10.81.68.140   
  3. {   
  4.   "cluster_name": "pgke-1", 
  5.   "host_header": "store.example.com",   
  6.   "metadata ": "store-v1",   
  7.   "node_name": "gke-pgke-1-cluster-runtime-425beb23-vx9j.c.shawn-demo-2021.internal",   
  8.   "pod_name": "store-v1-65b47557df-rv65j ",   
  9.   "pod_name_emoji": "🧘🏿‍♂️",   
  10.   "project_id": "shawn-demo-2021",   
  11.   "timestamp": "2021-07-18T15:32:09",   
  12.   "zone": "asia-southeast1-a”   
  13.  
  14. shawnho@jumper2:~$ curl -H "host: store.example.com" 10.81.68.140   
  15. {   
  16.   "cluster_name": "pgke-2",   
  17.   "host_header": "store.example.com",   
  18.   "metadata": "store -v2",   
  19.   "node_name": "gke-pgke-2-cluster-runtime-e7f1b4b7-wg5a.c.shawn-demo-2021.internal",  
  20.   "pod_name": "store-v2-6856f59f7f-gkkct",   
  21.   "pod_name_emoji ": "👈🏼",   
  22.   "project_id": "shawn-demo-2021",   
  23.   "timestamp": "2021-07-18T15:32:29",  
  24.   "zone": "asia-southeast1-a"   

到這里可以看到測試成功了! 

 

責任編輯:龐桂玉 來源: 奇妙的Linux世界
相關推薦

2024-01-30 07:58:41

KubernetesGAMMA網關

2018-02-25 11:12:17

Fuchsia安卓谷歌

2022-07-20 15:20:40

谷歌開源

2020-12-30 07:49:32

KubernetesJava Spring Clo

2019-09-26 15:30:34

DockerLinux開源

2014-06-24 10:37:03

智能設備新技術

2021-10-09 14:35:20

物聯網IOT人工智能

2012-03-13 16:45:09

超級計算機沃森Deep Thunde

2022-08-07 16:04:15

CarbonC++

2022-07-24 21:36:23

C++編程語言開源

2011-01-28 15:26:34

深藍人機大戰沃森

2021-11-01 10:41:59

DockerEarthlyLinux

2022-04-29 08:44:30

AlfredRaycastLinux

2009-08-10 08:52:23

Windows 7企業部署新特性

2018-08-21 05:12:10

2011-12-14 16:47:12

N8諾基亞Symbian

2021-06-04 11:00:48

文件傳輸Croc工具

2025-11-27 09:06:50

NginxKubernetes組件

2023-03-03 11:12:34

Kubernetes控制器后端

2019-09-04 09:00:00

人工智能大數據技術
點贊
收藏

51CTO技術棧公眾號

中文字幕中文字幕一区| 中文在线资源观看网站视频免费不卡 | 五月天av影院| 欧美a级片网站| 热99精品只有里视频精品| 精品亚洲a∨| 亚洲国产一区自拍| 精品176二区| 欧美日韩视频在线一区二区 | 国产原创av在线| 亚洲精品成人天堂一二三| 欧美日韩在线观看不卡| 久久久夜色精品亚洲| 国产偷人视频免费| 26uuu亚洲婷婷狠狠天堂| 嫩草影院中文字幕| 免费观看一级特黄欧美大片| 日本不卡久久| 免费xxxx性欧美18vr| 亚洲精品中字| 国产一区美女在线| www.avtt| 国产午夜精品一区二区三区四区| 国产深夜男女无套内射| 日本天堂在线| 国产片一区二区三区| www.99在线| 亚洲色图欧美激情| 一本到av在线| 欧美视频第二页| 国产乱色在线观看| 亚洲欧美精品伊人久久| 日韩一区精品| 久久免费视频网| 久久精品国产大片免费观看| 豆国产97在线| 久久国产剧场电影| 日本不卡在线观看视频| 国产精品国产精品国产专区不片| 777.av| 欧美探花视频资源| 在线观看网站免费入口在线观看国内 | 在线亚洲免费视频| 快射视频在线观看| 亚洲精品日韩在线| 国产精品99久久免费| 国产精品高潮在线| 伊人蜜桃色噜噜激情综合| 日本亚洲自拍| 91在线精品一区二区三区| 97影院理论午夜| 亚洲成人黄色影院| 亚洲无线看天堂av| 蜜月aⅴ免费一区二区三区| 俺要去色综合狠狠| 日本成人看片网址| 国产视频一区二区在线| 日本大片在线观看| 在线精品91av| 第一会所sis001亚洲| 亚洲国产精品一区二区第一页| 国产人妖乱国产精品人妖| 成人免费一区二区三区视频网站| 亚洲男人天堂网| 亚洲亚洲免费| 亚洲一区二区在线免费观看| 国产精品毛片久久久久久| 香蕉视频在线免费看| 美女精品视频一区| 欧美精品三区| 激情五月开心婷婷| 啪啪国产精品| 国产美女精品视频免费观看| 蜜臀久久99精品久久久画质超高清 | 亚洲精品综合在线| 在线视频观看国产| 2021国产精品视频| 欧美一区=区| 成人h动漫在线| 精品国产伦一区二区三区观看体验 | 久久国产一区| 中文字幕中文字幕在线一区| 男女视频在线| 欧洲美女7788成人免费视频| 麻豆精品一区二区综合av| 天堂中文字幕| 日韩精品免费在线视频观看| 香港欧美日韩三级黄色一级电影网站| 久久精品国产sm调教网站演员| 欧美三片在线视频观看 | 97影院手机在线观看| 亚洲欧洲日韩国产| 欧美日韩免费| 国产黄视频在线观看| 亚洲最大中文字幕| 老鸭窝毛片一区二区三区 | 91网站在线看| 中文字幕精品—区二区四季| 在线天堂新版最新版在线8| 99久久自偷自偷国产精品不卡| 风间由美性色一区二区三区| 97电影在线| 国产精品高清网站| 久久久久久久久久久久久久久99| 成人直播在线| 91系列在线观看| 中文字幕字幕中文在线中不卡视频| 欧美7777| 伊人精品久久久久7777| 成人黄色图片网站| 亚洲精品在线观看免费| 在线视频国内自拍亚洲视频| 女人抽搐喷水高潮国产精品| 欧美又粗又长又爽做受| 精品粉嫩超白一线天av| 亚洲大片av| 污视频网站在线| 91av中文字幕| 国产欧美日韩另类视频免费观看| 欧美一区国产| 亚洲一二三区在线| 日韩欧美一区在线观看| 日韩一级精品| 免费黄色在线| 欧日韩一区二区三区| 91精品国产综合久久精品app| 亚洲国产午夜| 国产黄色在线免费观看| 欧美日韩一区二区三区在线视频| 91成人看片片| 一区二区三区国产在线| 老司机福利在线视频| 久久精品日韩| 精品处破学生在线二十三| 丝袜脚交一区二区| 韩国日本一区| 水蜜桃亚洲一二三四在线| 精品国产制服丝袜高跟| 麻豆精品视频在线观看| 欧美18—19sex性hd| 成年女人18级毛片毛片免费| 久久精品成人动漫| 国产香蕉久久精品综合网| 日本在线中文字幕一区| 真不卡电影网| 国产精品久久久对白| 日韩欧美中文字幕一区| 九九**精品视频免费播放| 日本一区二区三区视频在线| 99视频在线免费| 国产成人精品久久| 在线视频一区二区免费| 爽好久久久欧美精品| japanese23hdxxxx日韩| 一级在线免费视频| 国产日韩中文字幕| 555夜色666亚洲国产免| 久久 天天综合| 中文一区二区三区四区| 波多野结衣av在线播放| 岛国av在线不卡| 国产欧美日韩精品一区二区免费| 国产主播福利在线| 四虎影院一区二区三区 | 久久久久久久性潮| 天天色综合4| 97影院在线午夜| 亚洲成人国产精品| 国产三级欧美三级日产三级99 | 福利一区在线观看| 欧美18xxxx| 欧美精品少妇| 亚洲二区自拍| 久久国产加勒比精品无码| 亚洲免费在线播放| 久久国产99| 成人盗摄视频| 91在线品视觉盛宴免费| 黄色一级在线视频| 国产一区深夜福利| 精品无人区太爽高潮在线播放| 日本一区二区不卡视频| 国产精品大片| 福利一区二区免费视频| 最新中文字幕在线| 污污污污污污www网站免费| 国产精品旅馆在线| 亚洲人成电影网| 欧美网站在线观看| 97精品电影院| 美女国产一区| 国产日韩视频在线| 亚洲国产福利| 你懂的在线免费观看| 99热在线这里只有精品| 国产精品久久波多野结衣| 日韩视频第一页| 欧美一级欧美一级在线播放| 国产精品不卡一区二区三区| 蜜臀av性久久久久蜜臀aⅴ四虎|