网站制作 公开课网站做广告投放 做销售线索预估
1.什么是K3s
K3s 被设计为小于 40MB 的单个二进制文件,完全实现了 Kubernetes API。为了实现这一目标,他们删除了许多不需要成为核心一部分的额外驱动程序,并且很容易被附加组件替换。
K3s 是完全 CNCF(云原生计算基金会)认证的 Kubernetes 产品。这意味着你可以编写你的 YAML 来对抗常规的“全脂”Kubernetes,它们也适用于 k3s 集群。由于其资源要求低,可以在 512MB 以上的 RAM 计算机上运行集群。这意味着我们可以允许 Pod 在主节点和节点上运行。
因为它是一个很小的二进制文件,这意味着我们可以在启动常规 Kubernetes 集群的一小部分时间内安装它!我们通常会在不到两分钟的时间里启动具有少量节点的 k3s 集群,这意味着您可以立即部署应用程序来学习/测试。它的声誉和采用率也在快速增长,自 17 年初推出以来,超过 2019k 颗 Github 明星,而它最近被 Stackshare 评为 1 年排名第一的新开发者工具。
2.K8s的痛点
尽管Kubernetes(K8s)是一个强大而广泛使用的容器编排平台,但在实际使用中仍然存在一些痛点和挑战,这些可能因组织的具体需求和环境而异。
- 复杂性: Kubernetes是一个非常强大的工具,但也因其复杂性而闻名。配置、管理和维护一个Kubernetes集群可能需要较长时间的学习曲线,尤其是对于初学者来说。
 - 学习曲线: 对于新手来说,学习Kubernetes可能是一项庞大的任务。理解概念、资源对象和Kubernetes API的使用可能需要一些时间。
 - 网络配置: Kubernetes的网络配置可能相对复杂,特别是对于需要跨多个集群、云提供商或边缘设备的复杂网络拓扑的组织。
 
由于上述等原因,轻量级的Kubernetes(K3s)应运而生。
3.K3s增强功能
K3s 是一个完全兼容的 Kubernetes 发行版,具有以下增强功能:
- 打包为单个二进制文件。
 - 使用基于 sqlite3 作为默认存储机制的轻量级存储后端。同时支持使用 etcd3、MySQL 和 Postgres。
 - 封装在简单的启动程序中,可以处理很多复杂的 TLS 和选项。
 - 默认情况下是安全的,对轻量级环境有合理的默认值。
 - 添加了简单但强大的 batteries-included 功能,例如:
 
-  
- 本地存储提供程序
 - service load balancer
 - Helm controller
 - Traefik ingress controller
 
 
- 所有 Kubernetes control plane 组件的操作都封装在单个二进制文件和进程中。因此,K3s 支持自动化和管理复杂的集群操作(例如证书分发等)。
 - 最大程度减轻了外部依赖性,K3s 仅需要现代内核和 cgroup 挂载。K3s 打包了所需的依赖,包括:
 
-  
- containerd
 - Flannel (CNI)
 - CoreDNS
 - Traefik (Ingress)
 - Klipper-lb (Service LB)
 - 嵌入式网络策略控制器
 - 嵌入式 local-path-provisioner
 - 主机实用程序(iptables、socat 等)
 
 
3.K3s与K8s的相同点
- 容器编排: K3s和Kubernetes都是用于容器编排的平台。它们可以自动化和管理大量的容器应用程序,确保它们在集群中高效运行。
 - 容器生态系统: 两者都建立在Docker等容器技术的基础上,可以轻松部署和管理容器化的应用程序。
 - 伸缩性: K3s和Kubernetes都支持水平扩展,可以根据负载的变化动态调整集群中的资源分配。
 - 服务发现和负载均衡: 两者都提供了服务发现和负载均衡的机制,使得应用程序能够相互通信并在多个实例之间均衡分配负载。
 - 存储管理: K3s和Kubernetes都提供了存储卷的概念,允许容器访问持久化数据。
 
