昨天,9月XNUMX日,
用於準備本資料的資訊取自官方公告,
拓樸感知路由
Kubernetes 社群等待這個功能已經很久了—— 拓撲感知服務路由。 如果
總體思路是為 Kubernetes 中的服務提供實現「本地」路由的能力。 在這種情況下,“局部性”意味著“相同的拓撲等級” (拓撲層),這可能是:
- 服務的節點相同,
- 相同的伺服器機架,
- 同一地區
- 同一個雲端供應商,
- ...
使用此功能的範例:
- 具有多個可用區(多可用區)的雲端安裝可節省流量 - 請參閱。
清新插畫 使用來自 AWS 中相同區域但不同可用區的流量範例; - 更低的效能延遲/更好的吞吐量;
- 分片服務,具有每個分片中節點的本地資訊;
- 將 fluidd(或類似物)與收集日誌的應用程式放置在同一節點上;
- ...
這種「了解」拓撲的路由也稱為網路親和性 - 類比 ServiceTopology
在 Kubernetes - alpha 版本中。
有關該功能如何工作以及如何使用它的詳細信息,請閱讀
IPv4/IPv6 雙堆疊支援
重大進展
- 在 kube 代理程式中
實施的 兩種模式(IPv4 和 IPv6)同時運作的可能性; - в
Pod.Status.PodIPs
出現 支援向下 API(同時/etc/hosts
現在他們要求主機新增 IPv6 位址); - 雙堆疊支援
類 (Docker 中的 Kubernetes)和庫貝德姆 ; - 更新了 e2e 測試。
CSI 進展
宣佈穩定
倡議 將磁碟區插件遷移到 CSI -
目前,AWS EBS 驅動程式的遷移已在 beta 版本中準備就緒(kubernetes.io/aws-ebs
)和 GCE PD(kubernetes.io/gce-pd
)。 其他儲存設施的預測如下:
我們討論了 K8s 中的「傳統」儲存支援如何進入 CSI
此外,CSI 上下文中的另一個重要功能源自於 K1.17s 8(alpha 實作),在 Kubernetes 1.12 版本中達到了 beta 狀態(即預設為啟用) -
- 將 CSI 外部快照 sidecar 拆分為兩個控制器,
- 新增了刪除的秘密 (刪除秘密) 作為磁碟區快照內容的註釋,
- 新的終結器 (終結器) 以防止在存在剩餘連接時刪除快照 API 物件。
在 1.17 版本中,此功能由三個 CSI 驅動程式支援:GCE 永久磁碟 CSI 驅動程式、Portworx CSI 驅動程式和 NetApp Trident CSI 驅動程式。 有關其實現和使用的更多詳細資訊可以在
雲端提供者標籤
自動標籤 根據使用的雲端提供者分配給創建的節點和卷,自 K8s 1.2 發布以來,已經在 Kubernetes 中作為 beta 版本使用了很長一段時間 (2016 年 XNUMX 月!)。 鑑於它們長期以來的廣泛使用,開發人員
因此,它們都被相應地重命名(通過拓撲):
-
beta.kubernetes.io/instance-type
→node.kubernetes.io/instance-type
-
failure-domain.beta.kubernetes.io/zone
→topology.kubernetes.io/zone
-
failure-domain.beta.kubernetes.io/region
→topology.kubernetes.io/region
……但仍可以使用舊名稱(為了向後相容)。 但是,建議所有管理員切換到目前標籤。
kubeadm 的結構化輸出
首次以 alpha 版本呈現
實現此功能的動機(根據
雖然 Kubernetes 可以手動部署,但此操作的事實上(如果不是法律上)標準是使用 kubeadm。 Terraform 等流行的系統管理工具依賴 kubeadm 進行 Kubernetes 部署。 計劃對 Cluster API 進行改進,包括使用 kubeadm 和 cloud-init 進行 Kubernetes 引導的可組合套件。
如果沒有結構化輸出,即使是乍看之下最無害的變更也可能會破壞 Terraform、Cluster API 和其他使用 kubeadm 結果的軟體。
我們的近期計劃包括支援(以結構化輸出的形式)以下 kubeadm 命令:
-
alpha certs
-
config images list
-
init
-
token create
-
token list
-
upgrade plan
-
version
對指令的 JSON 回應的圖示 kubeadm init -o json
:
{
"node0": "192.168.20.51:443",
"caCrt": "sha256:1f40ff4bd1b854fb4a5cf5d2f38267a5ce5f89e34d34b0f62bf335d74eef91a3",
"token": {
"id": "5ndzuu.ngie1sxkgielfpb1",
"ttl": "23h",
"expires": "2019-05-08T18:58:07Z",
"usages": [
"authentication",
"signing"
],
"description": "The default bootstrap token generated by 'kubeadm init'.",
"extraGroups": [
"system:bootstrappers:kubeadm:default-node-token"
]
},
"raw": "Rm9yIHRoZSBhY3R1YWwgb3V0cHV0IG9mIHRoZSAia3ViZWFkbSBpbml0IiBjb21tYW5kLCBwbGVhc2Ugc2VlIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL2FrdXR6LzdhNjg2ZGU1N2JmNDMzZjkyZjcxYjZmYjc3ZDRkOWJhI2ZpbGUta3ViZWFkbS1pbml0LW91dHB1dC1sb2c="
}
穩定其他創新
總的來說,Kubernetes 1.17 的發布是在“穩定」 這是因為其中的許多功能(它們的總數是 14) 獲得 GA 狀態。 他們之中:
- 根據一定條件「標記」節點(
),出現在TaintNodesByCondition
K8s 1.8 ; -
手錶書籤 - 一種新型事件,其標籤為所有物件達到某一版本(resourceVersion
) 已被手錶處理; -
默認值 (預設)自訂資源; -
容器之間共用 在 pod 程序命名空間中; -
ScheduleDaemonSetPods
-在 DaemonSet 中調度 pod 使用 kube-scheduler (而非 DaemonSet 控制器); -
動態限制 卷的數量取決於節點類型; -
環境變數支持 對於安裝為的目錄名稱subPath
; -
Kubelet心跳傳輸 到專門的租賃 API; - 「終結器保護」(
終結器保護 ) 對於負載平衡器(刪除LoadBalancer資源前檢查對應的Service資源); -
kube-apiserver 最佳化 使用多個監視相同物件集的監視時的效能 - 透過避免每個監視程式重複序列化相同物件來實現。
其他變化
當然,Kubernetes 1.17 的完整創新清單不僅限於上面列出的內容。 以下是其他一些(有關更完整的列表,請參閱
- 上一版本提供的功能已達到測試版
;RunAsUserName
用於窗戶 - 類似的變化
遭遇 EndpointSlice API(同樣來自 K8s 1.16),但目前預設未啟用此用於提高 Endpoint API 效能/可擴充性的解決方案; - Pod 現在對於叢集運作至關重要
可以被創建 不僅在命名空間中kube-system
(詳細資訊請參閱文檔限制優先消費 ); - kubelet 的新選項 -
— 允許您明確定義為系統保留的 CPU 清單;--reserved-cpus
- 為
kubectl logs
提出了 新旗幟--prefix
,將pod和來源容器的名稱新增至日誌的每一行; - в
label.Selector
添加 RequiresExactMatch
; - kube-dns 中的所有容器
現在正在運行 特權較少; -
超級庫貝 分離到單獨的 GitHub 儲存庫中,並且將不再包含在 Kubernetes 版本中; - 顯著地
提高性能 用於非 UDP 連接埠的 kube-proxy。
依賴變化:
- kubeadm 包含的 CoreDNS 版本是 1.6.5;
- crictl版本更新至v1.16.1;
- CSI 1.2.0;
- etcd 3.4.3;
- 最新測試的Docker版本升級至19.03;
- 建置 Kubernetes 1.17 所需的最低 Go 版本是 1.13.4。
聚苯乙烯
另請閱讀我們的博客:
- «
Kubernetes 1.16:主要創新概述 “; - «
Kubernetes 1.15:主要創新概述 “; - «
Kubernetes 1.14:主要創新概述 “; - «
Kubernetes 1.13:主要創新概述 “。
來源: www.habr.com