1. 程式人生 > >k8s上部署java應用(activiti)實踐

k8s上部署java應用(activiti)實踐

前言

接到一個任務,需要在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來做。