当前位置: 代码网 > 服务器>网络>websocket > K8s部署tomcat的步骤和出现的一些问题

K8s部署tomcat的步骤和出现的一些问题

2026年09月23日 websocket 我要评论
前言涉及到在k8中部署tomcat的步骤和出现的一些问题第一步 准备工作k8s集群环境三台虚拟机;通过kubectl get node -o wide查看集群信息-o wide表示显示详细信息其他前置

前言

涉及到在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页面

解决方法

  1. 确认访问路径是否正确
    tomcat 默认根目录是:
    http://<ip>:<port>/
    会访问 webapps/root/index.jsp

这是通过阿里云的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 钩子(推荐)

  1. command方法
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"]
  1. 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
        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内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com