K3S 安装与声明式配置管理方式
K3S: 精简的 K8S
要打造云原生家庭网络,还需要为路由器搭建一套云原生环境,也就是安装一套 Kubernetes 集群。由于路由器是单机,且计算资源有限,所以应该安装一套精简的 K8S 集群,经过一些调研和体验,包括 microk8s、k0s、k3d、k3s、kind、minikube 等工具,最终选择了用 k3s 来搭建集群。
安装 K3S
路由器在国内,安装 k3s 使用国内的 mirror 一键安装:
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -s - server \
--disable-network-policy \
--disable-cloud-controller \
--disable-helm-controller \
--data-dir=/data/k3s \
--disable=traefik,local-storage,metrics-server
要点解析:
- 作为路由器,不需要用到很多高级能力,安装的时候将不需要的能力禁用下,以便让 k3s 更加精简。
- 如果有数据盘,或者插了移动硬盘,挂载到
/data
目录,可以指定 k3s 的数据目录使用该目录下的子目录,节约系统盘容量。
后续要升级也使用上面相同的命令,参考 k3s 官方安装文挡
镜像加速方案
安装应用需要拉取相应的容器镜像,基本来自 DockerHub,在国内拉取 DockerHub 速度较慢,可以考虑以下几种方案进行加速。
方案一:配置镜像加速地址
你可以找到一个靠谱的镜像加速器地址,或者自己搭建一个镜像加速器,然后配置创建 K3S 配置文件 /etc/rancher/k3s/registries.yaml
:
mirrors:
docker.io:
endpoint:
- "https://docker.m.daocloud.io" # 注意替换镜像加速器地址
重启 K3S 生效:
systemctl restart k3s
方案二:透明代理加速
如果你有代理可以访问到 DockerHub,可以先将透明代理客户端用容器部署好,再部署其它应用。
而透明代理依赖的镜像又该如何拉取呢?你可以直接从 DockerHub 拉取,慢就慢点,等代理部署好后拉其它的镜像就快了。
或者你也可以手动将镜像打包成文件:
docker save your/proxy-image > image.tar
然后将 image.tar
拷贝到路由器上,通过 ctr
导入进来:
ctr -n k8s.io -a /run/k3s/containerd/containerd.sock image import image.tar
ctr
命令是安装 k3s 后自带的命令。