<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # 手動升級kubernetes集群 在我最開始寫作本書的時候,kubernetes剛發布1.6.0版本,而kubernetes基本按照每三個月發布一個大版本的速度迭代,為了使用新特性和只支持新版本kubernetes的配套軟件,升級kubernetes就迫在眉睫,在此我們使用替換kubernets的舊的二進制文件這種暴力的方式來升級測試集群,若升級生產集群還望三思。 另外,自kubernetes1.6版本之后發布的1.7和1.8版本又增加了一些新特性,參考: - [Kubernetes1.7更新日志](../appendix/kubernetes-1.7-changelog.md) - [Kubernetes1.8更新日志](../appendix/kubernetes-1.8-changelog.md) 目前kubernetes的官方文檔上并沒有詳細的手動安裝的集群如何升級的參考資料,只有兩篇關于kubernetes集群升級的文檔。 - 在ubuntu上如何使用juju升級:https://kubernetes.io/docs/getting-started-guides/ubuntu/upgrades/ 手動升級的還沒有詳細的方案,大多是基于管理工具部署和升級,比如juju、kubeadm、kops、kubespray等。 [manual upgrade/downgrade testing for Kubernetes 1.6 - google group](https://groups.google.com/forum/#!topic/kubernetes-dev/jDbGKAsfo4Q),在這個Google group中討論了kubernetes手動升級的問題,并給出了參考建議。 ## 升級步驟 > **注意:**該升級步驟是實驗性的,建議在測試集群上使用,無法保證線上服務不中斷,實際升級完成后無需對線上服務做任何操作。 大體上的升級步驟是,先升級master節點,然后再一次升級每臺node節點。 ## 升級建議 下圖來自[@ahmetb](https://twitter.com/ahmetb)的Twitter,這是他對于0宕機時間的kubernetes集群升級建議。 ![Kubernetes零宕機時間升級建議](https://box.kancloud.cn/efc9b667d74abb1a0b82af4ae174a20f_2400x1800.jpg) 主要包括以下建議: - 應用使用高級對象定義,如支持滾動更新的`Deployment`對象 - 應用要部署成多個實例 - 使用pod的preStop hook,加強pod的生命周期管理 - 使用就緒和健康檢查探針來確保應用存活和及時阻攔應用流量的分發 ### 準備 1. 備份kubernetes原先的二進制文件和配置文件。 2. 下載最新版本的kubernetes二進制包,如1.8.5版本,查看[changelog](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.8.md),下載二進制包,我們使用的是[kubernetes-server-linux-amd64.tar.gz](https://dl.k8s.io/v1.8.5/kubernetes-server-linux-amd64.tar.gz),分發到集群的每個節點上。 ### 升級master節點 停止master節點的進程 ```bash systemctl stop kube-apiserver systemctl stop kube-scheduler systemctl stop kube-controller-manager systemctl stop kube-proxy systemctl stop kubelet ``` 使用新版本的kubernetes二進制文件替換原來老版本的文件,然后啟動master節點上的進程: ```bash systemctl start kube-apiserver systemctl start kube-scheduler systemctl start kube-controller-manager ``` 因為我們的master節點同時也作為node節點,所有還要執行下面的”升級node節點“中的步驟。 ### 升級node節點 關閉swap ```bash # 臨時關閉 swapoff -a # 永久關閉,注釋掉swap分區即可 vim /etc/fstab #UUID=65c9f92d-4828-4d46-bf19-fb78a38d2fd1 swap swap defaults 0 0 ``` 修改kubelet的配置文件 將kubelet的配置文件`/etc/kubernetes/kublet`配置文件中的`KUBELET_API_SERVER="--api-servers=http://172.20.0.113:8080"`行注釋掉。 > **注意:**:kubernetes1.7及以上版本已經沒有該配置了,API server的地址寫在了kubeconfig文件中。 停止node節點上的kubernetes進程: ```bash systemctl stop kubelet systemctl stop kube-proxy ``` 使用新版本的kubernetes二進制文件替換原來老版本的文件,然后啟動node節點上的進程: ```bash systemctl start kubelet systemctl start kube-proxy ``` 啟動新版本的kube-proxy報錯找不到`conntrack`命令,使用`yum install -y conntrack-tools`命令安裝后重啟kube-proxy即可。 ## 檢查 到此升級完成,在master節點上檢查節點狀態: ```bash NAME STATUS ROLES AGE VERSION 172.20.0.113 Ready <none> 244d v1.8.5 172.20.0.114 Ready <none> 244d v1.8.5 172.20.0.115 Ready <none> 244d v1.8.5 ``` 所有節點的狀態都正常,再檢查下原先的運行在kubernetes之上的服務是否正常,如果服務正常的話說明這次升級無誤。 ## API版本變更適配 對于不同版本的Kubernetes,許多資源對象的API的版本可能會變更,下表列出了kubernetes1.5至1.9的API資源對象的版本演進: ![Kuberentes API對象的版本演進](https://box.kancloud.cn/5fc9b019c7fe58ed89da8511dd19718c_1806x2048.jpg) 當我們升級過后,可能出現資源對象的API變更后,原先的YAML文件無法使用的情況,因此需要對新版本的Kubernetes進行適配。對應的API版本轉換工具:<https://github.com/fleeto/kube-version-converter>,可以將Kuberntes API對象轉換到指定版本。 ## 參考 - [Cluster Upgrade #2524](https://github.com/kubernetes/kubernetes/issues/2524) - [Upgrading self-hosted Kubernetes](https://coreos.com/matchbox/docs/latest/bootkube-upgrades.html) - [Upgrading Kubernetes - kops](https://github.com/kubernetes/kops/blob/master/docs/upgrade.md) - [How to Upgrade a Kubernetes Cluster With No Downtime](https://medium.com/retailmenot-engineering/zero-downtime-kubernetes-cluster-upgrades-aab4cac943d2) - [manual upgrade/downgrade testing for Kubernetes 1.6 - google group](https://groups.google.com/forum/#!topic/kubernetes-dev/jDbGKAsfo4Q) - [Notes/Instructions for Manual Upgrade Testing1.5 -> 1.6](https://docs.google.com/document/d/1DtQFhxmKSZJJ_yv8ttweqotburHHZWxaCYnFbjLDA5g/edit) - [Upgrading Kubernetes in Kubespray](https://github.com/kubernetes-incubator/kubespray/blob/master/docs/upgrades.md)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看