Kubernetes 1.16.x 升級後的若干問題

Kubernentes已是1.16.2版本了,引入了很多很好的新功能。不過,若是是從之前的版本跨大版本升級上來的,仍是會遇到不少的問題。node

一、主要變化

除了apiserver/controller/scheduler幾個主要的服務的鏡像版本變爲1.16.2以外,其它包括:python

  • etcd使用的是3.3.15-0(還不是最新的4.x系列)。
  • CoreDNS使用的是 1.6.2(1.15.x仍是1.3.1,變化比較大),這個會引發啓動失敗。

二、Docker支持

Ubuntu系統自動升級Docker-CE到了19.3.4,可是使用kubectl get node -owide獲取節點信息發現,始終是Not Ready狀態。git

查看狀態:kubectl describe node/podc01,發現CNI失敗。github

將其降級到19.3.2後就能夠了。docker

三、CoreDNS

CoreDNS使用的是 1.6.2(1.15.x仍是1.3.1,變化比較大),這個會引發啓動失敗。json

主要緣由是直接對Docker Image升級的話,配置參數沒有同步升級。api

可是老的參數對新的版本又不適用,這個就比較悲催了。ide

只能期待發佈一個新的參數或升級工具,或者之後CoreDNS將跨版本的配置參數封裝在鏡像裏。tornado

目前這個問題尚未更好的解決方案,等待CoreDNS社區牛人出手。工具

四、Dashboard

Dashboard 1.x只支持到1.15,升級鏡像到1.10.1版本也不行,並且再也不維護、更新了。

Kubernetes 1.16.x只能使用Dashboard 2.x。

  • 可是這個呢,目前還在開發中,最新的是Beta5。
  • Dashboard 2.x有幾個大的變化:
    • 缺省的安裝模版中namespace爲kubernetes-dashboard,不是kube-system了。
    • Docker image位置變了,從gcr摘出來了,變爲kubernetesui/dashboard:v2.0.0-beta5。
      • 這個對中國用戶到是方便了,能夠系統直接pull下來。
  • 安裝指示安裝完Dashboard 2.x,登陸到系統,信息顯示不出來。

五、JupyterHub

原來的JupuyterHub for K8s運行得好好的,升級完後Server就啓動不起來了。

進去查看信息:

supermap@podc01:~$ kubectl get pod -n jupyter -owide
NAME                     READY   STATUS    RESTARTS   AGE   IP             NODE     NOMINATED NODE   READINESS GATES
hub-75d575499b-6d76n     1/1     Running   0          19m   10.244.0.15    podc02   <none>           <none>
proxy-589655677b-qcfrm   1/1     Running   0          19m   10.244.1.140   podc03   <none>           <none>

kubectl logs hub-75d575499b-6d76n -n jupyter

hub和proxy的pod和svc都是能夠的。

進一步檢查hub的日誌:

kubectl logs pod/hub-75d575499b-6d76n -n jupyter

獲得下面的出錯信息,是JupyterHub啓動Notebook Server是執行腳本過程當中出錯:

E 2019-10-28 07:46:58.604 JupyterHub log:158] 500 GET /hub/user/supermap/ (supermap@10.244.7.0) 1028.54ms
[I 2019-10-28 07:47:18.636 JupyterHub log:158] 302 GET /hub/spawn -> /user/supermap/ (supermap@10.244.7.0) 167.95ms
[I 2019-10-28 07:47:18.672 JupyterHub log:158] 302 GET /user/supermap/ -> /hub/user/supermap/ (@10.244.7.0) 1.02ms
[E 2019-10-28 07:47:19.404 JupyterHub user:477] Unhandled error starting supermap's server: '<' not supported between instances of 'datetime.datetime' and 'NoneType'
[E 2019-10-28 07:47:19.724 JupyterHub gen:974] Exception in Future <Task finished coro=<BaseHandler.spawn_single_user.<locals>.finish_user_spawn() done, defined at /usr/local/lib/python3.6/dist-packages/jupyterhub/handlers/base.py:619> exception=TypeError("'<' not supported between instances of 'datetime.datetime' and 'NoneType'",)> after timeout
    Traceback (most recent call last):
      File "/usr/local/lib/python3.6/dist-packages/tornado/gen.py", line 970, in error_callback
        future.result()
      File "/usr/local/lib/python3.6/dist-packages/jupyterhub/handlers/base.py", line 626, in finish_user_spawn
        await spawn_future
      File "/usr/local/lib/python3.6/dist-packages/jupyterhub/user.py", line 489, in spawn
        raise e
      File "/usr/local/lib/python3.6/dist-packages/jupyterhub/user.py", line 409, in spawn
        url = await gen.with_timeout(timedelta(seconds=spawner.start_timeout), f)
      File "/usr/local/lib/python3.6/dist-packages/kubespawner/spawner.py", line 1648, in _start
        events = self.events
      File "/usr/local/lib/python3.6/dist-packages/kubespawner/spawner.py", line 1503, in events
        for event in self.event_reflector.events:
      File "/usr/local/lib/python3.6/dist-packages/kubespawner/spawner.py", line 62, in events
        key=lambda x: x.last_timestamp,
    TypeError: '<' not supported between instances of 'datetime.datetime' and 'NoneType'

目前,尚未找到好的解決辦法,只能先放到項目的issue裏,等着。

 

鑑於以上緣由,仍是你們再等一等再升級到1.16.x。

相關文章
相關標籤/搜索