「码动四季·开源同行」轻量级k8s:适配边缘计算场景的轻量级的k8s-k3s入门与实战

张开发
2026/4/9 21:11:25 15 分钟阅读

分享文章

「码动四季·开源同行」轻量级k8s:适配边缘计算场景的轻量级的k8s-k3s入门与实战
一、 k3s 介绍1、什么是 k3sk3s 是经过CNCF认证的由 Rancher 公司开发维护的一个轻量级的Kubernetes 发行版内核机制还是和k8s 一样但是剔除了很多外部依赖以及 K8s 的 alpha、beta 特性同时改变了部署方式和运行方式目的是轻量化 K8s简单来说K3s 就是阉割版 K8s消耗资源极少。它主要用于边缘计算、物联网等场景。K3s 具有以下特点1、安装简单占用资源少只需要 512M 内存就可以运行起来2、apiserver 、schedule 等组件全部简化并以进程的形式运行在节点上把程序都打包为单个二进制文件每个程序只需要占用 100M 内存3、使用基于 sqlite3 的轻量级存储后端作为默认存储机制。同时支持使用 etcd3、MySQL 和 PostgreSQL作为存储机制4、默认使用 local-path-provisioner 提供本地存储卷5、默认安装了 Helm controller 和 Traefik Ingress controller6、所有 Kubernetes control-plane 组件的操作都封装在单个二进制文件和进程中使 K3s 具有自动化和管理包括证书分发在内的复杂集群操作的能力。7、减少外部依赖操作系统只需要安装较新的内核centos7.6 就可以不需要升级内核以及支持cgroup 即可k3s 安装包已经包含了 containerd、Flannel、CoreDNS非常方便地一键式安装不需要额外安装 Docker、Flannel 等组件。2、CNCF 介绍CNCF英文全称为 Cloud Native Computing Foundation中文译为“云原生计算基金会”。成立于 2015 年 12 月 11 日。 CNCF 是 Linux 基金会旗下的基金会可以理解为一个非盈利组织。当年谷歌内部一直用于编排容器的 Borg 项目开源了为了该项目更好的发展谷歌与 Linux 基金会一起 创办了 CNCF。同时谷歌把 Borg 用 Go 语言重写更名为 Kubernetes 并捐赠到CNCF。成立这个组织的初衷1、推动云原生计算可持续发展2、帮助云原生技术开发人员快速地构建出色的产品。CNCF 托管的项目– kubernetes 容器编排系统可以跨主机管理容器化应用– Prometheus 开源的监控系统专注于时间序列数据主要用于对 k8s 和容器进行监控– CoreDNSk8s 中的 DNS 服务器– containerd将容器运行时及其管理功能从 Docker Daemon 剥离的镜像管理和容器执行技术– Fluentd日志收集组件– Linkerd为微服务提供可靠性支持、自动化负载均衡、服务发现和运行时可恢复性的开源“服务网格”项目– gRPC现代化高性能开源远程调用框架– rkt帮助开发者打包应用和依赖包简化搭环境等部署工作提高容器安全性和易用性的容器引擎。3、什么是发行版我们经常听说 linux 发行版那什么是 linux 发行版Linux 发行版与 Windows 或 Mac OS操作系统一样Linux 由多种类型组成称为分发,每个发行版都很相似但是不完全一样。一般情况下Linux 发行版是各种应用程序软件的集合从而来适应使用目的除了在服务器上安装之外其他还要提前设置以便可以立即进行实际使用。Linux 发行版主要有 Debian 类型、Slackware 系列、Red Hat1.Debian 类型Debian 类型是高度发达的但是 Debian 门槛比较高对用户比较友好的Debian 拥有出色的性能可用于嵌入式设备等众多应用。此外它已经发展成为一种流行的 Linux 发行版名为 Ubuntu。2.Slackware 系列Slackware 管理方法比其他线路更复杂对于初学者来说相对困难这是因为项强调稳定性和安全性的发 展政策并且没有优先考虑易用性。经过验证后是否有透露软件的立场Slackware 著名的发行版包括 openSUSEPlamo Linux 和 Puppy Linux。3.Red Hat目前 Red Hat 大致分为两类第一个是红帽企业 LinuxRHEL有些服务是要收费的。另一种是名为 FedoraFedora的免费发行版。4、CentosCentOS 是 Linux 发行版之一它是来自于 Red Hat Enterprise Linux 依照开放源代码规定释出的源代码 所编译而成。由于出自同样的源代码因此有些要求高度稳定性的服务器以 CentOS 替代商业版的 Red Hat Enterprise Linux 使用。4、边缘计算介绍边缘计算也称为边缘处理是一种将服务器放置在本地设备附近的网络技术解决数据传输的延迟问题。这样的处理方式是在传感器附近或者设备产生数据的位置进行的因此称之为边缘。“边缘”特指计算资源在地理分布上更加靠近设备而远离云数据中心的资源节点。典型的边缘计算分为物联网例如智慧城市智能家居大型商店等和非物联网例如游戏CDN等场景。举个例子原来咱们取钱存钱必须去银行排队那现在我们在住的附近有自动取款机可以直接取钱减少了排队等待时间还能就近解决更加安全边缘计算应用场景在城市路面检测中在道路两侧路灯上安装传感器收集城市路面信息检测空气质量、光照强度、噪音水平等环境数据当路灯发生故障时能够及时反馈至维护人员。在智能交通中边缘服务器上通过运行智能交通控制系统来实时获取和分析数据根据实时路况来控制交通信息灯以减轻路面车辆拥堵等。在无人驾驶中如果将传感器数据上传到云计算中心将会增加实时处理难度并且受到网络制约因此无人驾驶主要依赖车内计算单元来识别交通信号和障碍物并且规划路径边缘计算应用场景《福布斯》技术委员会的 12 位成员研究了一些企业的用例在这些用例中都使用了边缘计算应用一改进医疗设备性能和数据管理在医疗场景下边缘计算主要帮助医疗保健体系的 IT 基础架构具体来说是防止医疗设备管理的应用程序发生延迟。在边缘计算的支持下无需构建集中的数据中心可对关键数据进行本地化在安全性、响应速度和有效性上有更佳表现。应用二本地零售的实时数据分析边缘计算的主要目的是让运算尽可能接近数据源。在零售场景中以往企业都是将各分支的数据汇总到中心位置进行分析再进行决策和行动。而通过边缘计算零售店铺可以在本地就进行数据处理和优化这样组织的行动反馈就能更快更及时。应用三消费者数据隐私处理高度敏感的消费者数据的公司发现由于数据泄漏成本高昂云计算很危险。因此许多这类公司正在将边缘计算用于处理消费者数据因为它为他们提供了更多的安全和控制选择。这可能会使企业工作流程复杂化但它可以带来好处特别是在医疗数据公司中。- Sean Byrnes, Outlier应用四物联网物联网是企业为获得更好的数据、客户体验、现场营销和更智能的流程而实施的智能的重大转变。边缘计算使网络的运行水平能够为物联网提供高性能。接近实时的速度意味着用户体验可以非常出色并且可以为企业带来更好、更有效的运营。-Frank Cittadino, QOS Networks应用五视频监控和分析视频监控已经部署在边缘以及视频分析。视频产生的数据是所有其他来源数据总和的 10 倍。这是一个很好的例子说明您需要在数据中心之外开始处理的数据类型以最大限度地减少通过网络移动和存储的数据量。此外它还允许企业对可操作的数据做出实时决策- Bill GallowayPivot3 Inc.应用六工业操作工厂车间处理等工业操作需要海量数据的快速响应。这些数据中的大部分被丢弃但能够通过检测边缘数据中的异常来使工厂操作员能够及时对工厂车间的问题做出反应。这样可以间接减少停机从而提高生产率。- Randal KenworthyCognizant应用七智能建筑随着我们的会议室和设施变得越来越智能化将会有一种把所有东西都放到云端的诱惑。考虑到安全性和稳定性在站点上托管数据将会有一些好处。我们已经看到了基于云的照明在网络中断时可能会令人沮丧的问题而工作场所的可靠性甚至更重要。 Luke Wallace, Bottle Rocket应用八无人驾驶汽车汽车行业已投入数十亿资金开发边缘计算技术。为了安全运行这些车辆需要收集和分析有关其周围环境方向和天气状况的大量数据以及与道路上的其他车辆进行通信。- Arnie GordonArlyn Scales应用九机顶盒Edge AI 可以在机顶盒设备上运行一个低占用空间的智能引擎可以实时分析数据对 AI 进行编码在本地解决问题并向上游服务器提供智能反馈。与基本自动化边缘机器人流程自动化机器人相结合 AI 引擎可以自我修复并在本地解决许多问题。- Ankur GargHotify Inc.5、为什么叫做 k3s?我们希望安装的 Kubernetes 在内存占用方面只是原来一半的大小。Kubernetes 是一个 10 个字母的单词简写为 k8s所以 Kubernetes 一半大的东西就是有 5 个字母的单词简写为 K3S。K3S 没有全称也没有官方的发音。K3s 适用于以下场景1、边缘计算-Edge2、物联网-IoT3、CI持续集成4、Development开发5、ARM6、嵌入 K8s由于运行 K3s 所需的资源相对较少所以 K3s 也适用于开发和测试场景。在这些场景中如果开发或测试人员需要对某些功能进行验证或对某些问题进行重现那么使用 K3s 不仅能够缩短启动集群的时间还能够减少集群需要消耗的资源。与此同时Rancher 中国团队推出了一款针对 K3s 的效率提升工具AutoK3s。只需要输入一行命令即可快速创建 K3s 集群并添加指定数量的 master 节点和 worker 节点。问题 1什么是 ARMARM64 和 ARMv7 都支持二进制文件和多源镜像。k3s 在小到树莓派或大到 AWS a1.4xlarge 32GiB 服务器的环境中均能出色工作。k3s 架构1、单节点的 k3s 架构k3s server 节点是运行 k3s server 命令的机器裸机或者虚拟机而 k3s Agent 节点是运行 k3s agent 命令的机器。单点架构只有一个控制节点在 K3s 里叫做 server node相当于 K8s 的 master node而且 K3s 的数据存储使用 sqlite 并内置在了控制节点上在这种配置中每个 agent 节点都注册到同一个 server 节点。K3s 用户可以通过调用 server 节点上的 K3s API 来操作 Kubernetes 资源。2、高可用的 K3S 架构K3S 高可用架构虽然单节点 k3s 集群可以满足各种用例但对于 Kubernetes control-plane 的正常运行至关重要的环境可以在高可用配置中运行 K3s。一个高可用 K3s 集群由以下几个部分组成1、K3s Server 节点两个或者更多的 server 节点将为 Kubernetes API 提供服务并运行其他control-plane 服务2、外部数据库外部数据存储与单节点 k3s 设置中使用的嵌入式 SQLite 数据存储相反3、边缘计算应用案例分析背景在进行信息化、智能化改造的过程中首先第一步就是要获取底层系统的全方位的数据。因此需要部署大量的边缘设备来采集数据、分析数据通过这些数据进行建模大量的边缘设备一般离散的分布在不同机房、厂区、甚至是不同的地理区域。需 求运维角度来讲1、管理这些边缘设备保持边缘设备上运行的服务的高可用性2、快速的上线、升级3、配置的快速更改与应用二、k3s 和 k8s 如何选择K8s 和 k3s 各有优劣。若是你要进行大型的集群部署建议你选择使用 K8s若是你处于边缘计算等小型部署的场景或仅仅须要部署一些非核心集群进行开发/测试那么选择 k3s 则是性价比更高的选择。云计算场景用 k8s边缘计算场景用 k3sQk3s 和 k8s 具体有多大的差别A在实际的应用部署中几乎没有任何差异至少到目前为止我所遇到的场景k8s 能满足的k3s也能满足相信通过不断的迭代k3s 在未来会更完善边缘场景。三、安装 k3s安装 k3s 服务的操作系统要求Linux 的内核版本在 3.10 以上每台服务器上至少要有 512MB 的内存空间硬盘中可用的存储空间必须大于 500 MB实验环境规划操作系统centos7.9配置 4Gib 内存/6vCPU/100G 硬盘网络NAT开启虚拟机的虚拟化在 192.168.40.180 和 192.168.40.181 新机器初始化操作参考安装 k8s 时候的初始化去做就可以了配置 yum 源关掉防火墙关掉 selinux修改内核参数关掉 swap 交换分区在 192.168.40.180 和 192.168.40.181 上安装 containerd​​​​​​​[rootlocalhost ~]# yum install containerd -y 启动 containerd [rootlocalhost ~]# systemctl start containerd 国内用户可以用如下方法安装速度会更快 在 192.168.40.180 上操作 #执行如下命令安装 curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRRORcn sh -看到如下说明 k3s 已经启动了验证安装是否成功 k3s kubectl get nodes 显示如下说明安装成功 NAME STATUS ROLES AGE VERSION 192.168.40.180 Ready control-plane,master 17s v1.20.6k3s1 k3s kubectl get pods -n kube-system 显示如下 NAME READY STATUS RESTARTS AGE coredns-854c77959c-k74k6 1/1 Running 0 2m local-path-provisioner-5ff76fc89d-7q7pk 1/1 Running 0 2m metrics-server-86cbb8457f-s8pl9 1/1 Running 0 2m helm-install-traefik-26brw 0/1 Completed 0 2m svclb-traefik-6flmb 2/2 Running 0 57s traefik-6f9cbd9bd4-95jcb 1/1 Running 0 57s部署完成之后上面所有的进程都由 k3s 这个 service 来创建管理。可以使用 systemctl status k3s查看。在 k3s 集群添加 work 节点提取 join token 我们想要添加一对 worker 节点。在这些节点上安装 K3s我们需要一个 join token。Join token 存在于 master 节点的文件系统上。让我们复制并将它保存在某个地方稍后我们可以获取它 cat /var/lib/rancher/k3s/server/node-token 获取到一串 token K1048a0844cf602b7c96a4ea98a0a3531298e78262ba19875bd31a92ffc56686f63::server:698e6bc453d5871 cbb1a4741387824b0 在 192.168.40.181 上执行如下把 work 节点加入 k3s: curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRRORcn K3S_URLhttps://192.168.40.180:6443 K3S_TOKENK1048a0844cf602b7c96a4ea98a0a3531298e78262ba19875bd31a92ffc56686f63::server:698e6 bc453d5871cbb1a4741387824b0 sh - 验证 work 节点是否加入集群 在 192.168.40.180 操作 k3s kubectl get nodes 显示如下说明工作节点成功加入 k3s 集群 NAME STATUS ROLES AGE VERSION 192.168.40.181 Ready none 57s v1.20.6k3s1 192.168.40.180 Ready control-plane,master 5m36s v1.20.6k3s1

更多文章