前言
Knative serving 0.7版本在6月25日正式釋出,本次版本釋出主要是繼續推進v1beta API的落地,HPA支援并發請求數進行擴縮容終于在這個版本實作了。注意這次去掉了一些過時的字段,詳細見下面的不相容變更。本文主要描述0.7版本的變更。
概覽
serving.knative.dev/v1beta1
(因為 #4533 ,需要 K8s 1.14+)
serving.knative.dev/v1beta1
在0.6擴充了
v1alpha1
API 包含
v1beta1
的字段,在這次釋出中,将
v1alpha1
的字段限制在
v1beta1
的子集内,并且不允許出現
v1beta1
不适合的字段,這樣,我們可以利用kubernetes 1.11+ 支援的相同模式來釋出
v1beta1
。
因為k8s處理多個版本時存在bug,導緻無法在舊版本編輯資源,目前是準備釋出兩個yaml,一個是隻支援
v1alpha1
,可以相容k8s 1.11+,另一個同時支援兩個版本,需要k8s 1.14+。
HPA根據并發請求名額擴縮容
之前的版本HPA支援根據CPU擴容,在這次釋出,HPA支援和預設擴縮容元件一樣的"并發請求數"名額進行擴縮容。
HPA依然還不支援縮容到零,另外還要想辦法暴露這些名額給任意的擴縮容插件。
目前的實作方式是通過autoscaler來抓取使用者容器的并發請求數名額,把autoscaler注冊成一個custom metrics api server,HPA通過這個方式來擷取名額進行擴縮容。
非root使用者容器
因為安全原因,使用非root使用者來啟動,包括queue-proxy。
不相容變更
- 去掉了之前過時的狀态字段
- Service裡面的Build和Manual模式現在不支援了
- Route tags預設生成的url生成方式改變
以下為各個元件的具體變更。
擴縮容
Fixes:
- 增加autoscaler的readiness健康檢查
- 根據activator的擴縮容調整activator限速器行為
- Revision在達到最小副本數時才更改狀态為ready
核心API
- 暴露 v1beta1 API #4199
- 容器中使用非root使用者啟動 #3237
- 允許使用者填寫容器名稱 #4289
- 支援projected volume #4079
- 删除過時的狀态字段 #4197
- Build不再支援 #4099
- Manual模式不再支援 #4188
- V1beta1 用戶端和穩定性測試 #4369
- 舊的v1alpha1 schema 通過webhook轉換 #4080
-
新增annotation用于限制資源占用 #4151queue-proxy
- Knative Sercice的annotation傳遞到Route和Configuration #4363 , #4367
- 改進Ready/Generation的處理,如果底下資源還沒有調和,更新狀态非調和狀态 #4185
- 修複 Revision 回收 #4187 #4245
- 把pod排程失敗的錯誤資訊寫入Revision狀态中 #4191
- 解決無法拉取scheme1版本的鏡像 #4430
網絡
- 把route的annotation傳遞到ClusterIngress #4087
- 引入 tagTemplate 配置,支援定義版本的域名格式 #4292
- 支援自定義的子域名 #4210
- 允許定義最長請求逾時時間 #4172
- 在請求中設定
header #4376Forwarded
監控
- 修複一些Grafana dashboard
- 移除内置的jaeger-operator,把它變成依賴來使用
參考
内容來自官方 release note
https://github.com/knative/serving/releases