will技客

专注于网站数据采集,网络爬虫研究的个人博客。

部署k3s高可用集群(实验性)

Linux 0 评

在上一篇 Rancher2.3 + k3s部署记录 里虽然详细记录了部署rancher2 + k3s的过程,但是这是第一次接触rancher和k3s,所有操作都只是基于查阅了相关文档和参考博文进行流水式部署的,很多东西完全不知道所以然,并且基于单机部署直接应用于生产环境是非常不可靠的。

k3s是什么?k3s和k8s有什么区别?
很多人可能像我一样早就听过k8s大名一直想偿试但一直没有机会,因为你发现几台服务器用k8s就是浪费资源嘛,学习成本相当高且你还用不上,费那事干什么。好了,现在听说k3s可以应用在古董机上做为生产环境,那就试试呗。
好吧,我承认主要受这篇文章启发:使用k3s减少k8s成本,它非常的鼓舞了我,小环境也可以大玩法。在这之前我还停留在使用ssh连接服务然后单机部署docker容器,部署分布应用时疲于不停的奔波在N台低配机器上。原来没钱低配服也可以这样玩的,任何环境都不应该限制自己的想法, Just Do It。

因为有限的服务器资源,rancher2还是选单机部署,只是将k3s进行高可用部署。官方提供了两种部署方式,一种是连接外部数据库如:mysql,然后部署多个k3s server端再进行负载均衡,还有一种是处于实验阶段但未来可能将成为主要方式的内嵌dqlite数据库用--cluster-init参数启动的方式,具体可以查看文档:HA Embedded DB (Experimental)

服务器配置及网络规划

  • Debian9 + Docker19.03.6 + Rancher2.3.5 + k3s1.17.2
  • server1(juhu-ai): 4核/16GB/40GB 172.16.32.6
  • server2(juhu-spider): 4核/8GB/40GB 172.16.32.4
  • server3(juhu-webs): 4核/8GB/40GB 172.16.32.5
  • worker1(sayue-monitor): 2核/4GB/40GB 10.0.0.5
  • worker2(sayue-spider): 2核/4GB/40GB 172.18.0.4

如果没有配置dns请自行修改每台机器的主机名

hostname your hostname
vim /etc/hostname
#除了修改本机还要把所有主机名的解析都加入
vim /etc/hosts
172.16.32.4 juhu-spider
172.16.32.6 juhu-ai
172.16.32.5 juhu-webs
10.0.0.5 sayue-monitor
172.18.0.4 sayue-spider

基础操作

每台机器上安装必要安装包,安装docker配置国内源什么的这里略过,请参考上一篇文章:Rancher2.3 + k3s部署记录

官方推荐奇数运行server节点,所以先分别在3台服务器上安装k3s server

关于Traefik等k3s自带组件请查看文档自行设置: k3s安装网络选项

server1(juhu-ai): 4核/8GB/40GB 172.16.32.6

#我国内环境安装,国外环境请自行替换安装源
#--docker将默认containerdr换成docker
#K3S_TOKEN=k3s_server_token自定义一个密钥,后面安装其它server时要用到
#不打算用k3s自带traefik的可以加上参数 --no-deploy traefik
curl -sfL https://docs.rancher.cn/k3s/k3s-install.sh | K3S_TOKEN=k3s_server_token \
INSTALL_K3S_MIRROR=cn sh -s - server --docker --no-deploy traefik --cluster-init

server2(juhu-webs): 4核/16GB/40GB 172.16.32.5

#我国内环境安装,国外环境请自行替换安装源
#--docker将默认containerdr换成docker
#K3S_TOKEN=k3s_server_token 同第1台server的K3S_TOKEN值一样
#--server server1地址
#不打算用k3s自带traefik的可以加上参数 --no-deploy traefik
curl -sfL https://docs.rancher.cn/k3s/k3s-install.sh | K3S_TOKEN=k3s_server_token \
INSTALL_K3S_MIRROR=cn sh -s - server --docker --no-deploy traefik --server https://juhu-ai:6443

**其它server部署和server2运行一样的命令,至少需要部署三个节点。

k3s worker部署

#在任意一台k3s server上执行 得到部署k3s worker需要的K3S_TOKEN
cat /var/lib/rancher/k3s/server/node-token 

#我这里K3S_URL填写的是server1的主机名juhu-ai
sudo curl -sfL https://docs.rancher.cn/k3s/k3s-install.sh | K3S_URL=https://juhu-ai:6443 \
K3S_TOKEN={k3s_token} INSTALL_K3S_MIRROR=cn sh -

部署完成后在rancher中导入集群,生成执行命令在server1主机juhu-ai中执行

卸载

#k3s卸载
/usr/local/bin/k3s-uninstall.sh(或 /usr/local/bin/k3s-agent-uninstall.sh )
#强制删除和k3s相关的容器服务
docker rm -f  `docker ps -aq --filter name=k8s_`
升级到macOS Catalina后pip3崩溃