k8s系列入门级教程—超低成本的k8s集群搭建教程

k8s可视化管理工具Rancher安装和使用
使用rke安装企业级k8s集群—待填坑
prometheus+grafana监控搭建教程—待填坑
kubectl命令大全—待填坑
k8s efk日志系统搭建教程—待填坑
k8s使用nfs持久化存储—待填坑



前言

k8s全称kubernetes,如果你已经点进来看了,说明这个名字你应该不陌生,k8s是为容器服务而生的一个可移植容器的编排管理工具,越来越多的公司正在拥抱k8s,推动微服务架构等热门技术的普及和落地,未来一定是k8s的天下。但是很多人由于公司没有使用,搭建成本过高自己也无从下手学习,现在教你一种超低成本的k8s集群搭建方式,理论上只需要一台2c4g+一台1c2g,让你跟上技术的脚步。


一、环境准备

1.机器配置

以下是我的云服务器配置,理论上可去掉node2和node3两个worker节点,都是活动时几十元每年淘来的。

hostname内网ip外网ip配置
master192.0.1.242.192.0.12c4g
node1192.0.2.242.192.0.21c2g
node2192.0.3.242.192.0.31c2g
node3192.0.4.242.192.0.41c2g

腾讯云链接
阿里云链接

2.内网互通

由于机器都是活动淘来的,账号都不同,很难打通内网(如果你多台机器内网可以互通可以跳过此步骤)。

2.1.多台机器开通白名单

每个节点在云服务器安全组开通其余节点外网ip的白名单。

2.2.iptable设置

iptable设置转发,互相将不互通的内网ip流量转发到对应外网ip,此方式节点的通信会受限于你的公网带宽所以只能学习使用,若要求较高可使用云服务商的其他互通方案,不过是要收费的。

#开启iptable forward
echo "1" > /proc/sys/net/ipv4/ip_forward

#设置转发规则(master到node1为例),其余同理
iptables -t nat -I PREROUTING 1 -d 192.0.2.2  -j DNAT --to-destination 42.192.0.2
iptables -t nat -I OUTPUT 1 -d 192.0.2.2  -j DNAT --to-destination 42.192.0.2

二、安装步骤

1.发行版

本次安装使用轻量级k3s,k3s是rancher公司开发维护的一套轻量级k8s发行版。发行版可以理解为centos 之于Linux。内核机制还是和k8s一样,但是剔除了很多外部依赖,同时改变了部署方式和运行方式,目的是轻量化 K8s,并将其应用于 IoT 设备(比如树莓派),所以1c2g的乞丐机上也不在话下。 简单来说,k3s 就是轻量版的 k8s实现,消耗资源极少,非常适合入门使用。 k3s官方文档中有详细介绍,本文下面大部分也是基于此文档进行部署等操作。

2.安装k3s

2.1.如何卸载

根据多年经验,一次安装成功的概率很低,如果安装失败了,可执行以下命令完全卸载并重新安装。

#在msater节点执行
/usr/local/bin/k3s-uninstall.sh

#在node节点执行
/usr/local/bin/k3s-agent-uninstall.sh

2.2.设置数据库(可选)

k8s的存储etcd在k3s中使用默认使用嵌入的轻量级sqlite替代,但是可以外接etcd存储,由于我们资源紧张,可以直接使用我们已有的数据库,当然也可以不设置使用默认sqlite。

#mysql为例
export K3S_DATASTORE_ENDPOINT="mysql://{{user}}:{{pass}}@tcp({{ip}}:{{port}})/{{db}}" 

2.3.master节点安装

登录到master那台机器

#官方一键安装脚本
curl -sfL https://rancher-mirror.oss-cn-beijing.aliyuncs.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn   INSTALL_K3S_EXEC="--advertise-address {{master公网ip}} --node-taint k3s-controlplane=true:NoExecute"  sh -


#在master获取token(先保存到记事本,后面会用)
cat /var/lib/rancher/k3s/server/node-token

2.4.其他worker节点安装

登录到其他机器

#上步保存的token设置为本次安装的变量
export K3S_TOKEN={{上步token}}
#masterip就是你master节点的公网IP,当然因为设置了内网互通,内网ip也一样
export K3S_URL=https://{{masterip}}:6443
#官方一键安装脚本(国内镜像加速)
curl -sfL https://rancher-mirror.oss-cn-beijing.aliyuncs.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -

如遇到镜像链接失效的情况可访问官方文档查看最新链接 >>

3.访问集群

#设置环境变量KUBECONFIG的路径,默认路径为~/.kube/config
export KUBECONFIG=/etc/rancher/k3s/k3s.yaml
#如果不想修改默认值也可copy配置文件至默认路径
cp /etc/rancher/k3s/k3s.yaml ~/.kube/config

#执行命令查看节点
k3s kubectl get nodes

#返回以下信息表示安装成功
NAME             STATUS   ROLES                  AGE    VERSION
node2            Ready    <none>                 248d   v1.21.1+k3s1
master           Ready    control-plane,master   248d   v1.21.1+k3s1
node1            Ready    <none>                 248d   v1.21.1+k3s1
node3            Ready    <none>                 248d   v1.21.4+k3s1

三、结语

作为一名java程序员,近几年越来越意识到k8s的重要性,通过不断学习,本人也有幸在一次项目升级中为公司搭建了k8s集群,并迁移百万级用户的服务,现在想将我了解的东西分享出来,毕竟分享出来的东西才有价值。
因之前没有写博客的习惯,这是我尝试发布的第一篇文章,如果有什么意见或建议欢迎反馈。
如果发现我文中有什么问题,欢迎批评指正,我会及时更改。
如果各位在搭建的过程中遇到问题也可以评论区留言,我会尽量一一解答。
后续我会尽可能分享更多所学知识,下期再见。

对于短期内想要更系统深入的学习k8s的朋友可以参考此课程
chatGPT

Logo

开源、云原生的融合云平台

更多推荐