关于 k3s - 轻量级 Kubernetes
Kubernetes 是一个开源容器编排工具,在业界广泛用于自动化应用程序部署、自动伸缩和管理。创建 Kubernetes (k8s) 集群是一项相当繁琐的任务。但如果使用轻量级 Kubernetes k3s,一切就都不再繁琐。只需几条命令,您的集群即可启动并运行。让我们深入了解一下。
K3s 及其历史
K3s 是一个开源的轻量级 Kubernetes 发行版,所有组件都打包在一个不到 100MB 的二进制文件中。它最初是作为Rancher Labs 实验项目Rio的组件发布的,但由于其效率高且需求旺盛,最终将其作为独立的开源项目发布。K3s 于 2019 年 2 月 26 日正式发布。K3s
在边缘计算、物联网、持续集成、开发、ARM 和嵌入式 K8s 领域取得了巨大成功。它可以作为单节点或多节点集群安装,并且是完全符合生产环境标准的 Kubernetes 发行版。
K3s 架构
上图展示了 k3s 的基本架构。你可以观察到,k3s 有两个主要组件,k3s server
和,就像k8s 中的和k3s agent
一样。在和中,所有其他组件组合在一起作为单个进程运行,这使得它真正轻量级,这与 k8s 中每个组件作为单独的进程运行不同。事实上,在单节点集群的情况下,和都可以在单个节点中作为单个进程运行,这有助于在 90 秒内启动集群。大多数组件与 k8s 中使用的组件类似,它们的功能也与 k8s 中的非常相似,除了和在 k3s 中引入了。要详细了解各个组件,请参阅k8s 文档。 说到,它是 k8s 中使用的替代品,并且从允许运行的单节点集群中删除了依赖关系,但这仅限于单节点情况。在 HA k3s 集群的情况下,k3s 使用外部数据库。说到,它基本上使用多个端口进行连接,但在 k3s 中,它借助进行连接。在后台,它会创建一个单向连接,但一旦连接建立,就会启用双向通信,这样通过使用单个端口进行通信,连接就会更加安全。对于集群网络,可以在图中看到 ,它在 k3s 中用作容器网络接口 (CNI)。 以上是对 k3s 架构的概述。更多详细信息,请参阅文档。master node
worker node
server
agent
server
agent
SQLite
Tunnel Proxy
Flannel
SQLite
etcd
etcd
SQLite
Tunnel Proxy
kube-proxy
api-server
api-server
tunnel proxy
tunnel proxy
api-server
Flannel
使用 k3s 设置集群
设置 Kubernetes (k8s) 集群是一项相当繁琐的任务,但对于 k3s 来说却并非如此。我们只需几条命令即可轻松设置 k3s 单节点或多节点集群。在本篇博文中,我们将从单节点设置开始,探索这两种方法。
单节点集群
创建单节点 K3s 集群或设置 K3s 服务器非常简单。我们只需部署一个命令,它就会为您创建 K3s 服务器。
请执行以下命令:
curl -sfL https://get.k3s.io | sh -s - --write-kubeconfig-mode 644
在上面的命令中,我们使用了一个额外的标志,即--write-kubeconfig-mode
。基本上,默认情况下,位于 的 KUBCECONFIG 文件/etc/rancher/k3s/k3s.yaml
仅对 root 用户具有读取权限。因此,我们需要使其对其他用户也具有可读权限(推荐方法)。
就这样,我们成功设置了 k3s 单节点集群。
多节点集群
在 K3s 中设置多节点集群也非常简单。只需几条命令,我们就可以为主节点配置任意数量的工作节点。请按照以下步骤配置您的高可用性 (HA) 生产级 K3s 集群。
步骤 1. 首先,我们需要像单节点集群一样,使用相同的命令设置服务器 -
curl -sfL https://get.k3s.io | sh -s - --write-kubeconfig-mode 644
步骤 2. 之后,从下面的命令中,我们需要找到节点令牌 (node-token),k3s-agent 将进一步使用该令牌为集群添加任意数量的工作节点。
sudo cat /var/lib/rancher/k3s/server/node-token
步骤 3。下一个命令用于为我们通过上述命令设置的主节点创建一个 k3s-agent,我们将使用从主节点提取的服务器 IP 和节点令牌。请将my-server
和替换node-token
为我们通过上述命令生成的主节点 IP 和令牌。
请在单独的实例/系统中执行以下命令,使其成为所创建主节点的工作节点。
curl -sfL https://get.k3s.io | K3S_URL=https://my-server:6443 K3S_TOKEN=node-token sh -
好啦!我们已经成功搭建了高可用性生产级 K3s 集群。现在,我们准备开始在 K3s 集群上进行部署了。
现在,在我们了解了设置集群的不同方式之后,让我们看看使用 k3s 的优势以及它是否真的被业界使用?
k3s 的优势
- 快速安装,
- 所需资源更少,
- 易于设置集群,
- 尺寸较小,
- 节点的添加/删除非常容易。这些是拥有 k3s 集群的一些优势。现在的问题是,它真的在工业界得到了应用吗?
使用 k3s 的公司
由于其配置简便、灵活性高(可支持小至Raspberry Pi
或大至 的物体) AWS a1.4xlarge 32GiB server
,因此被各大组织广泛用于生产环境。以下是一些使用 K3s 的公司:
- Civo - 云原生服务提供商
- Qubitro - 用于设计和开发物联网项目的物联网平台。
- LoyaltyHarbour - 为电子商务商店提供支持。
- TWave - 状态监测系统
- Lunar Ops, Inc - 总部位于纽约布朗克斯的 DevOps 即服务公司
因此,这些是少数在生产中使用 k3s 的公司。
我下一步要做什么?
因此,在这篇博客中,我们对 k3s 的架构、集群设置、优势以及使用它的公司进行了深入分析。如果您有任何疑问,请随时联系我或评论区留言。我一定会尽快为您解答。
目前,我还在撰写另一篇关于如何在 k3s 单节点集群上搭建Devtron 的博客,很快就会与社区分享我的成果。