kubeadm的升级差异

时间:2018-12-21 20:02:23

标签: kubernetes kubeadm

我将集群升级到1.13.1,如此处所示

[gms@thalia2 ~]$ kubectl get nodes
NAME                  STATUS    ROLES     AGE       VERSION
thalia0               Ready     master    56d       v1.13.1
thalia1               Ready     <none>    18d       v1.13.1
thalia2               Ready     <none>    36m       v1.13.1
thalia3               Ready     <none>    56d       v1.13.1
thalia4               Ready     <none>    17d       v1.13.1

但是,当我在kubeadm version上运行thalia2时,我得到了

[gms@thalia2 ~]$ kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"11", GitVersion:"v1.11.2", GitCommit:"bb9ffb1654d4a729bb4cec18ff088eacc153c239", GitTreeState:"clean", BuildDate:"2018-08-07T23:14:39Z", GoVersion:"go1.10.3", Compiler:"gc", Platform:"linux/amd64"}

此节点上的升级无法顺利进行。当我按照Upgrading kubeadm进行尝试时,出现了

错误
[gms@thalia2 ~]$ sudo kubeadm upgrade node config --kubelet-version $(kubelet --version | cut -d ' ' -f 2)
[kubelet] Downloading configuration for the kubelet from the "kubelet-config-1.11" ConfigMap in the kube-system namespace
configmaps "kubelet-config-1.11" is forbidden: User "system:node:thalia2" cannot get resource "configmaps" in API group "" in the namespace "kube-system": no path found to object

为避免这种情况,我做了一个kubeadm reset并重新安装了kubectlkubadm,然后加入了我的集群,但是当我执行{{ 1}}。

如果我做kubeadm version我会得到

kubectl get cm -n kube-system

而且,如果我在上述节点上列出了已安装的软件包,则会得到:

NAME                                 DATA      AGE
calico-config                        2         56d
coredns                              1         6d5h
extension-apiserver-authentication   6         56d
kube-proxy                           2         56d
kubeadm-config                       2         56d
kubelet-config-1.12                  1         56d
kubelet-config-1.13                  1         4h5m

*编辑1 * 注意:最初,群集已从1.11升级到1.12。

这次,我做了从1.12到1.13的路由,那是当我在单个节点上收到上面指出的错误时。这就是为什么我尝试在gms@thalia2 ~]$ sudo yum list installed kube* Loaded plugins: enabled_repos_upload, package_upload, priorities, product-id, search-disabled-repos, subscription-manager Installed Packages kubeadm.x86_64 1.13.1-0 @kubernetes kubectl.x86_64 1.13.1-0 @kubernetes kubelet.x86_64 1.13.1-0 @kubernetes kubernetes-cni.x86_64 0.6.0-0 @kubernetes 节点上进行全新安装的原因。但是,当我执行thalia2时,即使列出节点时它注册为正确的版本,我也会得到错误的版本。

我的集群正常工作,所以不确定版本差异之间是怎么回事。

1 个答案:

答案 0 :(得分:0)

根据Kubernetes(kubeadm)documentation

  

每个升级过程可能有所不同,因此我们分别记录了每个次要升级过程。有关特定于版本的更多升级指导,请参阅以下资源:

           

您只能从一个次要版本升级到下一个次要版本。也就是说,升级时不能跳过版本。例如,您只能从1.10升级到1.11,不能从1.9升级到1.11。

如果您已按照说明进行操作,是否可以对升级步骤和获得中间结果的问题提供更多详细信息。

更新:

Kubernetes的某些组件可能未正确更新。
此解决方法可帮助您将组件更新到特定版本:

# Run  the following commands where you have kubectl configured
# Evict scheduled pods from the worker node and cordon it
$ kubectl drain thalia2

# Run the following commands on the node worker node (thalia2)
# Upgrade/Downgrade Kubernetes components
# Suitable for Ubuntu 
$ apt-get install -y kubectl=1.13.1-00 kubeadm=1.13.1-00 kubelet=1.13.1-00

# Suitable for CentOS
$ yum install kubelet-1.13.1-0 kubeadm-1.13.1-0 kubectl-1.13.1-0 --disableexcludes=kubernetes

$ kubeadm upgrade node config --kubelet-version $(kubelet --version | cut -d ' ' -f 2)
$ systemctl restart kubelet

# Run  the following commands where you have kubectl configured
# Enable worker node for pods scheduling.
$ kubectl uncordon thalia2