如何在k8s叢集中部署Java專案
1.容器交付流程
- 開發程式碼階段
- 編寫程式碼
- 編寫Dockerfile【打映象做準備】
- 持續交付/整合
- 程式碼編譯打包
- 製作映象
- 上傳映象倉庫
- 應用部署
- 環境準備
- Pod
- Service
- Ingress
- 運維
- 監控
- 故障排查
- 應用升級
2.k8s部署Java專案流程
- 製作映象【Dockerfile】
- 上傳到映象倉庫【Dockerhub、阿里雲、網易】
- 控制器部署映象【Deployment】
- 對外暴露應用【Service、Ingress】
- 運維【監控、升級】
3.k8s部署Java專案
準備Java專案
第一步,準備java專案,把java進行打包【jar包或者war包】
3.1 依賴環境
在打包java專案的時候,我們首先需要兩個環境
- java環境【JDK】
- maven環境
然後把java專案打包成jar包
mvn clean install
3.2 編寫Dockerfile檔案
Dockerfile 內容如下所示
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD ./target/demojenkins.jar demojenkins.jar
ENTRYPOINT ["java","-jar","/demojenkins.jar", "&"]
3.3 製作映象
在我們建立好Dockerfile檔案後,我們就可以製作映象了
我們首先將我們的專案,放到我們的伺服器上
然後執行下面命令打包映象
docker build -t java-demo-01:latest .
等待一段後,即可製作完成我們的映象
最後通過下面命令,即可檢視我們的映象了
docker images;
3.4 啟動映象
在我們製作完成映象後,我們就可以啟動我們的映象了
docker run -d -p 8111:8111 java-demo-01:latest -t
啟動完成後,我們通過瀏覽器進行訪問,即可看到我們的java程式
http://192.168.177.130:8111/user
3.5推送映象
下面我們需要將我們製作好的映象,上傳到映象伺服器中【阿里雲、DockerHub】
首先我們需要到 阿里雲 容器映象服務,然後開始建立映象倉庫
然後選擇本地倉庫
我們點選我們剛剛建立的映象倉庫,就能看到以下的資訊
3.4.1 登入映象伺服器
使用命令登入
docker login --username=XXXXXXX@163.com registry.cn-shenzhen.aliyuncs.com
然後輸入剛剛我們開放時候的註冊的密碼
3.4.2 映象新增版本號
下面為我們的映象新增版本號
# 例項
docker tag [ImageId] registry.cn-shenzhen.aliyuncs.com/mogublog/java-project-01:[映象版本號]
# 舉例
docker tag 33f11349c27d registry.cn-shenzhen.aliyuncs.com/mogublog/java-project-01:1.0.0
操作完成後
3.4.3 推送映象
在我們新增版本號資訊後,我們就可以推送我們的映象到阿里雲了
docker push registry.cn-shenzhen.aliyuncs.com/mogublog/java-project-01:1.0.0
操作完成後,我們在我們的阿里雲映象服務,就能看到推送上來的映象了
3.5 控制器部署映象
在我們推送映象到伺服器後,就可以通過控制器部署映象了
首先我們需要根據剛剛的映象,匯出yaml
# 匯出yaml
kubectl create deployment javademo1 --image=registry.cn-
shenzhen.aliyuncs.com/mogublog/java-project-01:1.0.0 --dry-run -o yaml > javademo1.yaml
匯出後的 javademo1.yaml 如下所示
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: javademo1
name: javademo1
spec:
replicas: 1
selector:
matchLabels:
app: javademo1
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: javademo1
spec:
containers:
- image: registry.cn-shenzhen.aliyuncs.com/mogublog/java-project-01:1.0.0
name: java-project-01
resources: {}
status: {}
然後通過下面命令,通過yaml建立我們的deployment
# 建立
kubectl apply -f javademo1.yaml
# 檢視 pods
或者我們可以進行擴容,多建立幾個副本
kubectl scale deployment javademo1 --replicas=3
然後我們還需要對外暴露埠【通過service 或者 Ingress】
# 對外暴露埠
kubectl expose deployment javademo1 --port=8111 --target-port=8111 --type=NodePort
# 檢視對外埠號
kubectl get svc
然後通過下面的地址訪問
# 對內訪問
curl http://10.106.103.242:8111/user
# 對外訪問
http://192.168.177.130:32190/user
運維
....