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 plane、kubelet 和容器运行时组件。除非你希望向集群添加容量或冗余,否则没有必要添加额外的 Server 或 Agent 节点。非常适合学习和开发环境,以及物联网方向。
安装
K3s非常轻量级,最低硬件要求如下:(如此硬件要求可以忽略不计了)
| 规格 | 最小 | 推荐 |
|---|---|---|
| CPU | 1 core | 2 cores |
| RAM | 512 MB | 1 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>
可以轮换的证书:admin、api-server、controller-manager、scheduler、k3s-controller、 k3s-server 、cloud-controller, etcd, auth-proxy, kubelet、kube-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 证书。
如果你觉得这篇文章对你有帮助,记得点赞、分享,并关注,万分感谢!