參考文檔:https://github.com/lizhenliang php
1、部署的項目狀況
一、業務架構及服務(dubbo,spring cloud)
二、第三方服務,例如mysql,redis,zookeeper,eruka,mq
三、服務之間怎麼通訊?
四、資源消耗:硬件資源,帶寬。html
2、部署項目時用到的K8S資源
一、使用namespace進行不一樣項目隔離,或者隔離不一樣環境(test,prod,dev)
二、無狀態應用(deployment)
三、有狀態應用(statefulset,pv,pvc)
四、暴露外部訪問(Service,ingress)
五、secret,configmapjava
3、項目基礎鏡像node
4、編排部署mysql
鏡像爲交付物。nginx
一、項目構建(java)。CI/CD環境這個階段自動完成(代碼拉取->代碼編譯構建->鏡像打包->推送到鏡像倉庫)。
二、編寫yaml文件,使用這個鏡像
1)deployment部署web
2)statefulset部署mysql
3)鏡像認證拉取secret
4)service & ingressgit
5、工做流程github
kubectl -> yaml -> 鏡像倉庫拉取鏡像 -> Service(集羣內部訪問)/Ingress 暴露給外部用戶web
如下是php-demo
一、登陸到node任意一個節點上(node:192.168.1.23),下載php實驗代碼,而後再將她推到鏡像倉庫(harbor)redis
git clone https://github.com/lizhenliang/php-demo
二、mysql 獨立出來,不在pod中,在192.168.1.25上安裝mariadb
1)yum -y install mariadb mariadb-server && systemctl start mariadb
2)mysql_secure_installation 設置密碼 123456
3)create database wordpress; #新建數據庫
4)grant all on . to 'root'@'%' identified by '123456'; #開放root訪問權限
三、更改配置php-demo/wp-config.php 中的數據庫鏈接信息
四、如下的意思就是一、獲取 lizhenliang/nginx-php:latest 這個鏡像。二、做者信息:jacker 三、把當前的代碼添加到鏡像的/usr/local/nginx/html這個裏面
[root@docker php-demo]# vi Dockerfile
FROM lizhenliang/nginx-php:latest
MAINTAINER jacker
ADD . /usr/local/nginx/html
五、開始構建鏡像(.:默認就是dockerfile文件)
先要登陸到harbor上,纔有權限
docker login 192.168.1.25
[root@docker php-demo]# docker build -t 192.168.1.25/project/php-demo .
六、開始推到harbor上
docker push 192.168.1.25/project/php-demo
七、登陸harbor 192.168.1.25查看
八、如今到主節點上建立pod
1)在master上要有權限拉取鏡像,方法以下:https://blog.csdn.net/xukangkang1hao/article/details/80839834
獲取以下:
2)建立命名空間
kubectl apply -f namespace.yaml
3)建立拉取鏡像權限的祕鑰
kubectl apply -f registry-pull-secret.yaml
4)建立service來暴露端口服務
kubectl apply -f service.yaml
5)建立ingress來讓域名訪問,ingress關聯到的是servicename
kubectl apply -f ingress.yaml
6 ) 建立deployment
kubectl apply -f deployment.yaml
設置好標籤,爲了能夠回滾
驗證:
域名綁定到任意一個節點上:
訪問:http://php.ctnrs.com/ 驗證