前后端分离架构+k8s+ingress

发布时间:2020-03-24 10:17:08编辑:admin阅读(2563)

    一、概述

    在前面几篇文章中,已经讲到了前后端分离架构和ingress,链接如下:

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

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

    接下来使用k8s进行发布应用

     

    二、演示3.0

    环境说明

    k8s集群

    系统dockerip主机名配置
    centos 7.619.03.5192.168.31.150k8s-master2核4G
    centos 7.619.03.5192.168.31.178k8s-node012核4G
    centos 7.619.03.5192.168.31.164k8s-node022核4G

     

     

     

     

     

     

    harbor

    系统dockerdocker-composeharborip主机名配置
    centos 7.619.03.51.24.11.8.0192.168.31.37harbor2核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/

    效果如下:

     1.png

     

     

    登录成功后,效果如下:

    1.png

     


关键字

上一篇: Ingress实战

下一篇: python 模拟Spring Cloud