前后端分离架构+k8s+ingress
一、概述
在前面几篇文章中,已经讲到了前后端分离架构和ingress,链接如下:
https://www.cnblogs.com/xiao987334176/p/12195722.html
https://www.cnblogs.com/xiao987334176/p/12195797.html
接下来使用k8s进行发布应用
二、演示3.0
环境说明
k8s集群
系统 | docker | ip | 主机名 | 配置 |
---|---|---|---|---|
centos 7.6 | 19.03.5 | 192.168.31.150 | k8s-master | 2核4G |
centos 7.6 | 19.03.5 | 192.168.31.178 | k8s-node01 | 2核4G |
centos 7.6 | 19.03.5 | 192.168.31.164 | k8s-node02 | 2核4G |
harbor
系统 | docker | docker-compose | harbor | ip | 主机名 | 配置 |
---|---|---|---|---|---|---|
centos 7.6 | 19.03.5 | 1.24.1 | 1.8.0 | 192.168.31.37 | harbor | 2核4G |
关于k8s搭建,请参考链接:
https://www.cnblogs.com/xiao987334176/p/11899321.html
关于harbor搭建,请参考链接:
https://www.cnblogs.com/xiao987334176/p/11326467.html
推送镜像到harbor
在前面2.0的环境中,已经打包好了login和api镜像,直接推送到harbor仓库即可。
修改docker配置文件,增加harbor地址
vi /etc/docker/daemon.json
内容如下:
{ "registry-mirrors": ["http://hub-mirror.c.163.com"], "insecure-registries": ["192.168.31.37"] }
重启docker
systemctl restart docker
docker登录harbor,直接使用管理员账号登录
docker login 192.168.31.37 -u admin -p Harbor12345
打tag并推送
docker tag demo_api:v1 192.168.31.37/library/demo_api:v1 docker push 192.168.31.37/library/demo_api:v1 docker tag demo_login:v1 192.168.31.37/library/demo_login:v1 docker push 192.168.31.37/library/demo_login:v1
k8s集群登录harbor
登录到k8s集群中的master节点以及node节点。
修改docker配置文件,增加harbor地址
vi /etc/docker/daemon.json
内容如下:
{
"registry-mirrors": ["http://hub-mirror.c.163.com"],
"insecure-registries": ["192.168.31.37"]
}
重启docker
systemctl restart docker
k8s发布应用
yum install -y git git clone https://github.com/py3study/django-login-example.git
前端
login.yaml是使用kuboard生成的,login-ingress.yaml是否手写的。因为kuboard生成的ingress有bug,外部无法访问。
cd django-login-example/3.0 kubectl apply -f login.yaml kubectl apply -f login-ingress.yaml
注意:请修改yaml文件中的仓库地址,改为实际环境中的harbor
api
cd django-login-example/3.0 kubectl apply -f api.yaml kubectl apply -f api-ingress.yaml
注意:请修改yaml文件中的仓库地址,改为实际环境中的harbor
查看pods
# kubectl get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES svc-api-6559bb7cb8-58fvj 1/1 Running 0 2m24s 10.244.58.197 k8s-node02 <none> <none> svc-login-66c8d579b5-94x6t 1/1 Running 0 2m30s 10.244.85.198 k8s-node01 <none> <none>
确保处于`Running`状态,如果出现imagesoff,请确保node能下载镜像,镜像地址是否正确,是否登录了harbor
查看ingress
# kubectl get ingresses.extensions NAME HOSTS ADDRESS PORTS AGE svc-api api.baidu.com 80 4m37s svc-login h5.baidu.com 80 4m43s
访问页面
在1.0和2.0中,都使用了nginx转发。在3.0就无需nginx转发了,直接使用ingress转发。
将域名解析到任意node节点的ip即可。如果没有dns,windows 10添加2条hosts记录
192.168.31.178 h5.baidu.com 192.168.31.178 api.baidu.com
访问登录页面
http://h5.baidu.com/
效果如下:
登录成功后,效果如下:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
2019-01-15 Python 检测系统时间,k8s版本,redis集群,etcd,mysql,ceph,kafka