kubeadm

Kubeadm offline installer 升级到 1.7.0 版本

仓库地址

本来做这玩意的初衷就是,Kubeadm 和 Kubernetes 是一家人,升级比较方便跟得住。未曾想第一次大版本升级,就遇到了个不大不小的坑,导致安装无法完成。这个 Issue 会在 1.7.1 修补,下面介绍一下曲线救国的安装方式。

这一问题的似乎是 kubeadm 的更新破坏了 TLS 自动授权过程造成的,具体症状是:主节点的kubeadm init完成之后,在其他节点上使用kubeadm join --token=xxxx host_ip:host_port命令加入集群时,集群会反复输出错误信息,大意是kube-public命名空间中名为cluster-info的 ConfigMap 中没有对应 token 的签署记录。

使用 kubectl 查看该 ConfigMap,和 1.6.6 的集群作对照(是的,安装的够快,想要什么版本都容易),发现 1.7.0 里面这个 ConfigMap 的元素列表确缺少这一块内容。

kubeadm 踩坑记

Kubeadm 是个让我爱恨交加的东西,一方面,我不认为一个生产集群应该使用这样一个第三方工具进行在线安装,尤其是在目前这种网络环境之下;而另外一方面,Kubeadm 这一工具是随 Kubernetes 同步更新的,其中包含了大量的集群配置方面的最佳实践,是追新的最佳参考,所以这个讨厌的东西的运行是必须需要得到保障的。kubeadm 的执行过程沉默到令人发指,因此下面分享几个使用过程中遇到的一些问题和解决的思路和方法,希望对同行们有所帮助。

下面的例子是基于 kubeadm 1.6.6 + Centos 7 的执行过程记录的。

kubeadm 安装 Kubernetes 1.6.2

因为一些莫可名状的原因,国内网络使用 Kubeadm 颇有难度,这里大概说一下过程中的一些坑。

主体流程遵循官网指南:https://kubernetes.io/docs/getting-started-guides/kubeadm/

1/4 准备工作

这里用包管理的方式安装 kubeadm、Docker 等组件。需要注意一点点的是,如果用的非 Root 用户,要注意 sudo 的时候的环境代理设置问题。或者干脆在 apt/yum 的配置文件中写入代理服务器。

另外这里安装 Docker 之后,注意给 Docker 配置代理。或者可以直接想法子搞到下面列表中的镜像,并导入 Docker 之中:

镜像准备

下面提到的镜像基于目前的 1.6.2 版本,每次更新都会有不同。

页面