「K8S 生態(tài)周報(bào)」內(nèi)容主要包含我所接觸到的 K8S 生態(tài)相關(guān)的每周值得推薦的一些信息。歡迎訂閱知乎專欄「k8s生態(tài)」。
Node Exporter v1.0.0 正式發(fā)布
Prometheus 是最早由 SoundCloud 開源的監(jiān)控告警解決方案。并已經(jīng)成長(zhǎng)為繼 Kubernetes 之后,第二個(gè)從 CNCF 畢業(yè)的項(xiàng)目。伴隨著云原生理念的普及和 Kubernetes 等技術(shù)的發(fā)展, Prometheus 在監(jiān)控領(lǐng)域也有了長(zhǎng)足的發(fā)展。
其主要組件包括 Prometheus,Alertmanager,Node Exporter,Blackbox Exporter 和 Pushgateway 等。
Promethues 采取 Pull 的模式,所采集的 metrics 需要由對(duì)應(yīng)的 Exporter 暴露出來(lái)。我們最常用的用于收集系統(tǒng) metrics 的組件便是 Node Exporter 了。
本周,Node Exporter 終于迎來(lái)了 v1.0.0 版本,標(biāo)志著它更加穩(wěn)定,更加通用。
我在本周專門寫了一篇文章來(lái)介紹它這個(gè)版本中我最關(guān)注的特性: 為 Prometheus Node Exporter 加上認(rèn)證, 我們可以讓監(jiān)控變得更加安全。
當(dāng)然這個(gè)版本中也包含了眾多變更和 bugfix, 這里暫且跳過(guò),有興趣的小伙伴可直接參閱其 ReleaseNote
Docker v19.03.10 發(fā)布
Docker 在本周發(fā)布了 v19.03.10 版本,距離上個(gè)版本 v19.03.9 僅過(guò)了兩周的時(shí)間,如果在使用 Docker v19.03.x 版本的小伙伴,我個(gè)人還是建議你更新到此版本。
此版本中最主要的一個(gè)修復(fù)是網(wǎng)絡(luò)相關(guān)的,具體而言是與內(nèi)置 DNS (embedded DNS) 有關(guān)的問(wèn)題,在特定場(chǎng)景下,如果你創(chuàng)建了自定義網(wǎng)絡(luò),當(dāng)解析外部域名時(shí),可能會(huì)出現(xiàn)解析失敗的情況。
這個(gè)問(wèn)題的根因最早是今年 3 月份我在參與 Docker 開發(fā)時(shí)遇到的,當(dāng)內(nèi)置 DNS 服務(wù)器域名解析失敗時(shí),可能會(huì)觸發(fā) panic 導(dǎo)致 Docker daemon 異常退出。隨后 Sam Whited 在 moby/libnetwork
中快速的對(duì)其進(jìn)行了修正。
- if err != nil && !resp.Truncated {
+ if err != nil && (resp != nil && !resp.Truncated) {
修改的內(nèi)容看起來(lái)很簡(jiǎn)單,在異常處理時(shí),增加了 resp != nil
的條件,這確實(shí)修正了我當(dāng)時(shí)遇到的情況。
但這個(gè)修正卻會(huì)忽略返回錯(cuò)誤但無(wú)響應(yīng)的情況,比如 DNS 服務(wù)器異常之類的情況。但由于后續(xù) Docker 中的邏輯處理中,需要依賴于此處的錯(cuò)誤處理,所以會(huì)錯(cuò)誤的認(rèn)為 DNS 服務(wù)器已連接成功,只是沒(méi)有響應(yīng)罷了。這也就帶來(lái)了問(wèn)題。
所以這次的修正,也還是在這個(gè)位置:
- if err != nil && (resp != nil && !resp.Truncated) {
+ if err != nil && (resp == nil || !resp.Truncated) {
處理了兩種情況:
- 如果返回了錯(cuò)誤,并且響應(yīng)為空;
- 如果返回了錯(cuò)誤,并且和截?cái)嗟捻憫?yīng)無(wú)關(guān);
經(jīng)過(guò)這次的修正,那就基本覆蓋了目前能考慮到的所有情況了。希望大家能盡早升級(jí)版本。
trivy 發(fā)布 v0.8 版本
在之前的 「K8S 生態(tài)周報(bào)」中已經(jīng)介紹過(guò) trivy 工具了,是一款很方便的鏡像安全掃描工具。 本周它發(fā)布了 v0.8 的版本,帶來(lái)了幾個(gè)值得關(guān)注的變更。
- 增加了新的子命令
trivy image $IMAGE_NAME
,同時(shí)廢棄了之前的trivy $IMAGE_NAME
的格式; - 增加
--format=json
用于以 JSON 形式輸出結(jié)果,更便于與其他系統(tǒng)進(jìn)行集成; - 通過(guò)設(shè)置
TRIVY_REGISTRY_TOKEN
環(huán)境變量,可設(shè)置 registry token 便于直接拉取鏡像進(jìn)行掃描;
可直接訪問(wèn) Release 頁(yè)面 下載使用新版本。
上游進(jìn)展
-
#90960 修正了
kubectl create secret docker-registry --from-file
不可用的問(wèn)題; -
#91182 kubelet 的
--seccomp-profile-root
選項(xiàng)移動(dòng)到了配置文件中; - #91171 將 etcd 的鏡像換成了基于 distroless 的鏡像,之前已經(jīng)把其他的一些鏡像都換掉了,主要考慮的點(diǎn)可能是安全和體積相關(guān)的問(wèn)題吧。
歡迎訂閱我的文章公眾號(hào)【MoeLove】