「K8S 生態週報」內容主要包含我所接觸到的 K8S 生態相關的每週值得推薦的一些信息。歡迎訂閱知乎專欄「k8s生態」。node
Prometheus 是最先由 SoundCloud 開源的監控告警解決方案。並已經成長爲繼 Kubernetes 以後,第二個從 CNCF 畢業的項目。伴隨着雲原生理念的普及和 Kubernetes 等技術的發展, Prometheus 在監控領域也有了長足的發展。git
其主要組件包括 Prometheus,Alertmanager,Node Exporter,Blackbox Exporter 和 Pushgateway 等。github
Promethues 採起 Pull 的模式,所採集的 metrics 須要由對應的 Exporter 暴露出來。咱們最經常使用的用於收集系統 metrics 的組件即是 Node Exporter 了。docker
本週,Node Exporter 終於迎來了 v1.0.0 版本,標誌着它更加穩定,更加通用。json
我在本週專門寫了一篇文章來介紹它這個版本中我最關注的特性: 爲 Prometheus Node Exporter 加上認證, 咱們可讓監控變得更加安全。安全
固然這個版本中也包含了衆多變動和 bugfix, 這裏暫且跳過,有興趣的小夥伴可直接參閱其 ReleaseNote服務器
Docker 在本週發佈了 v19.03.10 版本,距離上個版本 v19.03.9 僅過了兩週的時間,若是在使用 Docker v19.03.x 版本的小夥伴,我我的仍是建議你更新到此版本。網絡
此版本中最主要的一個修復是網絡相關的,具體而言是與內置 DNS (embedded DNS) 有關的問題,在特定場景下,若是你建立了自定義網絡,當解析外部域名時,可能會出現解析失敗的狀況。less
這個問題的根因最先是今年 3 月份我在參與 Docker 開發時遇到的,當內置 DNS 服務器域名解析失敗時,可能會觸發 panic 致使 Docker daemon 異常退出。隨後 Sam Whited 在 moby/libnetwork
中快速的對其進行了修正。工具
- if err != nil && !resp.Truncated {
+ if err != nil && (resp != nil && !resp.Truncated) {
複製代碼
修改的內容看起來很簡單,在異常處理時,增長了 resp != nil
的條件,這確實修正了我當時遇到的狀況。
但這個修正卻會忽略返回錯誤但無響應的狀況,好比 DNS 服務器異常之類的狀況。但因爲後續 Docker 中的邏輯處理中,須要依賴於此處的錯誤處理,因此會錯誤的認爲 DNS 服務器已鏈接成功,只是沒有響應罷了。這也就帶來了問題。
因此此次的修正,也仍是在這個位置:
- if err != nil && (resp != nil && !resp.Truncated) {
+ if err != nil && (resp == nil || !resp.Truncated) {
複製代碼
處理了兩種狀況:
通過此次的修正,那就基本覆蓋了目前能考慮到的全部狀況了。但願你們能儘早升級版本。
在以前的 「K8S 生態週報」中已經介紹過 trivy 工具了,是一款很方便的鏡像安全掃描工具。 本週它發佈了 v0.8 的版本,帶來了幾個值得關注的變動。
trivy image $IMAGE_NAME
,同時廢棄了以前的 trivy $IMAGE_NAME
的格式;--format=json
用於以 JSON 形式輸出結果,更便於與其餘系統進行集成;TRIVY_REGISTRY_TOKEN
環境變量,可設置 registry token 便於直接拉取鏡像進行掃描;可直接訪問 Release 頁面 下載使用新版本。
kubectl create secret docker-registry --from-file
不可用的問題;--seccomp-profile-root
選項移動到了配置文件中;歡迎訂閱個人文章公衆號【MoeLove】