边缘计算 K3s :) 读懂内核源码之安装脚本
摘要
随着云计算进入下半场的竞争阶段,以万物互联为概念的边缘计算也随之进入各大厂商的主战场,边缘计算领域较为活跃和创新、热门的十个开源项目 KubeEdge、StarlingX、K3s、EdgeXfoundry、EdgeGallery、Akraino、Baetyl、OpenYurt、SuperEdge、Azure IoT Edge ;既有国内的互联网厂商的贡献产品,也有国外的大牛贡献的开源产品,但是国内的开源项目国外开发人员比较少的参与,因此国内的开源项目为了提升知名度还是会通过付费邀请外国开发人员的参与从而提升自身开源项目的国际化;如果功能有重叠,此时建议选择国际开源项目作为研究和发力的重点,因为国内所谓的开源项目即便通过外文发布公告依旧逃不脱国产化的套路,有创新点但是不主流;因此本文基于 k3s 安装脚本解读边缘计算的架构和功能实现;
关键词: k3s; 边缘计算;安装脚本;
K3s 简介
k3s是一个完全符合标准的生产级Kubernetes发行版,同时也是史上最轻量的k8s发行版,它满足了在边缘计算环境中运行在x86、ARM64和ARMv7处理器上的小型、易于管理的Kubernetes。
安装部署
# 直接安装最新版本的 K3s
curl -sfL https://get.k3s.io | sh -
# 获取安装脚本文件
curl -sfL https://get.k3s.io > install-k3s.sh
脚本分析
# --- run the install process --
{
verify_system
setup_env "$@"
download_and_verify
setup_selinux
create_symlinks
create_killall
create_uninstall
systemd_disable
create_env_file
create_service_file
service_enable_and_start
}
第一步: verify_system
步骤说明: 判断当前操作系统中是否存在 openrc 或者 systemctl ,如果不存在,则直接报错;
第二步: setup_env
步骤说明: 设置环境变量,判断当前节点是 server 或者 agent 节点,设置环境变量信息提供后续安装过程中的使用;
第三步: download_and_verify
步骤说明:
a. 根据变量判断 k3s 二进制是否存在;
b. 动态判断操作系统架构类型;
c. 使用 curl / wget 下载对应架构的二进制资源,否则报错;
d. 创建临时目录和文件;
e. 获取 k3s 的 commit 记录,记录安装的版本;
f. 下载二进制&校验二进制&安装二进制(如果二进制已经存在则移除后安装);
第四步: setup_selinux
步骤说明:
a. 根据 k3s 的版本和操作系统版本设置对应的 rpm 源;
b. 安装 container-selinux,并设置相应的规则;
第五步: create_symlinks
步骤说明: 将 k3s 作为软链指向 kubectl , crictl , ctr 这三个命令,k3s 可以作为此三个命令的统一执行;
小记: 哈哈哈,没想到,没想到,k3s 居然是三个命令的统一入口,这个很关键呦,后面要考的,之前觉得 k3s 这个命令好厉害呀,居然很多资源都可以调度,没想到他只是做了一个映射而已;
第六步: create_killall
步骤说明: 停止 k3s 相关的服务资源的脚本;
第七步: create_uninstall
步骤说明: 创建 k3s 清理脚本文件用于卸载操作任务的执行;
第八步: systemd_disable
步骤说明: 禁用 k3s 相关服务和配置资源文件;
第九步: create_env_file & create_service_file
步骤说明: 创建 K3S 需要的环境变量和服务信息;
第十步: service_enablr_and_start
步骤说明: 启动 systemd 和 openrc 用于 k3s 的正常运行;
总结
见之时,见非是见。见犹离见,见不能及。落花有意随流水,流水无情恋落花。