之前分享过两篇关于使用 K10 即时恢复 Kubernetes 上应用的方法这篇和这篇,这个功能对于 Kubernetes 环境还是有一些要求的。当时给大家详细分享了手工部署的过程,今天我为大家带来一个一键部署的脚本,只要有 VMware 基础环境,能够正常连接 Github/k8s.io 网络,那么这个脚本会非常方便,启动脚本后只需要等待 10 分钟左右,你就可以直接使用这个单节点的 k3s 环境了。
脚本仓库地址:
https://github.com/Coku2015/k3s_vsphere
前提条件
在使用这个脚本之前,需要提前准备一下能够用于自动化部署的镜像和虚拟机自定义规范,脚本会自动调用这个镜像和规范来部署 k3s 环境。
虚拟机镜像
我推荐使用 Ubuntu 20.04LTS 作为运行 k3s 的环境,虚拟机模版镜像的制作也推荐基于这个版本。
模版虚拟机,我一般硬件配置比较低 1vCPU,2GB 内存和 50GB 硬盘就足够了。
虚拟机模版的安装可以有多种方法,最简单直接的是用 iso 进行一个最小化的安装,在安装结束后,为了能够进行后续的全自动远程配置,需要在这个模版中做一些调整,首先是启用密钥对认证远程登录:
# 在你的Linux机器上创建远程连接的密钥对
$ ssh-keygen
# 创建完成后,你会得到id_rsa和id_rsa.pub两个文件,分别是私钥和公钥。
# 用下面这个命令远程复制到模版机器上,假设ubuntu的用户名为ubuntu
$ ssh-copy-id ubuntu@ubuntu_template_vm
# 试试拷贝完成后的效果, 正常还是会提示输入密码。
$ ssh ubuntu@ubuntu_template_vm
接下去,ssh 远程进入这台 Ubuntu 后sudo -i
到 root 直接运行以下命令,进行进一步调整:
# 修改ssh密钥对登录免密码
$ sed -此处命令不全,请看置顶回复
# 重启ssh服务
$ systemctl restart sshd
# 加入sudo免密码(如果username不是ubuntu,请修改下面的命令)
$ echo 'ubuntu ALL=(ALL) NOPASSWD:ALL' > /target/etc/sudoers.d/ubuntu
$ curtin in-target --target=/target -- chmod 440 /etc/sudoers.d/ubuntu
# 修复 VMware 自定义配置问题,详情可以参考VMware KB56409
$ sed -i '/^[Unit]/a After=dbus.service' /lib/systemd/system/open-vm-tools.service
$ awk 'NR==11 {$0="#D /tmp 1777 root root -"} 1' /usr/lib/tmpfiles.d/tmp.conf | tee /usr/lib/tmpfiles.d/tmp.conf
# 禁用 Cloud Init
$ touch /etc/cloud/cloud-init.disabled
# 更新系统
$ apt clean
$ apt update -y
$ apt upgrade -y
# 删除machine-id,避免模版部署后同ID冲突
$ rm /etc/machine-id
$ touch /etc/machine-id
好了,这样配置完成后,退出 ssh,然后再试下 ssh 至这台模版机器,看看是否还需要密码验证,并且sudo -i
试试提权是否需要密码,如果都不要,那么恭喜你,模版制作完成了。接下去只需要将这台虚拟机关机,转换成模版即可。
虚拟机自定义规范
除了制作模版之外,我们还需要配置一个虚拟机自定义规范。
-
在 vSphere Client 的快捷方式中,找到虚拟机自定义规范按钮,点击进入。 -
点击新建按钮后,弹出一个新建向导。
-
-
设置计算机名称,我们选择使用虚拟机名称,表示和虚拟机同名,然后在下方域名中随便填入个合适的域名,这步不能省略,必须填上任意文字。 -
选择时区,我选择我所在的亚洲 – 上海。 -
自定义脚本这里不用配置,直接点下一步。 -
设置网络,需要选择 手动选择自定义设置
,然后选择下方的网卡 1,再点击编辑,进行下一步调整。 -
打开网络设置界面,在 IPV4 里,左边选择 当使用规范时,提示用户输入IPv4地址
,右边填入你环境中的子网掩码和网关。IPv6 默认不做配置,点击确定保存配置。 -
设置 DNS,配上环境中的能上互联网的默认 DNS 服务器地址。 -
点击完成保存设置。
这样自定义规范机配置好了,可以在后续的脚本中直接调用第一步设置的名称使用了。
脚本使用说明
脚本使用环境拓扑介绍:
在 Linux 控制机上,使用 git clone 下载脚本仓库。
$ git clone https://github.com/Coku2015/k3s_vsphere.git
下载后进入脚本目录:
$ cd k3s_vsphere
用 vi 编辑器打开脚本,找到脚本开头部分,修改其中的环境变量参数。
####################### Environment Variables Section ######################
### Modify the following environment variables to match your environment ###
MY_SSH_USER="ubuntu"
MY_VSPHERE_SERVER="172.16.0.100"
MY_VSPHERE_USERNAME="administrator@vsphere.local"
MY_VSPHERE_PASSWORD="VMware123!"
MY_DATACENTER="MyDatacenter"
MY_VM_TEMPLATE="Ubuntu20.04LTS"
MY_DATASTORE="localdatastore"
####################### Environment Section End ###########################
其中第一个 MY_SSH_USER 是 Ubuntu 模版的用户名,其他信息都是比较常规的 vSphere 访问信息,根据实际情况填写即可。
填写完成后,保存退出,然后就能执行脚本啦,对了,还需要注意,脚本运行需要 root 权限安装相关软件。
执行命令运行脚本:
$ bash deploy_k3s_with_vspherecsi.sh
这时候会提示输入一些本次自动部署的配置,一共三个,第一个为部署的虚拟机名称,只需要输入一个前缀,脚本会自动为虚拟机名称加上 4 个随机数字作为唯一标识;第二个为虚拟机的 IP 地址,根据自己环境的空闲 IP 地址情况按实际情况输入即可;第三个为 k3s 的版本,可以到 k3s 官网查询相关需要的版本,理论上任何 stable 版本都能支持:
+----------------------------------------------------------------------+
| K3S with vSphere CSI automation script |
+----------------------------------------------------------------------+
| This script is used to create a single node k3s cluster on vSphere. |
+----------------------------------------------------------------------+
| Intro: https://blog.backupnext.cloud |
| Bug Report: Lei.wei@veeam.com |
+----------------------------------------------------------------------+
Please enter the VM name:
(Default VM name will be ‘k3s-cluster-<4 random number>’):
Please enter the IP address for the VM:
(Default IP address will be ‘192.168.1.<random number>’):10.10.1.103
Please enter the k3s version:
(Default version will be ‘v1.28.6+k3s2’):v1.27.10+k3s2
输入完成后,脚本就开始自动部署了,大约 10 分钟左右,你就能像我一样获得一个直接可以使用的 k3s 测试环境了。
原文始发于微信公众号(虚化人生):一键部署脚本:K3S+vSphere CSI
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/225511.html