python 模拟Spring Cloud+k8s发布

发布时间:2020-03-25 10:17:06编辑:admin阅读(2972)

    一、概述

    在上一篇文章,链接如下:

    https://www.cnblogs.com/xiao987334176/p/12260474.html

    在一台服务器上面,使用6个django项目,演示了一下Spring Cloud

    下面将详细介绍,如何使用k8s发布。

     

    二、项目演示2.0

    环境说明

    1.png

     

     

    MySQL

    继续使用1.0版本中的mysql

     

    url转发

    1.png

     

     

    说明

    以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

    1.png

     

     

    登录信息

    用户名:xiao
    密码:1234

     

    登录成功之后,效果如下:

    1.png

     

     

     点击auth

     1.png

     

     

    查看api-docs

    http://auth.baidu.com/api-docs/

    如果谷歌浏览器安装了 JSON Formatter插件,效果就是下面的样子:

    1.png

     

     如果没有安装插件,就是一行展示

    1.png

    访问eureka注册中心

    http://eureka.baidu.com/

    效果如下:

    1.png

     

      确保状态都是UP,前端页面会每隔1秒,检测一次后端服务。不正常时,显示为DOWN


关键字