简介
k3s的搭建其实还是比较简单的,k3s出第一个版本的时候我就关注了,现在过去很多年了,文档什么都很完善了。如果想在家里长期稳定的运行一个k8s,k3s是一个完美的解决方案,尤其是当你用树莓派或者其他arm设备去跑的时候。
操作
k3s 高可用支持两种方式
- 使用外部数据库(pgsql.mysql,mariadb,etcd)
- 使用内部的嵌入式数据库(etcd)
这里我们使用外部的mysql作为高可用的数据库,原因是我不想再搭建一个数据库了,反正又不是不能用。
如果在搭建的过程中你犯了一些错误,可以随时使用下面这个脚本来卸载节点中的k3s
/usr/local/bin/k3s-uninstall.sh
接着我们准备四台虚拟机
- k3s-1
- k3s-2
- k3s-3
- k3s-4
如果你没有什么特殊的需求的话可以直接使用官方的脚本去安装k3s
1 | curl -sfL https://get.k3s.io | sh -s - server \ |
这里的token可以随机生成一个,我的操作是随便touch一个文件
touch a
然后拿他的md5
md5sum a
但是,我是一个有特殊需求的人,需求如下
- k3s默认使用containerd作为container runtime,但是这边使用docker作为container runtime,因为熟悉了在docker下操作
- 不安装默认的traefik和servicelb,我喜欢使用metalb和nginx
- cgroup-driver使用systemd
- proxy-mode使用ipvs
- 默认和容器等相关的数据目录放在/data/k3s下面
东搞西搞所以安装命令就变成下面这样了
1 | curl -sfL https://get.k3s.io | sh -s - server \ |
因为要使用docker,所以每台机器都要安装上docker
wget get.docker.com && bash index.html
systemctl start docker && systemctl enable docker
docker安装完成之后,就可以在三台主节点里面去执行安装命令了。
当然k3s还支持你把配置放在
/etc/rancher/k3s/config.yaml
这样当你要修改一些配置的时候,或者已经安装了k3s,想要卸载traefik的时候,直接修改这个文件就可以了,而不用去修改
/etc/systemd/system/k3s.service
下面是我的配置
1 | docker: true |
在三台主节点安装完k3s之后使用下面的命令去加入一个从节点
1 | curl -sfL https://get.k3s.io | sh -s - agent \ |
和所有的k8s高可用一样,我的apiserver使用nginx做了4层的负载均衡,所以有了下面这个域名,然后dns解析ip到nginx就好了
k3samd64.bboysoul.cn
nginx的配置
1 | stream { |
加入完成之后可以看所有的节点是不是都完成了
1 | Every 2.0s: kubectl get nodes k3s-1: Thu Jul 14 13:53:01 2022 |
查看已经部署的pods
1 | Every 2.0s: kubectl get pods -A k3s-1: Thu Jul 14 13:53:21 2022 |
欢迎关注我的博客www.bboy.app
Have Fun