Closed hongqn closed 2 years ago
kubectl 需要和 cluster 的版本保持不超过 1 minor 版本差才能正常工作ref ,如果本机安装的版本与 cluster 不一致的话,可能会引起异常。
如果需要管理多个不同版本的集群,就会需要频繁切换本地 kubectl 版本,比较不便且容易出错。
由于 lain 的定位涵盖了 kubectl 管理,且 lain use 会切换默认管理的集群,感觉可以在 lain use 时检查 kubectl 版本是否匹配,如果不匹配,输出警告信息。
lain use
如果有合适的修复方法,比如通过 asdf 自动安装正确版本和切换版本ref,也可以考虑发现不匹配时进行自动切换。
Proposal 如下:
kubectl version
asdf install kubectl [合适版本]
asdf plugin add kubectl
asdf global kubectl [合适版本]
有一个 Apple M1 的坑是,kubectl 没有发布 arm64 版本,使用 asdf 安装时,需要设置上 ASDF_KUBECTL_OVERWRITE_ARCH=amd64 环境变量 。
ASDF_KUBECTL_OVERWRITE_ARCH=amd64
由于 lain 目前没有插件或者客户端 hook 配置机制,将 asdf 纳入代码是否合理,可以评估。
目前lain已经做的事情是:提示用户将不同版本的kubectl存放在 /usr/local/bin/kubectl-1.xx,如果调用kubectl的时候发现超出了兼容性范围,则直接对/usr/local/bin/kubectl做link,使之指向合适的版本。
/usr/local/bin/kubectl-1.xx
/usr/local/bin/kubectl
asdf看上去很不错,比手动安装要好得多。会安排调研和整合。
kubectl 需要和 cluster 的版本保持不超过 1 minor 版本差才能正常工作ref ,如果本机安装的版本与 cluster 不一致的话,可能会引起异常。
如果需要管理多个不同版本的集群,就会需要频繁切换本地 kubectl 版本,比较不便且容易出错。
由于 lain 的定位涵盖了 kubectl 管理,且
lain use
会切换默认管理的集群,感觉可以在lain use
时检查 kubectl 版本是否匹配,如果不匹配,输出警告信息。如果有合适的修复方法,比如通过 asdf 自动安装正确版本和切换版本ref,也可以考虑发现不匹配时进行自动切换。
Proposal 如下:
lain use
切换集群时,让 ~/.kube/config 指向待管理的集群之后,通过kubectl version
命令拿到双端版本asdf install kubectl [合适版本]
(如尚未安装 kubectl plugin ,则先asdf plugin add kubectl
)asdf global kubectl [合适版本]
切换 kubectl 版本有一个 Apple M1 的坑是,kubectl 没有发布 arm64 版本,使用 asdf 安装时,需要设置上
ASDF_KUBECTL_OVERWRITE_ARCH=amd64
环境变量 。由于 lain 目前没有插件或者客户端 hook 配置机制,将 asdf 纳入代码是否合理,可以评估。