k8s上部署java應用(activiti)實踐
阿新 • • 發佈:2018-12-20
前言
接到一個任務,需要在k8s上叢集部署一個java應用,感覺挺簡單的,用起來才發現自己是個嘴強王者。 任務描述:通過k8s上部署應用activiti,這個應用裡面包含了三個jar包。地址如下:
實驗步驟
1 通過docke file 定製active-tomcat映象
1.1 建立一個用來準備製作映象的目錄
mkdir active-cloud
1.2 上傳容器所需要的war包到active-cloud目錄
rz -be
1.3 定製docker映象
vim active-cloud/Dockerfile
#Description: active-cloud image
FROM tomcat:8
MAINTAINER " [email protected]"
COPY activiti* /usr/local/tomcat/webapps/
sudo docker build -t app:active /home/hduhhz/active-cloud/
2 在k8s上部署該映象
2.1 編寫deploy-active部署檔案
vim deploy-active apiVersion: v1 kind: Service metadata: name: active-svc namespace: active labels: app: active resources: svc spec: type: NodePort selector: app: active resources: pod ports: - port: 8080 --- apiVersion: extensions/v1beta1 kind: Deployment metadata: name: active-dm namespace: active labels: app: active resources: dm spec: replicas: 1 selector: matchLabels: app: active resources: pod template: metadata: name: active-pod namespace: active labels: app: active resources: pod spec: containers: - name: active-container image: hduhhz/active:v1 ports: - name: tomcat-port containerPort: 8080
2.2 應用該檔案
kubectl apply -f deploy-active
存在的問題
- 雖然應用部署到k8s上了,但是多個tomcat副本一直存在會話共享的問題,這個問題尚待解決。(網上搜到的解決方案有兩種,其一是通過redis解決,其二是通過nginx來解決)
- 使用nodePort暴露出去埠,不應該是最終的解決方案,最終的解決方案應該還是需要靠k8s上原生的ingress來做。