一、tomcat介绍

        Tomcat 是 Apache 开源的轻量级 Java Servlet 容器,核心定位是运行 Java Web 应用(如基于 Spring Boot、SSM 框架的项目),兼容 Java EE 标准,兼具易用性和扩展性。

核心特性

  • 核心功能:支持 Servlet、JSP、WebSocket 等 Java Web 技术规范,是 Java Web 应用的运行载体。
  • 轻量高效:安装部署简单,资源占用低,适合开发环境测试和中小型生产环境使用。
  • 可配置可扩展:支持端口修改、虚拟主机、SSL 配置等,还能通过插件扩展功能(如集群部署)。

二、前置创建

        在每个节点创建/home/data/tomcat/webapps/ROOT目录并在ROOT下存放index.html文件,否则会因为ROOT目录下无应用导致启动失败,存活探针和就绪探针会自动探测这个目录,ROOT目录中没有内容会导致容器一直处于重复启动的状态。

三、创建pv和pvc声明

        通过pv和pvc可以将服务器中的目录或文件挂载到容器内部,便于容器的配置以及文件的存储,防止出现数据丢失、服务崩溃等情况发生        

tomcat-pv.yaml

apiVersion: v1
kind: PersistentVolume
metadata:
  name: tomcat-pv
  namespace: zhongchuan141
spec:
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  hostPath:
    path: /home/data/tomcat/webapps
    type: DirectoryOrCreate
  storageClassName: tomcat-storage

tomcat-pvc.yaml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: tomcat-pvc
  namespace: zhongchuan141
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi
  storageClassName: tomcat-storage

storageClassName持久卷和声明的类名,不写类名时,k8s集群会根据声明所需资源自动匹配一个合适的持久卷,但不一定是自己想要的,因此需要写storageClassName类名,集群通过类名将持久卷和对应的声明进行匹配。

四、创建deployment.yaml和service.yaml

         deployment.yaml文件,用于创建tomcat的控制器和对应的pod容器,在文件中指明了控制器deployment的资源大小、标签、创建的容器镜像、启动命令等,后续对容器水平扩容时可对deployment.yaml文件进行修改。

         service.yaml文件,用于负责负载均衡和服务发现,暴露tomcat的端口号和访问模式,其中,端口号可分pod容器对service暴露的端口,service对k8s集群暴露的端口,以及访问模式。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: zhongchuan141-tomcat
  namespace: zhongchuan141
  labels:
    app: zhongchuan141-tomcat
spec:
  replicas: 1
  selector:
    matchLabels:
      app: zhongchuan141-tomcat
  template:
    metadata:
      labels:
        app: zhongchuan141-tomcat
    spec:
      containers:
      - name: zhongchuan141-tomcat
        image: dockerhub.kubekey.local/tiangang/tomcat:8.5
        ports:
        - containerPort: 8080
        resources:
          requests:
            memory: "256Mi"
            cpu: "500m"
          limits:
            memory: "512Mi"
            cpu: "500m"
        livenessProbe:
          httpGet:
            port: 8080
          initialDelaySeconds: 30
          periodSeconds: 10
        readinessProbe:
          httpGet:
            port: 8080
          initialDelaySeconds: 5
          periodSeconds: 5
        volumeMounts:
        - name: tomcat-webapps
          mountPath: /usr/local/tomcat/webapps
      volumes:
      - name: tomcat-webapps
        persistentVolumeClaim:
          claimName: tomcat-pvc

---
apiVersion: v1
kind: Service
metadata:
  name: zhongchuan141-tomcat
  namespace: zhongchuan141
spec:
  selector:
    app: zhongchuan141-tomcat
  ports:
  - port: 8080
    targetPort: 8080
    nodePort: 31080
  type: NodePort

应用yaml文件后,集群会自动创建对应的控制器、pod、service,之后只需要等待容器启动即可

五、部署验证

        访问master节点或waork节点IP+tomcat端口号如31080,会自动访问在/home/data/tomcat/webapps/ROOT目录下的HTML文件。

更多推荐