本地k3s集群常见小技巧
本地 k3s 集群常见小技巧
概述
本文主要给出一些具体的安装实践案例供大家参考,之前也写过一些 k3s 系列教程,不过本文专门针对资源不太够的情况下。
默认安装
有时候只是想用 k3s 来替代容器来部署一些应用,不需要 k8s 特别复杂的功能特性时或者是测试的机器资源不是特别充足时,可以禁用很多不需要的组件来节约服务器资源:
$ curl -sfL https://get.k3s.io | sh -s - server \
--disable-kube-proxy \
--disable-cloud-controller \
--disable-network-policy \
--disable-helm-controller \
--disable=traefik,local-storage,metrics-server,coredns
可根据自身需求,删除部分
disable
参数来启用相关功能。
NAT 环境或者路由器上安装极简 k3s
将 k3s 安装在自家路由器或者买的 NAT 机器上,可能需要注意添加如下参数了:
--node-ip=192.168.31.163 \
--tls-san=192.168.31.163 \
--tls-san-security=false \
强制指定 ip,避免后续证书问题,如果你的环境 ip 不会经常变化的话,可以忽略
延长证书有效期
k3s 签发的证书默认有效期是 1 年,到期前 90 天之后 重启 k3s 才会自动续期。只能通过环境变量来处理。
配置方法是创建 /etc/systemd/system/k3s.service.env
或者 /etc/default/k3s
文件,添加如下内容:
# 3650 天 = 10 年 代码里最大就是10年,应该也足够了
CATTLE_NEW_SIGNED_CERT_EXPIRATION_DAYS=3650
具体配置需要看你的 k3s 的 service 文件了
systemctl cat k3s.service
配置完成后,手动触发证书轮转并重启 k3s 服务:
k3s certificate rotate
systemctl restart k3s
禁止驱逐
k8s 会自动检测 node 内存和存储空间,超过阈值就会触发驱逐,如果 k3s 只是单机使用,驱逐毫无意义且影响使用,这时可以禁用驱逐。
在 /etc/rancher/k3s/config.yaml
中添加如下配置:
kubelet-arg:
- "eviction-hard=memory.available<1Mi,nodefs.available<1Mi" # 禁用驱逐
禁用镜像清理
当存储空间不够时 k3s 会尝试自动清理镜像来释放空间,可能导致不希望被清理的镜像被清理掉,这时可以禁用镜像清理。
在 /etc/rancher/k3s/config.yaml
中添加如下配置:
kubelet-arg:
- "image-gc-high-threshold=100" # 禁用 image gc