背景在平时的工作中,为了方便在纯净的环境中进行测试,我经常需要在本地或者公有云环境中频繁地搭建和销毁集群 。有时是在 我的 HomeLab 环境中 , 虽然 CPU 不强但胜在内存够大;后来有了微软 MVP 赠送的 Azure 额度之后 , 我也会经常在 Azure 的虚拟机 中搭建,因为没有拉取镜像的网络问题 。
在两个环境中我通过 Terraform 实现了虚拟机的快速创建和销毁,然后在虚拟机上创建 K3s 集群 。K3s 集群足够轻量级,并支持对组件的定制 。结合 Alfred Snippets[1],我只需要 ssh 到虚拟机上并键入 k3si 就可以快速输入定制好的命令,然后再获取虚拟机上的 kubeconfig 文件并替换其中的 api-server 地址(这些也通过 snippet)解决:
export MASTER_IP=${MASTER_IP:-$(ip addr show eth0 | grep '.NET ' | awk '{print $2}' | cut -d/ -f1)}export INSTALL_K3S_VERSION=v1.23.8+k3s1curl -sfL https://get.k3s.io | sh -s - --disable traefik --disable local-storage --disable metrics-server --advertise-address=$MASTER_IP --disable servicelb --write-kubeconfig-mode 644 --write-kubeconfig ~/.kube/config
单节点的集群操作起来还算便捷,但需要多节点的集群时也还要 ssh 到所有主机上进行操作 , 当然少不了复制 master 节点的 token 。不免还是有些繁琐 。
后来就发现了更快捷的工具,由 Alex Ellis 创建的 k3sup[2](发音 ‘ketchup’) 。
k3sup 简介k3sup 是一个轻量级工具,用于快速搭建 K3s 集群 。
k3sup 的特点是易于使用,只需单个命令即可在不同的平台上安装 K3s 。它使用户可以快速创建 Kubernetes 集群,并可以轻松地将新节点加入到现有集群中 。
k3sup 通过 SSH 连接到目标服务器 , 然后自动安装和配置 K3s 。这意味着我们可以在任何可以通过 SSH 访问的机器上安装和运行 Kubernetes,包括本地机器、云服务器或树莓派等设备 。
简单理解就是使用 k3sup 完成了 ssh 到主机、安装 K3s server、复制 token、ssh 到 agent 主机、安装 K3s agent ... 等一系列的操作 。
接下来我们看下如何使用 k3sup 。
安装 k3supk3sup 是一个命令行工具,使用前要下载安装 CLI 。
linux:
curl -sLS https://get.k3sup.dev | shsudo install k3sup /usr/local/bin/
macOS:
brew install k3sup
使用k3sup 支持如下命令:
- completion:为指定的 shell 生成自动完成脚本
- help:帮助
- install:通过 SSH 在服务器上安装 K3s
- join:在远程主机上安装 K3s 代理并将其加入到现有集群
- ready:使用 kubectl 检查集群是否已就绪 。
- update:打印更新说明
- version:打印版本
install 命令install 命令用于在服务器上安装 K3s,使用下面的命令即可在远程主机上安装 k3s 。
其中 --ip 指向远程主机的地址 , --user 为登录远程主机的用户名 , --k3s-channel 这是要安装的版本,--local-path 集群 kubeconf 的本地保存地址 。更多的选项可以通过 k3sup help install 来查看 。
k3sup 默认使用 ssh key ~/.ssh/id_rsa 来访问主机,可通过 --ssh-key 选项指定 。
export MASTER_IP=192.168.1.11k3sup install --ip $MASTER_IP--user addo--k3s-channel v1.24--local-path /tmp/config
执行命令会打印安装过程中的日志 。Running: k3sup install2023/10/26 09:04:35 192.168.1.11Public IP: 192.168.1.11[INFO]Finding release for channel v1.24[INFO]Using v1.24.17+k3s1 as release...Saving file to: /tmp/config# Test your cluster with:export KUBECONFIG=/tmp/configkubectl config use-context defaultkubectl get node -o wide
执行命令 , 查看节点的信息 。export KUBECONFIG=/tmp/configkubectl get node -o wideNAMESTATUSROLESAGEVERSIONINTERNAL-IPEXTERNAL-IPOS-IMAGEKERNEL-VERSIONCONTAINER-RUNTIMEmasterReadycontrol-plane,master1mv1.24.17+k3s110.0.2.4<none>Ubuntu 20.04.6 LTS5.15.0-1047-azurecontainerd://1.7.3-k3s1
如果是安装单节点集群,install 命令就足够了 。假如是多节点集群 , 就还需要用到 join 命令 。join 命令使用 join 命令可以初始化 agent 节点,并将其加入到当前的集群中,需要使用 --server-ip 指定 server 节点的 IP 地址,同样需要 --k3s-channel 指定安装的版本,强烈建议安装于 server 节点同样的版本 。
推荐阅读
- 使用 kube-downscaler 降低 Kubernetes 集群成本
- Linux上使用Docker实现应用程序打包和分发
- Rust 编译为WebAssembly 在前端项目中使用
- 如何使用 Python 和 python-docx 库读取、写入和操作 Word 文件
- 如何使用GPT作为SQL查询引擎的自然语言
- 火山石的作用及使用方法详解 火山石的作用
- 怎样使用支付宝花呗 怎样使用支付宝
- 这几款水乳特别适合油皮、痘肌使用,有效消灭闭口小痘痘效果好
- 油漆喷枪使用 油漆喷枪的注意事项
- cdr里怎么创建剪切蒙版,cdr中的剪切蒙版要怎么样使用