前后端分离架构+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/
效果如下:
登录成功后,效果如下: