本地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

Sponsor

Like this article? $1 reward

Comments