k8s部署tomcat服务
一、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文件。
更多推荐

所有评论(0)