????????K3s 被设计为小于 40MB 的单个二进制文件,完全实现了 Kubernetes API。为了实现这一目标,他们删除了许多不需要成为核心一部分的额外驱动程序,并且很容易被附加组件替换。
????????K3s 是完全 CNCF(云原生计算基金会)认证的 Kubernetes?产品。这意味着你可以编写你的 YAML 来对抗常规的“全脂”Kubernetes,它们也适用于 k3s 集群。由于其资源要求低,可以在 512MB 以上的 RAM 计算机上运行集群。这意味着我们可以允许 Pod 在主节点和节点上运行。
????????因为它是一个很小的二进制文件,这意味着我们可以在启动常规 Kubernetes 集群的一小部分时间内安装它!我们通常会在不到两分钟的时间里启动具有少量节点的 k3s 集群,这意味着您可以立即部署应用程序来学习/测试。它的声誉和采用率也在快速增长,自 17 年初推出以来,超过 2019k?颗 Github?明星,而它最近被 Stackshare 评为?1 年排名第一的新开发者工具。
????????尽管Kubernetes(K8s)是一个强大而广泛使用的容器编排平台,但在实际使用中仍然存在一些痛点和挑战,这些可能因组织的具体需求和环境而异。
? ? ? ? 由于上述等原因,轻量级的Kubernetes(K3s)应运而生。
K3s 是一个完全兼容的 Kubernetes 发行版,具有以下增强功能:
????????那么使用 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 工具和扩展的强大兼容性 |
使用案例 | 非常适合资源受限的小型部署、边缘计算和物联网 | 更适合具有高资源要求的大型复杂部署,例如大数据、机器学习和高性能计算 |
????????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 -
运行此安装后:
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集群已成功启动。