python 模拟Spring Cloud+k8s发布
一、概述
在上一篇文章,链接如下:
https://www.cnblogs.com/xiao987334176/p/12260474.html
在一台服务器上面,使用6个django项目,演示了一下Spring Cloud
下面将详细介绍,如何使用k8s发布。
二、项目演示2.0
环境说明
MySQL
继续使用1.0版本中的mysql
url转发
说明
以svc-gateway.default.svc.cluster.local为例:
svc-gateway 表示service名
default 表示命名空间
svc.cluster.local 表示service的cluster ip
项目下载地址:
https://github.com/py3study/django-spring-cloud
封装镜像
django基础镜像
cd django-spring-cloud/2.0/django_base docker build -t django:2.2.4 .
eureka
cd django-spring-cloud/2.0/eureka docker build -t eureka:v1 .
config
cd django-spring-cloud/2.0/config docker build -t config:v1 .
auth
cd django-spring-cloud/2.0/auth docker build -t auth:v1 .
user
cd django-spring-cloud/2.0/user docker build -t user:v1 .
gateway
cd django-spring-cloud/2.0/gateway docker build -t gateway:v1 .
前端
cd django-spring-cloud/2.0/demo_login docker build -t demo_login:v1 .
推送镜像
docker login 192.168.31.37 -u admin -p Harbor12345 docker tag eureka:v1 192.168.31.37/library/eureka:v1 docker push 192.168.31.37/library/eureka:v1 docker tag config:v1 192.168.31.37/library/config:v1 docker push 192.168.31.37/library/config:v1 docker tag auth:v1 192.168.31.37/library/auth:v1 docker push 192.168.31.37/library/auth:v1 docker tag user:v1 192.168.31.37/library/user:v1 docker push 192.168.31.37/library/user:v1 docker tag gateway:v1 192.168.31.37/library/gateway:v1 docker push 192.168.31.37/library/gateway: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发布应用
安装ingress
kubectl apply -f https://kuboard.cn/install-script/v1.17.x/nginx-ingress.yaml
eureka
cd django-spring-cloud/2.0/eureka/ kubectl apply -f eureka.yaml kubectl apply -f eureka-ingress.yaml
注意:请修改yaml文件中的仓库地址,改为实际环境中的harbor
config
cd django-spring-cloud/2.0/config/ kubectl apply -f config.yaml
注意:请修改yaml文件中的仓库地址,改为实际环境中的harbor
auth
cd django-spring-cloud/2.0/auth/ kubectl apply -f auth.yaml kubectl apply -f auth-ingress.yaml
注意:请修改yaml文件中的仓库地址,改为实际环境中的harbor
user
cd django-spring-cloud/2.0/user/ kubectl apply -f user.yaml kubectl apply -f user-ingress.yaml
注意:请修改yaml文件中的仓库地址,改为实际环境中的harbor
gateway
cd django-spring-cloud/2.0/gateway/ kubectl apply -f gateway.yaml kubectl apply -f gateway-ingress.yaml
注意:请修改yaml文件中的仓库地址,改为实际环境中的harbor
前端
cd django-spring-cloud/2.0/demo_login kubectl apply -f login.yaml kubectl apply -f login-ingress.yaml
注意:请修改yaml文件中的仓库地址,改为实际环境中的harbor
查看pods
# kubectl get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES svc-auth-69b784b446-qvz27 1/1 Running 0 48m 10.244.85.205 k8s-node01 <none> <none> svc-config-9cbd44858-m5z7p 1/1 Running 0 53m 10.244.85.204 k8s-node01 <none> <none> svc-eureka-55d485749-mpqhw 1/1 Running 0 41m 10.244.85.207 k8s-node01 <none> <none> svc-gateway-645755cb8d-nkfp7 1/1 Running 0 68m 10.244.85.203 k8s-node01 <none> <none> svc-login-66c8d579b5-xg6l6 1/1 Running 0 23m 10.244.85.210 k8s-node01 <none> <none> svc-user-5c8799c845-jxlr4 1/1 Running 0 25m 10.244.85.209 k8s-node01 <none> <none>
确保处于Running 状态
查看ingress
# kubectl get ingresses.extensions NAME HOSTS ADDRESS PORTS AGE svc-auth auth.baidu.com 80 31m svc-eureka eureka.baidu.com 80 22m svc-gateway api.baidu.com 80 100m svc-login h5.baidu.com 80 96m svc-user user.baidu.com 80 28m
访问页面
在1.0中,使用了nginx转发。在2.0就无需nginx转发了,直接使用ingress转发。
域名解析
将域名解析到任意node节点的ip即可。
192.168.31.178 h5.baidu.com 192.168.31.178 api.baidu.com 192.168.31.178 auth.baidu.com 192.168.31.178 user.baidu.com 192.168.31.178 eureka.baidu.com
http://h5.baidu.com
登录信息
用户名:xiao 密码:1234
登录成功之后,效果如下:
点击auth
查看api-docs
http://auth.baidu.com/api-docs/
如果谷歌浏览器安装了 JSON Formatter插件,效果就是下面的样子:
如果没有安装插件,就是一行展示
访问eureka注册中心
http://eureka.baidu.com/
效果如下:
确保状态都是UP,前端页面会每隔1秒,检测一次后端服务。不正常时,显示为DOWN