前言

接到一个任务,需要在k8s上集群部署一个java应用,感觉挺简单的,用起来才发现自己是个嘴强王者。
任务描述:通过k8s上部署应用activiti,这个应用里面包含了三个jar包。地址如下:

链接:https://pan.baidu.com/s/1Plb7B9ASD2B4-S_rL8UPOw
提取码:gy0d

实验步骤

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 "hduhhz@163.com"
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来做。
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