为了节约运行时资源,采用了轻量级的k3s部署k8s环境,用于本地开发及测试环境,够用了。
在k3s上安装rancher,官方安装文档:
>
k8s官方网站:>
kubeadm 是Kubernetes官方提供的用于快速安装Kubernetes集群的工具,通过kubeadm的方式安装集群比二进制的方式安装高效不少。建议初次使用k8s使用此方式安装,二进制的方式会很快令人失去信心。
在开始之前,部署Kubernetes集群机器需要满足以下几个条件:
dnsmasq安装可参考我的另一篇 文章
ha1节点配置
ha2节点配置
在两台ha节点都执行
启动后查看ha的网卡信息(有一台可看到vip)
两台ha节点的配置均相同,配置中声明了后端代理的两个master节点服务器,指定了haproxy运行的端口为16443等,因此16443端口为集群的入口
两台ha都启动
检查端口
Kubernetes默认CRI(容器运行时)为Docker,因此先安装Docker。kubelet控制容器,kubeadm控制加入平面。
镜像加速
由于版本更新频繁,这里指定版本号部署:
在master1 *** 作
按照提示配置环境变量,使用kubectl工具:
按照提示保存以下内容,一会要使用:
查看集群状态
从官方地址获取到flannel的yaml,在master1上执行
安装flannel网络
检查
从master1复制密钥及相关文件到master2
master3 *** 作同上
执行在master1上init后输出的join命令,需要带上参数 --control-plane 表示把master控制节点加入集群
检查状态
在node1、2、3上执行
向集群添加新节点,执行在kubeadm init输出的kubeadm join命令:
检查状态
在Kubernetes集群中创建一个pod,验证是否正常运行:
访问地址: >爱飞狗后台的数据爬虫以及数据服务器资源都部署在k8s上,使用rancher搭建。在不影响太多性能的情况下尽量选择最低配置的机器。对于内存不足的情况适当的使用交换文件代替(swap)。整个集群大致结构如下:
一个月的开销大概在60美元左右。分析上面的集群可以发现,rancher和etcd两个节点是浪费了钱,每个月有20美元的开销。DigitalOcean提供了k8s的托管集群,可以将这部分开销节省。但托管集群的droplet无法定制化,无法使用交换分区和bbr,造成性能瓶颈。另外托管的droplet的最低要求也是2G的内存,造成不必要的开支。
k8s有一个非常不好的地方就是最低的机器要求比较高,1G内存的worker node已经完全低于推荐配置,如果在上面部署worker node直接的内存占用就要300M左右,剩余的内存空间并不多,必须要使用交换分区。etcd节点之前也用过1G的内存,但经常会由于大量使用交换分区导致性能问题,最后集群崩溃,所以无论如何也需要使用2G的内存才行。
最近rancher公司推出了k3s,其主打就是简易的部署和极地的机器消耗。这点对于节约成本来讲非常的重要。我试了下k3s的server大概只占用200M左右的内存,agent只占用几十兆内存,非常的节约。k3s也可以完全使用kubectl来进行管理,配置文件和k8s保持一致,非常方便。
我将etcd节点和rancher主机删除,替换成了1G 1CPU的机器(5美元),节约了15美元,然后将aiflygo的服务器进行降配置到2G 2CPU (15美元),总共节约20美元。得益于更多的可用内存,目前爬虫的性能比以前更好,整体集群的性能也非常的高。
至于HA,既然都穷到了用k3s来减少开销,对于我这样的小型的集群和不是关键系统来讲都不是需要考虑的了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)