K8s太繁琐?快试试开源轻量级的 Kubernetes!

1,130 阅读4分钟

K3s 是开源轻量级的 Kubernetes。K3s 易于安装,仅需要 Kubernetes 内存的一半,所有组件都在一个小于 100 MB 的二进制文件中。

K3s是一个完全兼容的 Kubernetes 发行版,这意味着k8s如何使用,在k3s中就如何使用,没有额外的学习成本。

k3s开源在Github:github.com/k3s-io/k3s 目前Star数量已达28.2k

k3s还可以自动更新证书,已过期或 90 天内过期的证书都会自动更新。

k3s可单节点启动一个功能齐全的 Kubernetes 集群,它包括了 pod 所需的所有数据存储、control planekubelet容器运行时组件。除非你希望向集群添加容量或冗余,否则没有必要添加额外的 Server 或 Agent 节点。非常适合学习和开发环境,以及物联网方向。

安装

K3s非常轻量级,最低硬件要求如下:(如此硬件要求可以忽略不计了)

规格最小推荐
CPU1 core2 cores
RAM512 MB1 GB

可用于以下架构:

  • x86_64
  • armhf
  • arm64/aarch64
  • s390x

脚本安装

curl -sfL https://get.k3s.io | sh -

国区可使用加速安装

curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -

二进制安装

curl -Lo /usr/local/bin/k3s https://github.com/k3s-io/k3s/releases/download/v1.26.5+k3s1/k3s; chmod a+x /usr/local/bin/k3s

启动

k3s server --write-kubeconfig-mode=644

# 或者使用环境变量
K3S_KUBECONFIG_MODE="644" k3s server

除了使用环境变量和CLI参数配置K3之外,K3还可以使用配置文件。默认情况下,存放在 /etc/rancher/k3s/config.yaml

配置文件基本示例

write-kubeconfig-mode: "0644"
tls-san:
  - "foo.local"
node-label:
  - "foo=bar"
  - "something=amazing"
cluster-init: true

这等效于以下CLI参数:

k3s server \
  --write-kubeconfig-mode "0644"    \
  --tls-san "foo.local"             \
  --node-label "foo=bar"            \
  --node-label "something=amazing"  \
  --cluster-init

K3s 包含并默认使用 containerd为容器运行时,但仍然可以使用Docker作为容器运行时

k3s server --docker

查看集群启动状态

kubectl get pods --all-namespaces

卸载

如果使用脚本安装了k3,则在安装过程中会生成卸载k3的脚本。

/usr/local/bin/k3s-uninstall.sh

客户端和服务器证书

K3s 客户端和服务器证书自颁发日起 365 天内有效。每次启动 K3s 时,已过期或 90 天内过期的证书都会自动更新。

要手动轮换客户端和服务器证书,请使用 k3s certificate rotate 子命令:

# 停止 K3s
systemctl stop k3s

# 轮换证书
k3s certificate rotate

# 启动 K3s
systemctl start k3s

你可以通过指定证书名称来轮换单个或多个证书:

k3s certificate rotate --service <SERVICE>,<SERVICE>

可以轮换的证书:adminapi-servercontroller-managerschedulerk3s-controllerk3s-servercloud-controller, etcd, auth-proxy, kubeletkube-proxy

CA 证书

Kubernetes 需要大量 CA 证书才能正常运行。有关 Kubernetes 如何使用 CA 证书,请参阅 Kubernetes PKI 证书和要求文档。

默认情况下,K3s 在第一个 Server 节点启动时生成自签名 CA 证书。这些 CA 证书自颁发日起 10 年内有效,不会自动更新。

权威 CA 证书和密钥存储在数据存储区的引导程序密钥中,使用 server token 作为 PBKDF2 密码和 AES256-GCM 和 HMAC-SHA1 进行加密。

在 K3s Server 启动期间,CA 证书和密钥的副本会被提取到磁盘。 任何 Server 都可以在节点加入集群时为节点生成叶证书,而 Kubernetes Certificates API 控制器可以在运行时颁发其他证书。

要轮换 CA 证书和密钥,请使用 k3s certificate rotate-ca 命令。

该命令会执行完整性检查,从而确认更新的证书和密钥可用。

如果更新后的数据没有问题,则会更新数据存储的加密引导程序密钥,并在下次 K3s 启动时使用新的证书和密钥。

如果在验证证书和密钥时出现了问题,则会向系统日志报告错误,并取消操作且不做任何更改。

从 2023-02 版本(v1.26.2+k3s1、v1.25.7+k3s1、v1.24.11+k3s1、v1.23.17+k3s1)开始,支持 k3s certificate rotate-ca 命令以及使用由外部 CA 签发的 CA 证书。

如果你觉得这篇文章对你有帮助,记得点赞、分享,并关注,万分感谢!