前一段时间,我把我的软路由重新弄了一下,以前的DNS服务器是放在我的NAS里面的,现在把它们放在软路由里,虚拟了一个Debian,安装了K3S和Helm。

那么就有人问了,为啥不用docker呢?反而用K3S这个复杂的东西,这就涉及kubernetes的优点了。

首先,是稳定性,K8S(kubernetes的缩写,K3S是K8S的简化版)的稳定性应该没啥好说的,YYDS!

其次,K8S可以滚动升级,升级的时候应用不停机(几乎没有中断)

最后,我觉得最重要的是,K8S可以检测应用容器是否健康,不健康会自动重启,然后还可以版本回退,虽然docker也有健康检测,但是docker检测的方法太少,太局限

其实,我一开始是嫌麻烦用的docker和docker-compose部署的,但是有点强迫症,怕应用崩溃,毕竟DNS服务是挺重要的,过了一天才换成的K3S

安装K3S

安装系统我就不多说了,我用的是esxi虚拟的Debian,应该只要是Linux都兼容K3S的

安装K3S

curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -s -  --disable traefik --disable traefik-crd --disable metrics-server

这里我禁用了traefik和指标服务,这两个用不到,如果要用traefik的话,也可以后面自己安装

安装Helm

Helm是一个k8s的包管理器,它可以非常方面的安装K8S应用,安了这个就可以一键部署我写好的应用了!

curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash

因为K3S的配置文件地址和K8S不一样,helm默认找不到,所以我们需要修改一下环境变量

nano /etc/profile

写入

export KUBECONFIG=/etc/rancher/k3s/k3s.yaml

然后按Ctrl + X 按Y保存退出

然后输入source /etc/profile生效

下载文件

我已经把我写好的配置放到了github把它下载解压,把charts目录上传到你的Linux上

可以看到我写了三个应用,ddns-go,pihole,mosdns
如果你要修改默认的配置文件,就修改value.yaml

mosdns的默认配置是:映射了5353端口,使用内存挂载配置文件,这样查询分流应该是最快。

pihole:访问端口为80,DNS服务端口为53,使用PVC挂载配置文件,需要修改默认的密码。
图片.png

ddns-go:访问端口为9876,使用主机网络(这样如果你有ipv6也可以获取到),使用PVC挂载配置文件。

安装命令

我就写一个应用的命令,其他都是一样的,我这里假设安装的是pihole

创建pihole的命名空间

k3s kubectl create ns pihole

安装pihole

helm install pihole /mnt/charts/pihole -n pihole

helm install:是安装命令
pihole:起一个名字
/mnt/charts/pihole pihole所在的文件夹(右击复制路径)

图片.png
-n pihole 指定命名空间

卸载

helm uninstall pihole -n pihole

卸载只需要写名字和命名空间就行

升级

这里的升级是指你想要修改value.yaml,使其生效

helm upgrade pihole /mnt/charts/pihole -f /mnt/charts/pihole/values.yaml -n pihole

和安装是差不多的,只不过要指定一下你的value.yaml,这里就是-f /mnt/charts/pihole/values.yaml

UDP Receive Buffer Size

使用DoQ时,会出现failed to sufficiently increase receive buffer size (was: 120 kiB, wanted: 2048 kiB, got: 240 kiB)的错误。

有sysctl的情况下,用

sysctl -w net.core.rmem_max=2500000

没有sysctl,用

echo 2500000 > /proc/sys/net/core/rmem_max来解决。

最后修改:2022 年 06 月 02 日
感谢您的支持