您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
   
 
     
   
 
 订阅
K3s初体验
 
 
  1142  次浏览      16 次
 2022-4-15
 
编辑推荐:
本文主要介绍了K3s 概念、架构 & 运行机制、部署安装和使用、卸载方法。 希望对你的学习有帮助。
本文来自于知乎,由Linda编辑、推荐。

最近搞了个树莓派4B,有点想搞搞事情,所以先把基础环境搭建一下,如果好的话就考虑再来几个~ 现在想先搭建个 K3s 集群,后面有什么项目工程的就直接可以容器化了。

K3s 是个啥

K3s 是 rancher 公司开发维护的一套 K8s 发行版。所谓发行版,就类似于 debian 之于 Linux。内核机制还是和 K8s 一样,但是剔除了很多外部依赖以及 K8s 的 alpha、beta 特性,同时改变了部署方式和运行方式,目的是轻量化 K8s,并将其应用于 IoT 设备(比如树莓派)。 简单来说,K3s 就是阉割版 K8s,消耗资源极少。 K3s 官网文档中有详细介绍,本文下面大部分也是基于此文档进行部署等操作。

架构 & 运行机制

虽说 K3s 其内核就是个 K8s,但是他的整体架构和运行机制都被 rancher 魔改了。K3s 相较于 K8s 其较大的不同点如下:

存储etcd 使用 嵌入的 sqlite 替代,但是可以外接 etcd 存储

apiserver 、schedule 等组件全部简化,并以进程的形式运行在节点上

网络插件使用 Flannel, 反向代理入口使用 traefik 代替 ingress nginx

默认使用 local-path-provisioner 提供本地存储卷

在真正使用K3s之前,最好先了解一下他的大体架构和运行方式,这里先上他的架构图:

单点测试模式

HA高可用模式

从架构图里,我们就能看出来 K3s 分为两大种部署方式:单点测试 和 高可用模式。这样看对比下来可以看出,单点测试模式只有一个控制节点(在 K3s 里叫做server node,相当于 K8s 的 master node),而且K3s的数据存储使用 sqlite 并内置在了控制节点上;高可用模式则是扩展 server node 变为3个,并且需要外接存储(etcd、mysql等),保证了集群的高可用。

再来看 K3s 的运行机制:

运行机制

这可以看出来,K8s 所有控制面组件最终都以进程的形式运行在 server node 上,不再以静态pod的形式。数据库使用 SQLite ,没有etcd 那么重了。也就是说,当我们安装部署好 K3s 后,使用kubectl get po -n kube-system 时,则不会有 apiserver、scheduler 等控制面的pod了。

Agent 端 kubelet 和 kube proxy 都是进程化了,此外容器运行时也由docker 改为 containerd。

server node 和 agent node 通过特殊的代理通道连接。

从这个运行机制确实能感受到 K3s 极大的轻量化了 K8s。

部署安装和使用

准备过程

OS: debian系操作系统

1G 内存, 1核 CPU

dockers / containerd installed

部署server端

curl -sfL https://get.k3s.io | sh -

我用的参数

--docker # 使用docker 作为runtime
--kube-apiserver-arg --feature-gates ServerSideApply=false # 关闭了 ServerSideApply 特性,毕竟不太想在yaml看到一堆 field,同时也能够减少占用的磁盘空间和内存
--disable servicelb # 我只有一个树莓派,就暂时先不用 lb 了吧
--disable traefik # K3s 使用 1.8 版本,自己部署使用2.x版本
--disable-cloud-controller # 不需要

 

当然还有其它参数,可以在官网参数列表找到

部署完成之后,上面所有的进程都由 k3s 这个 service 来创建管理。可以使用 systemctl status k3s 查看。

使用

使用起来其实和 K8s 基本无差别,切换到root 用户后,执行命令

$ kubectl get node

NAME STATUS ROLES AGE VERSION
ubuntu Ready master,node 36m v1.18.9+k3s1

$ kubectl get po -A

NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system metrics-server-7566d596c8-vflfk 1/1 Running 0 36m
kube-system local-path-provisioner-6d59f47c7-xm2vr 1/1 Running 0 36m
kube-system coredns-7944c66d8d-d594g 1/1 Running 0 36m

 

果然pod 很少,只有必要的 dns、metrics 和 存储卷。

卸载

卸载server端

/usr/local/bin/k3s-uninstall.sh

 

卸载 agent 端

/usr/local/bin/k3s-agent-uninstall.sh

 

最后

rancher 公司还是很牛的,把 K8s 这么个大家伙给优化成现在这个样子,实测用树莓派跑是一点问题没有,空跑情况下,cpu用的很少, 内存也只用了400+M 。如果 K3s 仅作为 paas 平台来用,了解上述的内容就大差不差了,目前来看在树莓派上也不会用过多较深的功能。就先到这吧,如果后续有问题也会在这里贴出来。

   
1142 次浏览       16
相关文章

聊聊云原生和微服务架构
Serverless:微服务架构的终极模式
如何实现微服务架构下的分布式事务?
微服务下的数据架构设计
相关文档

微服务和云原生应用
微服务架构原理和设计方法
0到3000万用户微服务之旅
微服务在微信后台的架构实践
相关课程

微服务架构设计与实践
领域驱动+微服务架构设计
云计算、微服务与分布式架构
云平台与微服务架构设计

最新活动计划
MBSE(基于模型的系统工程)4-18[北京]
自然语言处理(NLP) 4-25[北京]
基于 UML 和EA进行分析设计 4-29[北京]
以用户为中心的软件界面设计 5-16[北京]
DoDAF规范、模型与实例 5-23[北京]
信息架构建模(基于UML+EA)5-29[北京]
 
 
最新文章
云原生架构概述
K8S高可用集群架构实现
容器云管理之K8S集群概述
k8s-整体概述和架构
十分钟学会用docker部署微服务
最新课程
云计算、微服务与分布式架构
企业私有云原理与构建
基于Kubernetes的DevOps实践
云平台架构与应用(阿里云)
Docker部署被测系统与自动化框架实践
更多...   
成功案例
北京 云平台与微服务架构设计
通用公司GE Docker原理与实践培训
某军工研究单位 MDA(模型驱动架构)
知名消费金融公司 领域驱动设计
深圳某汽车企业 模型驱动的分析设计
更多...