K8S 生態週報| KIND v0.8 正式發佈

「K8S 生態週報」內容主要包含我所接觸到的 K8S 生態相關的每週值得推薦的一些信息。歡迎訂閱知乎專欄「k8s生態」node

KIND v0.8 正式發佈

本週 KIND(Kubernetes In Docker) 正式發佈了 v0.8 版本,這次最主要的是爲你們帶來了 持久化集羣,當主機或者 dockerd 重啓後,集羣可自動恢復。nginx

Breaking Changes

  • 這次默認的集羣鏡像是 Kubernetes v1.18.2 : kindest/node:v1.18.2@sha256:7b27a6d0f2517ff88ba444025beae41491b016bc6af573ba467b70c5e8e0d85f ;
  • 當使用 KIND v0.8+ 啓動集羣時,必須使用經過 KIND v0.8+ 構建的 node 鏡像,不然沒法按預期工做;
  • 新版本中, KIND 建立出來的全部 Node ,都使用自定義的 bridge 網絡(默認名稱爲 kind,可經過環境變量 KIND_EXPERIMENTAL_DOCKER_NETWORK 修改);
  • 你能夠在啓動任意容器時,增長 --network=kind,以便讓它和 KIND 建立的集羣網絡互通;

這裏須要特別說一下關於持久化集羣的特性。在以前版本中,若是你的 dockerd 進行了重啓操做,或者是重啓了系統,那可能會致使集羣 IP 從新分配,進而致使集羣狀態異常。git

在以前版本中,咱們建議全部的用戶,不要依賴集羣持久化。但鑑於有很多用戶的反饋,因此我先實現了初版。github

具體作法其實也簡單,原先的痛點在於重啓後,容器 IP 的從新分配,因此所有以域名的方式進行替代,另外就是藉助於 Docker 的 embedded DNS 來完成 LB 層對 master 的代理。docker

但這個實現,會產生一個 DNS 查詢異常的問題,我在專欄 《Docker 核心知識必知必會》 網絡篇中深刻介紹過其原理。以前我考慮過經過 --resolv-conf 參數,將主機的 resolver 提供給 kubelet 使用,但這種方式並不夠優雅,並且排查問題的話,因爲不與 kubelet 使用相同 resolv.conf ,也會帶來一些麻煩;以後考慮將主機和 Node 中的 resolver 進行合併,但合併的話,也會帶來一些隱患。安全

本次版本中的實現,實際上是對 Docker embedded DNS 作了不少 hack,主動對網絡作了管理,以此來完成此需求。網絡

Features

  • kind delete clusters --all 可用於刪除全部集羣;
  • 配置文件中新增了頂級 featureGates 字段,來開啓相關特性;
  • NO_COLOR 的支持;
  • 實驗性的對 podman 提供了支持;
  • 支持經過 KIND_CLUSTER_NAME 環境變量來指定集羣名稱;
  • 支持動態 PV 在 k8s v.11.x;

以上就是這次 KIND v0.8 中值得注意的內容,歡迎你們下載使用!使用方式可參考《使用 Kind 在離線環境建立 K8S 集羣》負載均衡

NGINX Ingress Controller 1.7.0 發佈

本週 NGINX Ingress Controller 1.7.0 發佈了,包含了衆多更新:框架

  • 支持經過新的資源 TransportServerGlobalConfiguration 配置 TCP/UDP/TLS 的負載均衡,這樣即可經過 NGINX Ingress Controller 在 Kubernetes 上交付非基於 HTTP 的應用程序;
  • 支持在 VirtualServerVirtualServerRoute 資源中配置錯誤頁;
  • 支持在 Kubernetes 或 OpenShift 上,經過 NGINX Ingress Operator 管理 Ingress 的生命週期;

關於此版本的更詳細內容,請參考其 ReleaseNoteui

上游進展

  • #89285 移除了 k/k 中對上游 prometheus client 庫的依賴,所有替換成了 kubernetes 實現的 metrics 框架。這是爲了實施早先的一個 指標穩定性遷移(Metrics Stability Migration)的 KEP
  • #90394 修正了 kubeadm 中對 resolvConf 的行爲。kubeadm 將不會在 /var/lib/kubelet/kubeadm-flags.env 中設置 --resolv-conf 的值,而是使用 KubeletConfiguration 對其進行配置;
  • #90463 autoscaling/v2beta1 已廢棄,推薦使用 autoscaling/v2beta2
  • #89594 將不可變 Secrets/ConfigMaps 提高至 Beta 階段,而且 默認打開 ,用戶可經過設置 Immutable 字段來標記其內容爲不可變;
  • #90449 移除了 events API 中未使用的 series.state 字段;

項目推薦

kured 是一個用於節點安全重啓的 Daemonset 。它包含如下特性:

  • 監聽重啓標誌,例如 /var/run/reboot-required
  • 利用 API server 中的鎖來保障每次只重啓一個節點;
  • (可選)根據 Prometheus 報警或者選定 Pod 的狀況下,延遲重啓;
  • 在重啓節點前會自動執行 cordondrain ,在節點重啓完成後執行 uncordon

這在系統須要按期維護時候,是很是有用的。同時也可本身手動進行觸發,而不需每次重複操做。


歡迎訂閱個人文章公衆號【MoeLove】

TheMoeLove
相關文章
相關標籤/搜索