93人参与 • 2026-09-23 • websocket
涉及到在k8中部署tomcat的步骤和出现的一些问题
k8s集群环境三台虚拟机;
通过kubectl get node -o wide查看集群信息

-o wide表示显示详细信息
其他前置准备工作在k8s初始化阶段已全部准备好
1.在master节点上创建tomcat.yaml文件
![]()
2.tomcat.yaml文件内容如下:
apiversion: apps/v1 # 版本
kind: deployment # 配置资源类型
metadata: # 元数据
name: tomcat-deployment # 配置资源名称
namespace: dev # 配置资源所处的命名空间
spec: # 详情描述
replicas: 3 # 副本数量
selector: # 选择器, 通过它指定该控制器管理哪些pod
matchlabels: # labels 匹配规则
app: tomcat-pod
template: # 模板, 当副本数量不足时, 根据下面模板创建 pod 副本
metadata:
labels: # 自定义标签
app: tomcat-pod
spec:
containers: # 容器列表
- name: tomcat # 容器名称
image: tomcat # 容器中镜像的名称, 后面可以指定版本号,不指定默认latest,例如nginx:1.30.0
ports: # 需要暴露的端口库列表
- containerport: 8080 # 容器需要监听的端口号
---
apiversion: v1
kind: service
metadata:
name: tomcat-service
namespace: dev
spec:
selector: # 标签选择器, 用于确定当前service代理哪些pod
app: tomcat-pod
type: nodeport # service类型, 指定service的访问方式
ports: # 端口信息
- port: 8080 # service端口
targetport: 8080 # pod端口
#nodeport: 30081 # 主机端口, 不写默认分配, 范围是30000-32767
3.然后用命令创建相应的pod,service,deployment
kubectl create -f tomcat.yaml
![]()
如果创建报错,而deployment或者service已经创建成功可以用下面命令:
# 删除资源 kubectl delete -f tomcat.yaml # 更新资源 kubectl apply -f tomcat.yaml
创建成功,会显示两条信息:

4.查看相关资源是否成功运行
kubectl get pod,svc,deploy -n dev -o wide
svc 是service的缩写deploy是deployment的缩写-n dev 表示命名空间,不加会报错
通过返回的信息可以看到pod,deployment,service都已经全部成功运行起来
5.在浏览器输入http://<任意节点的ip地址>:service暴露的端口号, 就可以访问到tomcat标志性页面了
![]()
所有资源成功运行但是在浏览器页面输入网址,返回的是404页面

http://<ip>:<port>/这是通过阿里云的centos源yum安装的tomcat:

2.进入容器查看:
kubectl exec -it <tomcat-pod-name> -n dev -- /bin/bash
-i 保持标准输入打开,可以打字-t 分配一个伪终端,让画面更像正常终端-- 分隔符,告诉 kubectl 后面不再是 kubectl 自己的参数,而是“要执行的命令”。/bin/bahs 在容器里启动的可执行文件,这里启动 bash,给你一个交互式 shell。如果镜像没 bash,可换成 /bin/sh。注意:容器中tomcat访问默认根目录在/usr/local/tomcat

切换到webapps目录下查看,果然没有index.jsp
![]()
知道原因就好解决了:
直接创建一个目录在里面添加一个index.jsp
mkdir -p /usr/local/tomcat/webapps/root echo '<h1>tomcat is working</h1>' > /usr/local/tomcat/webapps/root/index.html
再去访问就没问题了

因为容器创建的是最小化的,只有一些基础命令
![]()
可以用apt-get解决
# 先更新相关资源 apt-get update # 在下载想要的资源包 apt-get install -y <包名> apt-get install -y vim
一劳永逸的解决方法就是在在开始编写yaml文件时加入command让其就创建好index.jsp或者是用 poststart 钩子(推荐)
apiversion: apps/v1
kind: deployment
metadata:
name: tomcat-deployment
namespace: dev
spec:
replicas: 1
selector:
matchlabels:
app: tomcat
template:
metadata:
labels:
app: tomcat
spec:
containers:
- name: tomcat
image: tomcat
ports:
- containerport: 8080
command: ["/bin/bash", "-c", "mkdir -p /usr/local/tomcat/webapps/root && echo '<h1>tomcat is working!</h1>' > /usr/local/tomcat/webapps/root/index.html && exec catalina.sh run"]
apiversion: apps/v1
kind: deployment
metadata:
name: tomcat-deployment
namespace: dev
spec:
replicas: 1
selector:
matchlabels:
app: tomcat
template:
metadata:
labels:
app: tomcat
spec:
containers:
- name: tomcat
image: tomcat
ports:
- containerport: 8080
lifecycle:
poststart:
exec:
command: ["/bin/bash", "-c", "mkdir -p /usr/local/tomcat/webapps/root && echo '<h1>tomcat is working!</h1>' > /usr/local/tomcat/webapps/root/index.html"]
到此这篇关于k8s部署tomcat的步骤和出现的一些问题的文章就介绍到这了,更多相关k8s部署tomcat内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论