一、k3s介绍
1.1 什么是k3s?
k3s 是经过 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 controller;
6、所有 Kubernetes control-plane 组件的操作都封装在单个二进制文件和进程中,使 K3s 具有自动化和管理包括证书分发在内的复杂集群操作的能力。
7、减少外部依赖,操作系统只需要安装较新的内核(centos7.6 就可以,不需要升级内核)以及支持 cgroup 即可,k3s 安装包已经包含了 containerd、Flannel、CoreDNS,非常方便地一键式安装,不需要额外安装 Docker、Flannel 等组件。
1.1.1 CNCF介绍
CNCF介绍:CNCF,英文全称为 Cloud Native Computing Foundation,中文译为“云原生计算基金会”。成立于 2015 年 12 月 11 日。
CNCF 托管的项目:
– kubernetes : 容器编排系统,可以跨主机管理容器化应用;
– Prometheus :开源的监控系统,专注于时间序列数据,主要用于对 k8s 和容器进行监控;
– CoreDNS:k8s 中的 DNS 服务器;
– containerd:将容器运行时及其管理功能从 Docker Daemon 剥离的镜像管理和容器执行技术;
– Fluentd:日志收集组件;
– Linkerd:为微服务提供可靠性支持、自动化负载均衡、服务发现和运行时可恢复性的开源“服务网 格”项目;
– gRPC:现代化高性能开源远程调用框架;
– rkt:帮助开发者打包应用和依赖包,简化搭环境等部署工作,提高容器安全性和易用性的容器引 擎。
1.1.2 什么是发行版
我们经常听说 linux 发行版,那什么是 linux 发行版?
Linux 发行版与 Windows 或 Mac OS(操作系统)一样,Linux 由多种类型组成,称为分发,每个发行版都 很相似,但是不完全一样。一般情况下,Linux 发行版是各种应用程序(软件)的集合,从而来适应使用目的,除了在服务器上安装之外,其他还要提前设置,以便可以立即进行实际使用。
Linux 发行版主要有 Debian 类型、Slackware 系列、Red Hat
1.Debian 类型: Debian 类型是高度发达的,但是 Debian 门槛比较高,对用户比较友好的,Debian 拥有出色的性能,可用于嵌入式设备等众多应用。此外,它已经发展成为一种流行的 Linux 发行版,名为 Ubuntu。
2.Slackware 系列: Slackware 管理方法比其他线路更复杂,对于初学者来说相对困难,这是因为项强调稳定性和安全性的发展政策,并且没有优先考虑易用性。经过验证后是否有透露软件的立场,Slackware 著名的发行版包括 openSUSE,Plamo Linux 和 Puppy Linux。
3.Red Hat: 目前 Red Hat 大致分为两类,第一个是红帽企业 Linux(RHEL),有些服务是要收费的。另一种是名为 Fedora(Fedora)的免费发行版
4、Centos CentOS 是 Linux 发行版之一,它是来自于 Red Hat Enterprise Linux 依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定性的服务器以 CentOS 替代商业版的 Red Hat Enterprise Linux 使用。
1.1.3 边缘计算介绍
边缘计算也称为边缘处理,是一种将服务器放置在本地设备附近的网络技术,解决数据传输的延迟问题。这样的处理方式是在传感器附近或者设备产生数据的位置进行的,因此称之为边缘。“边缘”特指 计算资源在地理分布上更加靠近设备,而远离云数据中心的资源节点。
典型的边缘计算分为物联网(例如:智慧城市,智能家居,大型商店等)和非物联网(例如:游戏,CDN 等)场景。
边缘计算应用场景:
在城市路面检测中,在道路两侧路灯上安装传感器收集城市路面信息,检测空气质量+、光照强度、噪音水 平等环境数据,当路灯发生故障时能够及时反馈至维护人员。
在智能交通中,边缘服务器上通过运行智能交通控制系统来实时获取和分析数据,根据实时路况来控制交通信息灯,以减轻路面车辆拥堵等。
在无人驾驶中,如果将传感器数据上传到云计算中心将会增加实时处理难度,并且受到网络制约,因此无人驾驶主要依赖车内计算单元来识别交通信号和障碍物,并且规划路径
1.1.4 边缘计算应用场景
《福布斯》技术委员会的 12 位成员研究了一些企业的用例,在这些用例中,都使用了边缘计算:
应用一:改进医疗设备性能和数据管理
在医疗场景下,边缘计算主要帮助医疗保健体系的 IT 基础架构,具体来说,是防止医疗设备管理的应用程序发生延迟。在边缘计算的支持下,无需构建集中的数据中心,可对关键数据进行本地化,在安全性、响应速度和有效性上有更佳表现。
应用二:本地零售的实时数据分析
边缘计算的主要目的,是让运算尽可能接近数据源。在零售场景中,以往企业都是将各分支的数据汇总到中心位置进行分析,再进行决策和行动。而通过边缘计算,零售店铺可以在本地就进行数据处理和优化,这样组织的行动反馈就能更快更及时。
应用三:消费者数据隐私
处理高度敏感的消费者数据的公司发现,由于数据泄漏成本高昂,云计算很危险。因此,许多这类公司正在将边缘计算用于处理消费者数据,因为它为他们提供了更多的安全和控制选择。这可能会使企业工作流程复杂化,但它可以带来好处,特别是在医疗数据公司中。- Sean Byrnes, Outlier
应用四:物联网
物联网是企业为获得更好的数据、客户体验、现场营销和更智能的流程而实施的智能的重大转变。边缘计算使网络的运行水平能够为物联网提供高性能。接近实时的速度意味着用户体验可以非常出色,并且可以为企业带来更好、更有效的运营。-Frank Cittadino, QOS Networks
应用五:视频监控和分析
视频监控已经部署在边缘,以及视频分析。视频产生的数据是所有其他来源数据总和的 10 倍。这是一个很好的例子,说明您需要在数据中心之外开始处理的数据类型,以最大限度地减少通过网络移动和存储 的数据量。此外,它还允许企业对可操作的数据做出实时决策- Bill Galloway,Pivot3 Inc.
应用六:工业操作
工厂车间处理等工业操作需要海量数据的快速响应。这些数据中的大部分被丢弃,但能够通过检测边缘 数据中的异常来使工厂操作员能够及时对工厂车间的问题做出反应。这样可以间接减少停机从而提高生产率。- Randal Kenworthy,Cognizant
应用七:智能建筑
随着我们的会议室和设施变得越来越智能化,将会有一种把所有东西都放到云端的诱惑。考虑到安全性和稳定性,在站点上托管数据将会有一些好处。我们已经看到了基于云的照明在网络中断时可能会令人 沮丧的问题,而工作场所的可靠性甚至更重要。 Luke Wallace, Bottle Rocket
应用八:无人驾驶汽车
汽车行业已投入数十亿资金开发边缘计算技术。为了安全运行,这些车辆需要收集和分析有关其周围环境,方向和天气状况的大量数据,以及与道路上的其他车辆进行通信。- Arnie Gordon,Arlyn Scales
应用九:机顶盒
Edge AI 可以在机顶盒设备上运行一个低占用空间的智能引擎,可以实时分析数据,对 AI 进行编码,在 本地解决问题并向上游服务器提供智能反馈。与基本自动化(边缘机器人流程自动化机器人)相结合, AI 引擎可以自我修复并在本地解决许多问题。- Ankur Garg,Hotify Inc.
1.2 为什么叫k3s?
我们希望安装的 Kubernetes 在内存占用方面只是原来一半的大小。Kubernetes 是一个 10 个字母的单 词,简写为 k8s,所以, Kubernetes 一半大的东西就是有 5 个字母的单词,简写为 K3S。K3S 没有全称,也没有官方的发音。
K3s 适用于以下场景: 1、边缘计算-Edge 2、物联网-IoT 3、CI:持续集成 4、Development:开发 5、ARM 6、嵌入 K8s
由于运行 K3s 所需的资源相对较少,所以 K3s 也适用于开发和测试场景。在这些场景中,如果开发或测试人员需要对某些功能进行验证,或对某些问题进行重现,那么使用 K3s 不仅能够缩短启动集群的时间,还能够减少集群需要消耗的资源。与此同时,Rancher 中国团队推出了一款针对 K3s 的效率提升工 具:AutoK3s。只需要输入一行命令,即可快速创建 K3s 集群并添加指定数量的 master 节点和 worker 节点。
问题 1:什么是 ARM
ARM64 和 ARMv7 都支持二进制文件和多源镜像。k3s 在小到树莓派或大到 AWS a1.4xlarge 32GiB 服务器的环境中均能出色工作。
1.3 k3s架构
1.3.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 资源。
1.3.2 高可用k3s架构
虽然单节点 k3s 集群可以满足各种用例,但对于 Kubernetes control-plane 的正常运行至关重要的环境,可以在高可用配置中运行 K3s。一个高可用 K3s 集群由以下几个部分组成:
1、K3s Server 节点:两个或者更多的 server 节点将为 Kubernetes API 提供服务并运行其他 control-plane 服务
2、外部数据库:外部数据存储(与单节点 k3s 设置中使用的嵌入式 SQLite 数据存储相反)
1.3.3 边缘计算应用案例分析
背景:
在进行信息化、智能化改造的过程中,首先第一步,就是要获取底层系统的全方位的数据。因此需要部署大量的边缘设备来采集数据、分析数据,通过这些数据进行建模,大量的边缘设备一般离散的分布在不同机房、厂区、甚至是不同的地理区域。
需 求:
运维角度来讲:
1、管理这些边缘设备,保持边缘设备上运行的服务的高可用性;
2、快速的上线、升级;
3、配置的快速更改与应用
二、k3s和k8s如何选择
K8s 和 k3s 各有优劣。若是你要进行大型的集群部署,建议你选择使用 K8s;若是你处于边缘计算等小型 部署的场景或仅仅须要部署一些非核心集群进行开发/测试,那么选择 k3s 则是性价比更高的选择。
云计算场景用 k8s
边缘计算场景用 k3s
k3s 和 k8s 具体有多大的差别?
在实际的应用部署中,几乎没有任何差异,至少到目前为止,我所遇到的场景,k8s 能满足的,k3s 也能满足,相信,通过不断的迭代,k3s 在未来会更完善边缘场景。
能直接学习 k3s 吗?
: k3s 的所有操作跟 k8s 无区别,但是学习还是以 k8s 为主,之后再扩展 k3s
三、安装k3s集群
https://www.cnblogs.com/yangmeichong/p/16659326.html