什么是 Rancher K3s?
K3s是官方的 Cloud Native Computing Foundation 沙盒项目带来了一个轻量级、完全兼容的 Kubernetes 发行版,专为低资源生产模型(如远程位置或物联网设备)而设计。 当与 Rancher 结合使用时,可以在 Rancher 编排平台内轻松管理 K3s。
什么是牧场主?
Rancher 是一个用于部署容器的完整软件堆栈。 它解决了跨基础架构操作多个 Kubernetes 集群的操作和安全障碍。 Rancher 为 DevOps 团队提供了多种运行容器化工作负载的集成工具。
具有外部数据库的高可用性 K3s 服务器单服务器集群可以满足各种用例。 尽管如此,对于 Kubernetes 控制平面正常运行时间至关重要的环境,您可以在 HA 配置中运行 K3s。 一个 HA K3s 集群由两个或多个服务器节点组成,它们将为 Kubernetes API 提供服务并运行其他控制平面服务一个外部数据存储(与单服务器设置中使用的嵌入式 SQLite 数据存储相对)
建筑学
K3s 可以通过多种方式进行配置。 它可以用作使用嵌入式数据库(如 SQLite)或使用外部数据库的高可用性 K3s 服务器集群的单个服务器设置。 在下图中,该框架在高可用性设置中进行了演示。
先决条件
- 访问 root 用户或具有以下权限的用户 sudo 特权
- 每个节点的唯一主机名
- 基于 Linux 的操作系统
最低硬件建议
- 512 MB RAM(推荐 1 GB)
- 至少 1 个 CPU
- 首选SSD硬盘
联网
- 用于节点可访问性的开放端口 (6443)
- 如果需要指标,请在每个节点上打开端口 10250
- 如果使用 Flannel VXLAN,则打开 UDP 端口 8472。此端口不应对外可用
簇s
如果需要集群,请使用类似于下面列出的外部生产数据库运行高可用性设置。
- MySQL
- PostgreSQL
- 等
中央处理器和内存
这些是在集群设置中部署 K3s 的推荐设置。
部署规模 | 节点 | 虚拟CPU | 内存 |
小的 | 高达10 | 2 | 4GB |
中等的 | 最多 100 个 | 4 | 8 GB |
大的 | 最多 250 个 | 8 | 16 GB |
超大 | 最多 500 个 | 16 | 32 GB |
XX-大 | 500+ | 32 | 64 GB |
磁盘
- 首选SSD硬盘
网络
- 增加 CIDR 子网大小,以便 pod IP 可用。 在启动 K3s 服务器时使用 –cluster-cidr 选项完成此操作
数据库
- K3s 支持多种数据库,包括 MySQL、PostgreSQL、MariaDB 和 etcd。 以下是在大型集群上运行数据库所需的大小建议
部署规模 | 节点 | 虚拟CPU | 内存 |
小的 | 高达10 | 1 | 2GB |
中等的 | 最多 100 个 | 2 | 8 GB |
大的 | 最多 250 个 | 4 | 16 GB |
超大 | 最多 500 个 | 8 | 32 GB |
XX-大 | 500+ | 16 | 64 GB |
安装
服务器
安装 K3s 时,我们有两个主要选择。 我们可以使用脚本或从二进制文件安装它。 最简单的方法是使用以下命令。
curl -sfL https://get.k3s.io | sh -
可以使用多个变量来扩展此安装的可配置性。 运行此脚本后,K3s 服务将自动配置为在节点重新启动或任务崩溃或被终止后重新启动。
在此过程中还会安装以下额外实用程序。
- kubectl
- crictl
- ctr
- k3s-killall.sh
- k3s-卸载.sh
此外,K3s 安装的 kubectl 应用程序将自动使用写入 /etc/rancher/k3s/k3s.yaml 的新创建的 kubeconfig 文件。
节点
要在每个工作节点上安装 K3s,请使用 K3S_URL 和 K3S_TOKEN 变量运行安装脚本。 下面是一个 example 展示如何加入工作节点:并将它们添加到集群中,
curl -sfL https://get.k3s.io | K3S_URL=https://servername:6443 K3S_TOKEN=nodetoken sh -
使用 K3S_URL 参数提示 K3s 在工作模式下运行。 这表明 K3s 代理将向 K3s 服务器注册节点,并监听提供的 URL。 K3S_TOKEN 值存储在服务器节点上的 /var/lib/rancher/k3s/server/node-token 中。
服务器启动
上面提到的安装脚本将检测您的操作系统正在使用哪种服务类型并启动该服务。 如果使用 systemd,将在 /var/log/syslog 中创建一个日志文件,可以使用 journalctl -u k3s 命令查看。
下面是一个 example 如果我们的操作系统使用 systemd,则 k3s.service 文件的服务单元。
[Unit]
Description=Lightweight Kubernetes
Documentation=https://k3s.io
After=network-online.target
[Service]
Type=notify
EnvironmentFile=/etc/systemd/system/k3s.service.env
ExecStart=/usr/local/bin/k3s server
KillMode=process
Delegate=yes
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
TimeoutStartSec=0
Restart=always
RestartSec=5s
[Install]
WantedBy=multi-user.target
配置
自动部署清单文件
清单文件可以放置在以下位置。
/var/lib/rancher/k3s/server/manifests
K3s 将自动部署清单文件,方式与使用 kubectl apply 命令部署清单文件的方式相同。
升级
要升级旧版本的 k3s,我们可以使用上面安装部分中提到的相同标志重新运行原始安装脚本。
curl -sfL https://get.k3s.io | sh -
如果我们想将 K3s 升级到特定版本,我们可以运行以下命令。
curl -sfL https://get.k3s.io | INSTALL_K3S_VERSION=v.y.z-rc1 sh -
手动升级 k3s:
- 从下载 K3s 版本 GitHub 上的发布页面.
- 将其安装到 /usr/local/bin/k3s(或您选择的位置。
- 停止旧版本的 K3s,然后使用以下命令手动启动新版本。
systemctl restart k3s
卸载
如果 k3s 是使用 install.sh 脚本安装的,那么在安装过程中会自动创建一个卸载脚本。 此卸载脚本位于 /usr/local/bin/k3s-uninstall.sh 的服务器节点上。 (或作为 k3s-agent-uninstall.sh)。
已知的问题
如果在 nftables 模式下使用 iptables 而不是旧版本,您可能会遇到问题。 Rancher 建议使用更新版本的 iptables (1.6.1+) 来规避任何问题。
结论
K3s 是一个新的、通用的、全栈 K8s 平台,用于简化独立或集群服务器部署的部署。 由于 k3s 是为远程位置或物联网设备等资源较少的生产模型而设计的,因此它允许利用完全兼容的 Kubernetes 分布。 当与 Rancher 结合使用时,可以在 Rancher 编排平台内轻松管理 K3s。
立即预订您的位置!
我们以成为 Hosting™ 中最乐于助人的人而自豪!
我们的支持团队由经验丰富的 Linux 技术人员和才华横溢的系统管理员组成,他们对多种网络托管技术有着深入的了解,尤其是本文中讨论的技术。
如果您对此信息有任何疑问,我们将随时为您解答与本文相关问题的任何询问,每天 24 小时、每周 7 天、每年 365 天。
如果您是完全托管的 VPS 服务器, Cloud 专用,VMWare 私有 Cloud私有父服务器, 托管 Cloud 服务器或专用服务器所有者,并且您对执行概述的任何步骤感到不舒服,可以通过电话@800.580.4985 联系我们, 聊天 或支持票以帮助您完成此过程。