v0.19 版本發布
發布於:2020-11-20, 修訂於:2023-08-03
宣布 Knative v0.19 版本發布¶
Knative 的新版本現已在多個元件中提供。請依照文件中安裝 Knative的指示,安裝各自的元件。
目錄¶
- Serving v0.19
- Eventing v0.19
- Eventing 擴充功能
- CLI v0.19
- Operator v0.19
- 感謝 v0.19 的貢獻者
重點¶
- Knative 建構的所有元件現在都是多架構,包括
arm64
,這是 ARM 架構機器(如 Raspberry Pi)中使用的架構。 - 監控套件已移除,並且已將 git 儲存庫封存。
- 透過新增縮減延遲來改善冷啟動。
- 不再掛載
/var/log
,這允許使用某些使用此目錄的映像(如docker.io/nginx
)作為 Knative 服務。 - 新的 Alpha 功能允許在命名空間範圍內進行網域名稱對應。
- 您可以在 Eventing configmap
config-br-defaults
中指定 Broker 的傳遞規格預設值 - Eventing 透過修正錯誤不斷提高穩定性。
- CLI 現在提供
arm64
二進位檔,並引入兩個新命令kn service apply
和kn service import
Serving v0.19¶
🚨 破壞性變更 - 已移除已棄用的監控套件 (#9807) - 刪除 serving v1alpha1 和 v1beta1 API (#9617、#9620) - 如果 Operator 已啟用記錄收集,我們只會在 /var/log
掛載磁碟區。執行階段合約 /var/log
的要求已從 MUST 變更為 MAY (#9683]
💫 新功能與變更 - 新增縮減延遲功能,允許在請求計數下降後一段可設定的期間內維持複本計數,以避免冷啟動懲罰。(#9626) - (Alpha) 在 v1alpha1 中新增 DomainMapping CRD,允許將自訂網域名稱對應至 Knative 服務 (#9714、#9735、#9752、#9796、#9915、#10044) - 新增叢集範圍旗標 max-scale-limit。這可確保叢集範圍旗標 max-scale 和每個修訂版本註解 "autoscaling.knative.dev/maxScale" 對於新的修訂版本都不會超過此數字。(#9577) - 我們的所有部署都以最少的核心功能集執行。(#9973) - 自動調整器現在支援多個 Pod。自動調整器部署需要先縮放至 0,然後再縮放至其他複本值。(#9682) - 更新了 Service 結構描述,以包含高階基本結構描述。(#9436、#9953) - 佇列 Proxy 不再允許以 root 執行,它們具有唯讀的根檔案系統,且已刪除所有功能。(#9974) - 預設啟用 ResponsiveRevisionGC (#9710) - 現在,修訂版本的命名更清晰且一致。(#9740)
🐞 錯誤修正 - 網域由 k8s 程式庫 IsFullyQualifiedDomainName() 驗證。(#10023) - 修正自動調整器中罕見的 Null 指標例外狀況 (#9794) - 當標籤與所需的標籤不同時,會協調 Ingress。(#9719)
Eventing v0.19¶
💫 新功能與變更 - Config-br-defaults 支援設定傳遞規格預設值 (#4328)
🐞 錯誤修正 - 修正可能會導致 eventing-webhook 在初始建立時發生 crashloop 的錯誤。(#4168) - 變更映像提取原則,以便 sinkbinding 來源測試可與 kind 搭配運作。(#4317) - 有時可能會錯過相依性就緒狀態,因為觸發協調器中使用了不符的資訊器/列表器。(#4296) - Dispatcher 的行為不正確,就像一般的協調器一樣,而不是跳過狀態更新。我想知道這是否是造成與一般協調器之間產生衝突的原因。(#4280) - 修正問題 #4375,我們會在此處不會協調對於協調原則或持續時間的變更。(#4405) - 僅在訂閱者已新增至處理常式之後,才更新 IMC 中的訂閱者狀態。減少在實際設定資料平面之前標記訂閱者的失敗。(#4435) - 網路失敗時重試 (#4454) - Ingress/篩選器現在會處理適當的 k8s 生命週期。(#3917) - KnativeHistory 擴充功能不再新增至透過通道傳輸的事件 (#4366)
🧹 清理 - 將模糊測試器(測試相關程式碼)移至測試檔案,使其不會被編譯到我們的二進位檔中。二進位檔案大小略為縮減。(#4399) - DeliverySpec 驗證會拒絕負數的重試設定。(#4216) - 僅從 mtbroker reconciler 結構中清除一些未使用的欄位。(#4318) - 指向 Broker 參照,而不是使用硬編碼的路徑。這也使得針對其他 broker 更容易重複使用。(#4278) - 減少引入模糊測試器的位置。(#4447) - 簡化 IMC 實作,減少因全域重新同步造成的變動。(#4359) - 使用 github action 執行 codecov。(#4237) - 從我們的二進位檔中移除所有 knative 模糊測試器。(#4402) - 將 ContainerSource 移至 v1 API。(#4257) - Eventing 現在會預先提交測試支援的 Kubernetes 版本範圍。(#4273) - 每 4 小時在 Github actions 上執行 kind e2e 測試。(#4412) - 更新 go-retryablehttp 至 v0.6.7(#4423)
Eventing 貢獻 v0.19¶
Eventing Kafka Broker v0.19¶
eventing-kafka-broker 的發行說明
必要操作(升級前) - 執行 kubectl delete configmap -n knative-eventing kafka-broker-brokers-triggers
🚨 突破性變更 - 預設複製因子為 3(先前為 1)(#375)
💫 新功能與變更 - eventing-kafka.yaml
可用於安裝 Broker 和 KafkaSink。(#367) - 資料平面 pod 以 Prometheus 格式公開伺服器和用戶端指標。(#231 #244) - 接收器元件公開: - http_requests_produce_total
- 已接受的產生請求數量(200 級回應) - http_requests_malformed_total
- 格式錯誤的產生請求數量(400 級回應) - 分派器元件公開: - http_events_sent_total
- 已傳遞至 Apache Kafka 的事件數量 - Broker 會重試傳送事件。(#268 #263 #258)
🐞 錯誤修正 - 從控制器中移除 config-logging 磁碟區(#288) - 在偵錯模式下記錄大型設定時,執行緒會遭到封鎖(#346 #378)
🧹 清理 - 容器映像的大小約為 90MB,而非約 287MB。(#265 #306) - 於關閉時正常清除資源(#334) - KafkaSink
用法:https://gist.github.com/matzew/e2c2fcd2696a346f25b8bc9e64bfd0fa
Eventing Gitlab v0.19¶
eventing-gitlab 的發行說明
💫 新功能與變更 - 宣告 GitLabSource 執行個體發出的事件類型,以便將它們作為 Knative EventTypes 傳播。(#24)
🐞 錯誤修正 - 清理已發出 CloudEvents 的類型屬性,使其不包含空格和大小寫字母。(#24)
🧹 清理 - 確保發出 CloudEvents 的來源屬性穩定且可預測。(#24)
Eventing RabbitMQ v0.19¶
eventing-rabbitmq 的發行說明
💫 新功能與變更 - 實作死信佇列
🐞 錯誤修正 - 修正觸發器相依性不會總是正確追蹤的錯誤 - 修正非預設叢集名稱中,網路名稱不正確的錯誤
🧹 清理 - 使用 Kind 進行 e2e 測試,並使用 Knative 的通用 github actions。
用戶端 v0.19¶
kn
0.19.0 除了錯誤修正和以下所述的其他好處外,還引入了兩個新命令(kn service apply
和kn service import
),並移除了一些已淘汰的選項。- 您可以在 CHANGELOG 中找到完整的變更清單。
🚨 突破性變更
已移除以下已淘汰的選項
- 所有 CRUD 命令的
--async
。請改用--no-wait
- 管理服務時的
--requests-cpu
、--request-memory
、--limits-cpu
和--limits-memory
。替代方案是使用--limit memory=..
和--limit cpu=...
(--request
相同)。這兩個選項可以結合使用,例如--limit memory=256Mi,cpu=500m
💫 新功能與變更
kn service apply
¶
-
已新增
kn service apply
命令,允許對您的 Knative 服務進行宣告式管理。當在 CI/CD 環境中建立或更新服務時,此新命令特別有用,可允許冪等操作。它的運作方式很像kubectl apply
,並使用用戶端 3 向合併演算法來更新服務。這裡會直接重複使用 kubectl 合併演算法。由於apply
會對 Knative 的自訂資源類型進行操作,因此在處理 CRD 時,它會遇到與kubectl apply
中用戶端合併演算法相同的限制。也就是說,陣列無法合併,而是僅被更新覆寫。此限制會影響所有容器的特定參數。 -
未來,我們計畫新增更完善的合併演算法,該演算法支援像
kubectl apply
對內建 K8s 資源的支援一樣,支援完整策略性 3 向合併。 -
請務必注意,
kn service apply
與kn service update
的根本不同之處在於,使用kn service apply
時,需要以命令列選項或在使用--filename
時在宣告檔案中提供完整設定。使用kn service update
時,您只需指定要更新的部分,而不會影響任何其他服務設定。apply
的此特性也表示,您始終必須將映像作為kn service apply
的唯一強制性參數提供。 -
例如
# Initially apply a service with the given image and env var kn service apply random --image rhuss/random:1.0 --env foo=bar # Update the service to add a ying=yang env var to the already existing one kn service update random --env ying=yang # Apply a full new configuration. Note that foo=bar will be removed # because it is not specified here. kn service apply random --image rhuss/random:1.0 --env ying=yang
kn service import
¶
-
kn service import
是kn service export
的對應項目,可讓您匯入已匯出的服務和所有作用中的修訂版本。作用中的修訂版本是指在流量分割中參照的修訂版本。 -
此命令仍標示為實驗性,而且在修訂版本的
generation
建立方式的匯入中,有一些已知問題。請提供關於如何改進此功能支援的意見反應。
其他 CLI 功能¶
也新增了以下其他功能
- 已將
arm64
版本新增至發行的成品,以及包含所有成品 sha256sum 的checksum.txt
。 - 已針對
--sink
參數新增channel:
字首,以便可以依名稱直接處理通道。 - 別名現在會正確顯示在說明訊息中
- 用戶端 API 作為新的清單篩選器
WithLabel()
,可在列出服務時使用。
Operator v0.19¶
新的 Operator 現在可以部署 serving 和 eventing 元件的新版本 v0.19
。
🐞 錯誤修正 - 為欄位 spec.version 新增驗證(#319) - 新增對 spec.version 的 major.minor 格式的支援(#326) - 移除 0.17.0 的不正確 pre-job(#325)
🧹 清理 - 更新至 pkg test/KubeClient 變更(#304) - Lint:先前的條件包含 return 陳述式,請彈出 else 陳述式(#305) - 捨棄 istio 相依性,並以非結構化操作取代(#311) - 捨棄 pkg/errors 的相依性(#310) - 驗證 major.minor 作為自訂資訊清單的版本比對機制(#320) - 使用 hack 儲存庫作為指令碼(#333) - 使用新的 update_deps 指令碼(#332)
感謝貢獻者 v0.19¶
- @antoineco
- @daisy-ycguo
- @danielhelfand
- @dprotaso
- @dsimansk
- @eclipselu
- @houshengbo
- @ian-mi
- @itsmurugappan
- @joshuawilson
- @julz
- @lberk
- @markusthoemmes
- @mattmoor
- @matzew
- @n3wscott
- @nak3
- @navidshaikh
- @pierDipi
- @rhuss
- @runzexia
- @sheetalsingala
- @slinkydeveloper
- @taragu
- @vaikas
- @whaught
- @yanweiguo
- @zroubalik
深入了解¶
Knative 是一個開放原始碼專案,社群中的任何人都可以使用、改進和享受。我們歡迎您加入我們!
- 歡迎使用 Knative
- 入門文件
- 範例和展示
- Knative 會議和工作群組
- 問題和議題
- Knative 使用者郵寄清單
- Knative 開發郵寄清單
- Knative 在 Twitter 上 @KnativeProject
- Knative 在 StackOverflow 上
- Knative Slack
- Knative 在 YouTube 上