4.K3s与K8s区别
那么使用 k3 有什么区别呢?
首先,单个控制平面 k3s 集群中的默认数据库是 SQLite。性能对于小型集群来说很棒,但如果需要更大的集群,可能需要用更强大的东西替换,例如 etcd、MySQL 或 PostgreSQL!幸运的是,k3s 支持所有这些(而上游 Kubernetes 只支持 etcd)!
另一个真正的区别只适用于较大的云提供商之一,你可能已经在上游 Kubernetes 源代码中有很多扩展,因为 k3s 删除了所有这些扩展并依赖于标准接口(如容器存储接口 (CSI))来实现它们。不过,这对最终客户没有影响,只对服务提供商本身有影响。
如下表所示,我们分别从多个不同方面,对比了K3s与K8s的区别。
|   特征  |   K3s  |   K8s  | 
|   大小  |   占用空间更小(小于 200MB)  |   占用空间更大(数百 MB)  | 
|   依赖  |   更少的依赖关系  |   更多的依赖,包括 etcd、kube-proxy 等。  | 
|   资源使用情况  |   使用更少的资源(CPU、RAM 等)  |   使用更多资源,尤其是对于大型集群  | 
|   部署  |   更易于部署和管理  |   更复杂的部署和管理  | 
|   配置  |   简化配置,选项更少  |   具有许多选项的更复杂的配置  | 
|   可扩展性  |   大型群集的可扩展性有限  |   可扩展到更大的集群和工作负载  | 
|   高可用性  |   可能存在高可用性限制  |   强大的高可用性选项,包括群集级冗余、自动故障转移等。  | 
|   特征  |   更少的内置功能和扩展  |   提供广泛的功能和扩展,包括服务发现、负载平衡、自动扩展等。  | 
|   安全  |   由于代码库较小,攻击面更少  |   更大的代码库,具有更多潜在的攻击面  | 
|   兼容性  |   与某些 Kubernetes 工具和扩展的兼容性有限  |   与各种 Kubernetes 工具和扩展的强大兼容性  | 
|   使用案例  |   非常适合资源受限的小型部署、边缘计算和物联网  |   更适合具有高资源要求的大型复杂部署,例如大数据、机器学习和高性能计算  | 
5.K3s的安装
K3s 提供了一个安装脚本,可以方便地将其作为服务安装在基于 systemd 或 openrc 的系统上。该脚本可在 https://get.k3s.io 获得。要使用这种方法安装 K3s,只需运行:
curl -sfL https://get.k3s.io | sh - 
还可以使用以下方法加速安装
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | 
INSTALL_K3S_MIRROR=cn sh - 
运行此安装后:
- K3s 服务将被配置为在节点重启后或进程崩溃或被杀死时自动重启。
 - 将安装其他实用程序,包括 kubectl、crictl、ctr、k3s-killall.sh 和 k3s-uninstall.sh。
 - kubeconfig 文件将写入到 /etc/rancher/k3s/k3s.yaml,由 K3s 安装的 kubectl 将自动使用该文件。
 
curl -sfL https://get.k3s.io | 
K3S_URL=https://myserver:6443 K3S_TOKEN=mynodetoken sh - 
还可使用以下方法加速安装
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh 
| INSTALL_K3S_MIRROR=cn K3S_URL=https://myserver:6443 K3S_TOKEN=mynodetoken sh - 
K3S_URL 参数会导致安装程序将 K3s 配置为 Agent 而不是 Server。K3s Agent 将注册到在 URL 上监听的 K3s Server。K3S_TOKEN 使用的值存储在 Server 节点上的 /var/lib/rancher/k3s/server/node-token 中。
注意:每台主机必须具有唯一的主机名。如果你的计算机没有唯一的主机名,请传递 3S JODEAE 环境变量,并为每个节点提供一个有效且唯一的主机名。
安装完成后,你可以使用以下命令检查K3s的状态:
sudo k3s kubectl get nodes 
如果一切正常,你应该看到一个节点(Node)的列表,表示K3s集群已成功启动。
