全部產品
Search
文件中心

Container Service for Kubernetes:在Knative中基於流量灰階發布服務

更新時間:Nov 08, 2024

Knative會管理不同Revision(修訂版本)之間的流量分配。您可以在控制台為不同Revision設定版本對應的流量比例,然後不斷調整流量比例進行觀察,直到100%的業務流量全部切流至新版本服務,以完成灰階發布服務。

前提條件

已在叢集中部署Knative,請參見部署Knative

步驟一:建立Knative服務

  1. 登入Container Service管理主控台,在左側導覽列選擇叢集

  2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇應用 > Knative

  3. Knative頁面的服務管理頁簽下,選擇命名空間default,然後單擊建立服務,部署一個名為helloworld-go的服務,部署完成後單擊建立

    關鍵配置項如下所示,更多配置項資訊,請參見部署Knative服務

    配置項

    說明

    命名空間

    選擇該服務所屬的命名空間。

    服務名稱

    自訂該服務的名稱,本例服務名稱為helloworld-go

    鏡像名稱

    您可以單擊選擇鏡像,在彈出的對話方塊中選擇所需的鏡像並單擊確定。您還可以填寫私人registry。填寫的格式為domainname/namespace/imagename:tag。本例中為registry.cn-hangzhou.aliyuncs.com/knative-sample/helloworld-go

    鏡像版本

    您可以單擊選擇鏡像版本選擇鏡像的版本。若不指定,預設為latest。本例中鏡像版本為73fbdd56

    訪問協議

    支援HTTPgRPC兩種訪問協議。

    說明

    說明

    gRPC是基於HTTP2協議標準設計和ProtoBuf(Protocol Buffers)序列化協議開發的,且支援眾多開發語言。與HTTP相比,HTTP2在發送和接收方面更緊湊和高效。

    容器連接埠

    設定暴露的容器訪問連接埠,連接埠號碼必須介於1~65535。

    若目標服務的狀態列顯示成功,表明服務已部署成功。

  4. 服務管理頁面的預設網域名稱訪問網關列,分別擷取helloworld-go服務的網域名稱和網關地址。

  5. 執行以下命令,訪問helloworld-go服務。

    curl -H "host: <預設網域名稱>" http://<訪問網關IP> # 網關IP和預設網域名稱請以您的實際資料為準。

    預期輸出:

    Hello World!

    預期輸出表明,服務已建立成功並可以正常訪問。

步驟二:通過建立修訂版本灰階發布服務

  1. 登入Container Service管理主控台,在左側導覽列選擇叢集

  2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇應用 > Knative

  3. 建立修訂版本。

    1. 選擇服務管理頁簽,然後單擊目標服務右側操作列下的詳情

    2. 單擊建立修訂版本,在基本資料設定精靈步驟,單擊進階設定,設定最新修訂版本的環境變數為TARGET=Knative,然後單擊下一步

      11

    3. 流量設定設定精靈步驟,設定最新修訂版本的流量比例為0,單擊建立

      說明

      所有修訂版本的流量比例之和需要等於100。

    4. 建立完成後,選擇服務管理頁簽,可以看到新建立服務版本的詳細資料。

    5. 執行以下命令,訪問helloworld-go服務。

      curl -H "host: <預設網域名稱>" http://<訪問網關IP> # 替換為實際的網關IP和預設網域名稱。

      預期輸出:

      Hello World!

      預期輸出結果表明,服務已建立成功並可以正常訪問。由於新版本服務的流量比例為0,所以訪問helloworld-go服務,還是請求到舊版本的服務。

  4. 修改流量比例灰階發布服務。

    1. 服務管理頁面,單擊目標服務右側操作列下的詳情

    2. 單擊設定流量比例,在設定流量比例對話方塊,將新版本和舊版本的流量比例都設定為50%,然後單擊確定

    3. 服務流量比例設定成功後,選擇服務管理頁簽,可以看到新版本和舊版本服務的詳細資料。

    4. 執行以下命令,訪問服務。

      while true; do curl -H "host: <預設網域名稱>" http://<訪問網關IP>; slesp 1; done # 網關IP和預設網域名稱請以您的實際資料為準。
      說明

      這個命令會一直運行,直到您手動停止它。如果您只想觀察一段時間,可以按Ctrl + C按鍵組合來終止命令的運行。

      預期輸出:

      Hello World!
      Hello Knative!
      Hello World!
      Hello Knative!
      Hello World!
      Hello Knative!
      ...

      由於新、舊版本的流量比例各為50%,所以當前訪問helloworld-go服務的話,基本是按50%進行流量分配。

      您可以通過調整流量比例繼續灰階發布服務,直到新版本服務的流量比例為100%,完成灰階發布服務。在這個過程中,如果發現新版本有問題,您可以隨時通過調整流量比例的方式進行復原操作。

相關文檔

您可以基於流量請求數實現Knative服務的自動擴縮容,請參見基於流量請求數實現服務自動擴縮容