Kubernetes v1.18 正式發佈!搶先一覽

持續關注 「K8S 生態週報」的小夥伴們,在每週的上游進展中,應該已經瞭解到了大多數新的特性和修復,這裡來一併總結下。

Kubernetes 即將發佈,截至發文時,v1.18.0 尚未正式 Release 。不過已經在進行中了, 讓我們搶先看看 Kubernetes v1.18 為我們帶來了哪些新內容吧!

v1.18 中的主要變更集中在 deprecations, metrics , kubectl 和 node 方面。我們逐個來看看:

kubectl 相關變更

引用我在K8S 生態週報| Helm v3.1.2 發佈中的介紹:

  • #88004 正式添加了 kubectl alpha debug 命令,可通過此命令來調試 Kubernetes 中的資源,不過也請注意,此命令尚在 alpha 階段,後續還會有變動。

引用我在K8S 生態週報| containerd v1.2.13 發佈 中的介紹:

  • #87714 kubectl 的 --server-dry-run 被標記為廢棄,並且可以通過使用 --dry-run=server 替代。並且 kubectl 的 --dry-run 參數接收的值,也變成了 client, server 以及 none。示例如下:
<code>(MoeLove) ➜  ~ kubectl create deploy moelove --image=redis --dry-run=client
deployment.apps/moelove created (dry run)
(MoeLove) ➜ ~ kubectl create deploy moelove --image=redis --dry-run=server
deployment.apps/moelove created (server dry run)
(MoeLove) ➜ ~ kubectl create deploy moelove --image=redis --dry-run=none
deployment.apps/moelove created/<code>

此外,kubectl 還有些其他值得注意的內容:

  • #87776 當你使用 kubectl delete --force 刪除資源的時候,不再需要添加 --grace-period=0 了。示例如下:

在 v1.18 中:

<code>(MoeLove) ➜  ~ kubectl get pods 
NAME READY STATUS RESTARTS AGE
redis-65d8df48cf-2rcqq 1/1 Running 0 48s
(MoeLove) ➜ ~ kubectl delete pods redis-65d8df48cf-2rcqq --force
warning: Immediate deletion does not wait for confirmation that the running resource has been terminated. The resource may continue to run on the cluster indefinitely.
pod "redis-65d8df48cf-2rcqq" force deleted/<code>

在 v1.18 之前:

<code>(MoeLove) ➜  ~ kubectl  get pods
kNAME READY STATUS RESTARTS AGE
redis-65d8df48cf-qrd4h 1/1 Running 0 53s
(MoeLove) ➜ ~ kubectl delete pods redis-65d8df48cf-qrd4h --force
warning: --force is ignored because --grace-period is not 0.
pod "redis-65d8df48cf-qrd4h" deleted/<code>

相關廢棄

#85903 kube-apiserver

  • 所有資源的 API apps/v1beta1 和 apps/v1beta2 都將廢棄,請使用 apps/v1 代替;
  • daemonsets, deployments, replicasets 資源的 API extensions/v1beta1 將被廢棄,請使用 apps/v1 代替;
  • networkpolicies 資源的 API extensions/v1beta1 將被廢棄,請使用 networking.k8s.io/v1 代替;
  • podsecuritypolicies 資源的 API extensions/v1beta1 將被廢棄,請使用 policy/v1beta1 代替;

kubelet

  • #86282 kubelet 的 /metrics/resource/v1alpha1 接口被廢棄。其實每次版本發佈,都會有很多 metrics 被廢棄,v1.17 也同樣。

kube-proxy

  • #88512--healthz-port 和 --metrics-port 選項被廢棄,請使用 --healthz-bind-address 和 --metrics-bind-address 代替。

kubeadm

引用 K8S 生態週報| Docker v19.03.7 發佈 中的介紹

  • #88827 kubeadm 廢棄了 kubeadm alpha certs renew 下的 --use-api 參數,目前預期在 v1.19 將其移除,如有用到相關功能的,請注意。

kubectl

引用 K8S 生態週報| Docker v19.03.6-rc2 發佈 中的介紹:

在 Kubernetes v1.18 中,會將之前已標註過期的各類 generator 都移除掉。 也就是說,自 v1.18 起使用 kubectl run 命令主要就是創建 Pod 了,而不會創建多餘的 deploy 之類的。

至於像 service 加了 --expose 倒也還可以創建,只不過類似 --service-generator 這類參數就也都標記廢棄了。

v1.18 之前版本的執行結果是這樣:

<code>(MoeLove) ➜  ~ kubectl run redis --image="redis:alpine"
kubectl run --generator=deployment/apps.v1 is DEPRECATED and will be removed in a future version. Use kubectl run --generator=run-pod/v1 or kubectl create instead.
deployment.apps/redis created
(MoeLove) ➜ ~ kubectl get all -l run=redis
NAME READY STATUS RESTARTS AGE
pod/redis-8544698fd7-tvz5q 1/1 Running 0 14s

NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/redis 1/1 1 1 14s

NAME DESIRED CURRENT READY AGE
replicaset.apps/redis-8544698fd7 1 1 1 14s/<code>

v1.18 版本:

<code>(MoeLove) ➜  bin ./kubectl run redis-new --image="redis:alpine"
pod/redis-new created
(MoeLove) ➜ bin ./kubectl get all -l run=redis-new
NAME READY STATUS RESTARTS AGE
pod/redis-new 1/1 Running 0 12s/<code>

總結

以上內容是我認為在 Kubernetes v1.18 中比較值得關注的部分。待 v1.18.0 正式發佈時,可再參考官方的 ReleaseNote 獲取更加詳盡的內容。


歡迎訂閱我的文章公眾號【MoeLove】


分享到:


相關文章: