k8s可视化管理工具Rancher安装和使用
使用rke安装企业级k8s集群—待填坑
prometheus+grafana监控搭建教程—待填坑
kubectl命令大全—待填坑
k8s efk日志系统搭建教程—待填坑
k8s使用nfs持久化存储—待填坑
k8s全称kubernetes,如果你已经点进来看了,说明这个名字你应该不陌生,k8s是为容器服务而生的一个可移植容器的编排管理工具,越来越多的公司正在拥抱k8s,推动微服务架构等热门技术的普及和落地,未来一定是k8s的天下。但是很多人由于公司没有使用,搭建成本过高自己也无从下手学习,现在教你一种超低成本的k8s集群搭建方式,理论上只需要一台2c4g+一台1c2g,让你跟上技术的脚步。
以下是我的云服务器配置,理论上可去掉node2和node3两个worker节点,都是活动时几十元每年淘来的。
hostname | 内网ip | 外网ip | 配置 |
---|---|---|---|
master | 192.0.1.2 | 42.192.0.1 | 2c4g |
node1 | 192.0.2.2 | 42.192.0.2 | 1c2g |
node2 | 192.0.3.2 | 42.192.0.3 | 1c2g |
node3 | 192.0.4.2 | 42.192.0.4 | 1c2g |
腾讯云链接
阿里云链接
由于机器都是活动淘来的,账号都不同,很难打通内网(如果你多台机器内网可以互通可以跳过此步骤)。
每个节点在云服务器安全组开通其余节点外网ip的白名单。
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
本次安装使用轻量级k3s,k3s是rancher公司开发维护的一套轻量级k8s发行版。发行版可以理解为centos 之于Linux。内核机制还是和k8s一样,但是剔除了很多外部依赖,同时改变了部署方式和运行方式,目的是轻量化 K8s,并将其应用于 IoT 设备(比如树莓派),所以1c2g的乞丐机上也不在话下。 简单来说,k3s 就是轻量版的 k8s实现,消耗资源极少,非常适合入门使用。 k3s官方文档中有详细介绍,本文下面大部分也是基于此文档进行部署等操作。
根据多年经验,一次安装成功的概率很低,如果安装失败了,可执行以下命令完全卸载并重新安装。
#在msater节点执行
/usr/local/bin/k3s-uninstall.sh
#在node节点执行
/usr/local/bin/k3s-agent-uninstall.sh
k8s的存储etcd在k3s中使用默认使用嵌入的轻量级sqlite替代,但是可以外接etcd存储,由于我们资源紧张,可以直接使用我们已有的数据库,当然也可以不设置使用默认sqlite。
#mysql为例
export K3S_DATASTORE_ENDPOINT="mysql://{{user}}:{{pass}}@tcp({{ip}}:{{port}})/{{db}}"
登录到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
登录到其他机器
#上步保存的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 -
如遇到镜像链接失效的情况可访问官方文档查看最新链接 >>
#设置环境变量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的朋友可以参考此课程