K3s – 轻量级 Kubernetes

什么是K3s

DevOps团队对Kubernetes感到兴奋,因为它可以在几乎所有基础架构上提供可预测的操作和类似云的配置体验。Rancher Labs与组织合作创建了轻量级的Kubernetes实现,该实现易于操作并且可以在x86和ARM基础结构上运行,而无需使用超过512 MB的内存。为了满足这些要求,我们开发了Kubernetes的新发行版,该发行版是为需要将应用程序快速而可靠地部署到资源受限环境的团队设计的。我们称它为k3s。

K3s 是一个完全符合 Kubernetes 的发行版,采用go语言开发,轻量级的 Kubernetes,安装简单,内存只有一半,所有的二进制都不到 100MB。K3s作者Rancher公司希望安装的 Kubernetes 在内存占用方面只是一半的大小。Kubernetes 是一个 10 个字母的单词,简写为 K8s。所以,有 Kubernetes 一半大的东西就是一个 5 个字母的单词,简写为 K3s。K3s 没有全称,也没有官方的发音。

它适用于

K3s 有以下增强功能。

  • 打包为单个二进制文件。
  • 基于 sqlite3 的轻量级存储后端作为默认存储机制。 etcd3,MySQL,Postgres 仍然可用。
  • 封装在简单的启动程序中,该启动程序处理很多复杂的 TLS 和选项。
  • 默认情况下是安全的,对轻量级环境有合理的默认值。
  • 添加了简单但功能强大的“batteries-included”功能,例如:本地存储提供程序,服务负载均衡器,Helm controller 和 Traefik ingress controller。
  • 所有 Kubernetes 控制平面组件的操作都封装在单个二进制文件和进程中。这使 K3s 可以自动化和管理复杂的集群操作,例如分发证书。
  • 外部依赖性已最小化(仅需要现代内核和 cgroup 挂载)。 K3s 软件包需要依赖项,包括:
    • containerd
    • Flannel
    • CoreDNS
    • CNI
    • 主机实用程序 (iptables, socat, etc)
    • Ingress controller (traefik)
    • 嵌入式 service loadbalancer
    • 嵌入式 network policy controller

为什么叫 K3s?

K3s - 轻量级 Kubernetes

K3s技术架构

K3s server 节点被定义为运行k3s server命令的机器(裸机或虚拟机)。工作节点定义为运行k3s agent命令的机器。

具有嵌入式数据库的单节点 server 设置

下图显示了一个集群的例子,该集群有一个内嵌 SQLite 数据库的单节点 K3s server。在这种配置中,每个 agent 节点都注册到同一个 server 节点。K3s 用户可以通过调用 server 节点上的 K3s API 来操作 Kubernetes 资源。

单节点k3s server的架构

K3s - 轻量级 Kubernetes

具有外部数据库的高可用 K3s server

单节点 k3s 集群可以满足各种用例,但对于 Kubernetes 控制平面的正常运行至关重要的环境,您可以在 HA 配置中运行 K3s。一个 HA K3s 集群由以下几个部分组成:

  • 两个或更多server节点将为 Kubernetes API 提供服务并运行其他控制平面服务
  • 外部数据存储(与单节点 k3s 设置中使用的嵌入式 SQLite 数据存储相反)

K3s高可用架构

K3s - 轻量级 Kubernetes

固定 agent 节点的注册地址

在高可用 k3s server 配置中,每个节点还必须使用固定的注册地址向 Kubernetes API 注册,如下图所示:

注册后,agent 节点直接与其中一个 server 节点建立连接。

K3s - 轻量级 Kubernetes

Github地址

https://github.com/rancher/k3s

原创文章,作者:xgl,如若转载,请注明出处:https://edgeaitech.com/p/364

发表评论

登录后才能评论