我将集群升级到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
并重新安装了kubectl
和kubadm
,然后加入了我的集群,但是当我执行{{ 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
时,即使列出节点时它注册为正确的版本,我也会得到错误的版本。
我的集群正常工作,所以不确定版本差异之间是怎么回事。
答案 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