背景
rancher官方通常使用autok3s来安装,管理k3s。
可以使用autok3s来一次过安装k3s
1 |
|
autok3s本质是通过ssh配置跳到对应节点执行k3s的安装命令,适用于云间可以直接访问的情况。
1 |
|
但是实际情况有点复杂,出于安全考虑中心云和边缘云之间,会有需要代理的情况,这样的情况autok3s没有办法解决。目前的情况只能手动解决,去到机器上面执行命令(安装集群,添加节点,纳管集群)。而且还有需要离线安装,安装k3s的install.sh也需要修改
autok3s安装k3s流程详解
总流程
autok3s通过k3s-install-script下载install.sh,install.sh会下载k3s-version指定的k3s二进制程序,通过参数执行命令。
详细
- 安装集群或者添加节点都需要k3s token,所以安装时候会先生成,添加节点时候,会从主节点获取token。
安装
- 会挑master ip第一个ip先安装成功一个,循环安装其他的master,worker使用协程异步安装
- merge kube cofig
添加节点使用流程和安装差不多,就是命令不一样,没有改kube config。
改造方案
会区分是否使用代理,install.sh和k3s二进制应用会放到对象存储服务器。通过k3s version找到对应的k3s,install.sh就不需要处理版本问题。程序部署到主节点k8s上面
install.sh也要做对应修改,主要是里面下载k3s的方法download_and_verify和注释掉处理selinux的setup_selinux方法(yum install packeage,离线安装有问题)。
不使用代理的话,和直接autok3s差不多。
-
检验ssh连通性(k8s pod上面也可以连到不同节点)
- 选master一个节点A,通过sftp传输autok3s到节点A
- 在A上面执行autok3s命令
使用代理
- 会sftp发送sshtest到通过代理机器到达节点A
- ssh不支持使用密码参数
- 离线安装sshpass麻烦需要前置工作or使用代码安装,也不知道会遇到什么诡异问题
- 程序只接受代理到节点A的配置,降低代码复杂度(不会直接在部署机直接验证ssh,应为需要知道所有代理方案)
- 在A上面验证检验ssh连通性(执行的是sshtest 命令)
- 通过sftp传输autok3s到节点A
- 在A上面执行autok3s命令