一、概述
在前面幾篇文章中,已經講到了前後端分離架構和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/
效果如下:
登錄成功後,效果如下: