AWS EC2上KOPS部署的K8s 1.18.14升级失败,求解决指南
问题背景
我们有一个通过KOPS部署在AWS EC2上的Kubernetes集群,相关版本信息如下:
% kops version Client version: 1.25.1
% kubectl version WARNING: This version information is deprecated and will be replaced with the output from kubectl version --short. Use --output=yaml|json to get the full version. Client Version: version.Info{Major:"1", Minor:"25", GitVersion:"v1.25.2", GitCommit:"5835544ca568b757a8ecae5c153f317e5736700e", GitTreeState:"clean", BuildDate:"2022-09-21T14:25:45Z", GoVersion:"go1.19.1", Compiler:"gc", Platform:"darwin/arm64"} Kustomize Version: v4.5.7 Server Version: version.Info{Major:"1", Minor:"18", GitVersion:"v1.18.14", GitCommit:"89182bdd065fbcaffefec691908a739d161efc03", GitTreeState:"clean", BuildDate:"2020-12-18T12:02:35Z", GoVersion:"go1.13.15", Compiler:"gc", Platform:"linux/amd64"} WARNING: version difference between client (1.25) and server (1.18) exceeds the supported minor version skew of +/-1
尝试通过KOPS自动升级时失败,执行kops update cluster命令返回如下错误:
% kops update cluster Using cluster from kubectl context: <CLUSTER NAME> ********************************************************************************* A new kops version is available: 1.25.2 Upgrading is recommended More information: https://github.com/kubernetes/kops/blob/master/permalinks/upgrade_kops.md#1.25.2 ********************************************************************************* This version of Kubernetes is no longer supported; upgrading Kubernetes is required More information: https://github.com/kubernetes/kops/blob/master/permalinks/upgrade_k8s.md#1.22.0 ********************************************************************************* Error: kubernetes upgrade is required
将KOPS集群中的Kubernetes版本修改为1.19.16后,再次执行kops update cluster仍返回相同错误:
% kops edit cluster # changed line "kubernetesVersion: 1.18.14" to "kubernetesVersion: 1.19.16" % kops update cluster Using cluster from kubectl context: <CLUSTER NAME> ********************************************************************************* A new kops version is available: 1.25.2 Upgrading is recommended More information: https://github.com/kubernetes/kops/blob/master/permalinks/upgrade_kops.md#1.25.2 ********************************************************************************* This version of Kubernetes is no longer supported; upgrading Kubernetes is required More information: https://github.com/kubernetes/kops/blob/master/permalinks/upgrade_k8s.md#1.22.0 ********************************************************************************* Error: kubernetes upgrade is required
咨询问题
- 是否有官方指南可指导完成Kubernetes集群的升级操作?
- 是否可以先降级KOPS到支持从Kubernetes 1.18升级的旧版本,完成升级后再将KOPS升级回高版本?
解答
问题1:官方升级指南
Kops官方提供了完整的Kubernetes集群升级流程指南,核心遵循小版本逐步升级的原则(比如从1.18→1.19→1.20,依次升级直到目标版本),同时需要严格匹配对应Kops版本与Kubernetes版本的兼容关系,避免跨版本跳跃导致的兼容性问题。
问题2:降级Kops再升级集群的可行性
完全可以通过这种方式解决当前问题,具体操作逻辑如下:
- 降级Kops客户端:Kops 1.21是最后一个正式支持Kubernetes 1.18的版本,安装该版本的Kops客户端即可对1.18版本集群进行操作。
- 逐步升级Kubernetes集群:使用降级后的Kops先将集群从1.18升级到1.19,验证集群节点、组件状态正常后,再升级到1.20,以此类推,直到升级到当前高版本Kops支持的最低Kubernetes版本(如1.22及以上)。
- 升级回高版本Kops:集群版本达标后,重新安装高版本Kops客户端,即可正常执行后续的集群维护操作。
内容的提问来源于stack exchange,提问作者Farzad
相关产品推荐
相关产品推荐

