K8s部署一个tomcat容器

本文介绍如何在Kubernetes(K8s)环境中部署Tomcat应用容器。提供了两种部署方法:一是直接使用Kubectl命令进行部署;二是通过YAML配置文件进行部署。文中详细展示了创建命名空间、部署应用、暴露服务等步骤。
部署运行你感兴趣的模型镜像

K8s中简单的部署一个tomcat容器过程:

1 部署方法1:使用命令创建

创建一个命名空间

[root@centos64-master ~]# kubectl create ns test
namespace/test created

创建一个deployment,镜像使用docker hub上最新的版本的tomcat

[root@centos64-master ~]# kubectl create deployment tomcat1 --image=tomcat -n test
deployment.apps/tomcat1 created

创建一个service

[root@centos64-master ~]# kubectl expose deployment tomcat1 --port=80 --target-port=8080 --type=NodePort --name=tocmat1 --namespace=test
service/tocmat1 exposed

查询是否创建成功

[root@centos64-master ~]# kubectl get pod,svc,node -n test -o wide
NAME                           READY   STATUS    RESTARTS   AGE   IP              NODE             NOMINATED NODE   READINESS GATES
pod/tomcat1-84d6474cb7-zcrjf   1/1     Running   0          20m   10.244.203.24   centos64-node2   <none>           <none>

NAME                    TYPE       CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE   SELECTOR
service/tocmatservice   NodePort   10.108.234.123   <none>        8080:32256/TCP   54m   app=tomcat1

NAME                   STATUS   ROLES                  AGE   VERSION   INTERNAL-IP       EXTERNAL-IP   OS-IMAGE                KERNEL-VERSION           CONTAINER-RUNTIME
node/centos64-master   Ready    control-plane,master   51d   v1.20.1   192.168.188.243   <none>        CentOS Linux 7 (Core)   3.10.0-1160.el7.x86_64   docker://20.10.7
node/centos64-node1    Ready    <none>                 51d   v1.20.1   192.168.188.244   <none>        CentOS Linux 7 (Core)   3.10.0-1160.el7.x86_64   docker://20.10.7
node/centos64-node2    Ready    <none>                 51d   v1.20.1   192.168.188.245   <none>        CentOS Linux 7 (Core)   3.10.0-1160.el7.x86_64   docker://20.10.7
[root@centos64-master ~]# 

通过http://node IP:端口 可以访问tomcat服务:

访问的页面:http://192.168.188.245:32256/

 可以看到可以访问了,但是没有页面文件,接下来要创建一个页面文件。

登录Pod:

[root@centos64-master ~]# kubectl get pod -n test -o wide
NAME                       READY   STATUS    RESTARTS   AGE   IP              NODE             NOMINATED NODE   READINESS GATES
tomcat1-84d6474cb7-zcrjf   1/1     Running   0          25m   10.244.203.24   centos64-node2   <none>           <none>


[root@centos64-master ~]# kubectl exec -it tomcat1-84d6474cb7-zcrjf /bin/bash -n test
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.
root@tomcat1-84d6474cb7-zcrjf:/usr/local/tomcat# 

进入webapps目录,创建ROOT目录,创建index.jsp文件

root@tomcat1-84d6474cb7-zcrjf:/usr/local/tomcat# cd webapps
root@tomcat1-84d6474cb7-zcrjf:/usr/local/tomcat/webapps# mkdir ROOT 
root@tomcat1-84d6474cb7-zcrjf:/usr/local/tomcat/webapps# cd ROOT
root@tomcat1-84d6474cb7-zcrjf:/usr/local/tomcat/webapps/ROOT# echo '<h1>Hello tomcat</h1>' >index.jsp
root@tomcat1-84d6474cb7-zcrjf:/usr/local/tomcat/webapps/ROOT# ls -lrt
total 4
-rw-r--r-- 1 root root 22 Jul 25 14:46 index.jsp

然后刷新访问页面:http://192.168.188.245:32256/

 

测试页面或者:cat > index.html

<html>
<head>
<meta charset="utf-8">
<title>测试系统</title>
</head>
<body>
    <h1>测试页面</h1>
    <p>我的第一个页面。</p>
</body>
</html>

2  部署方法2:使用yaml文件创建

cat > tomcat.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: tomcat1
  labels:
    app: demo
spec:
  replicas: 1
  selector:
    matchLabels:
      app: demo
  template:
    metadata:
      labels:
        app: demo
    spec:
      containers:
      - name: tomcat
        image: demo-tomcat:1.0 
        ports:
        - containerPort: 80

kubectl create -f tomcat.yaml
kubectl describe pod demo-tomcat-7f6bb4d7cd-fdbzw

cat > tomcatService.yaml

apiVersion: v1
kind: Service
metadata:
  name: tomcatservice
spec:
  type: NodePort
  ports:
    - port: 8080
      targetPort: 8080
  selector:
    app: demo

kubectl create -f tomcatService.yaml
kubectl get srv

其他步骤和方法1一样。

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

### 是否需要在 Kubernetes 上部署 Tomcat 在 Kubernetes 上部署 Java Web 项目时,是否需要使用 Tomcat 取决于项目的具体需求和技术栈选择。以下是对该问题的详细分析: 1. **Tomcat 的角色** Tomcat一个开源的 Servlet 容器和轻量级应用服务器,主要用于运行基于 Java 的 Web 应用程序。如果项目是以 WAR 包的形式交付,则必须使用支持 WAR 部署的应用服务器(如 Tomcat 或 Jetty),因为 WAR 包本身不能直接运行[^1]。 2. **Spring Boot 与嵌入式服务器** 如果项目是基于 Spring Boot 构建的,并且使用了嵌入式服务器(如内置的 Tomcat、Jetty 或 Undertow),那么不需要单独部署 Tomcat。Spring Boot 项目通常以 JAR 包形式打包,其中已经包含了应用服务器,可以直接通过 `java -jar` 命令启动[^4]。 3. **WAR 包与独立应用服务器** 如果项目是以 WAR 包形式构建的,则需要一个支持 WAR 部署的应用服务器,例如 Tomcat。在这种情况下,Tomcat 必须作为容器化的一部分进行部署,通常会通过 Dockerfile 将 Tomcat 和项目 WAR 包一起打包到镜像中[^2]。 4. **Kubernetes 中的部署方式** 在 Kubernetes 中,无论是使用 Tomcat 还是 Spring Boot,都需要将应用程序容器化为 Docker 镜像。以下是两种常见的部署方式: - **使用 Tomcat**:创建一个包含 Tomcat 和 WAR 包的 Docker 镜像,并通过 Kubernetes 的 Deployment 和 Service 资源进行部署[^3]。 - **使用 Spring Boot**:创建一个包含 Spring Boot 应用的 Docker 镜像,直接部署到 Kubernetes 中,无需额外的应用服务器[^4]。 5. **数据库集成** 无论是否使用 Tomcat,Java Web 项目通常还需要与数据库(如 MySQL)集成。在 Kubernetes 中,可以通过 StatefulSet 部署数据库,并通过 ConfigMap 和 Secret 管理数据库连接配置[^3]。 ### 示例代码 #### 使用 Tomcat 部署 WAR 包 ```dockerfile # 使用官方 Tomcat 镜像作为基础 FROM tomcat:8.5 # 删除默认的 webapps 目录内容 RUN rm -rf /usr/local/tomcat/webapps/* # 将 WAR 包复制到 Tomcat 的 webapps 目录 COPY mywebapp.war /usr/local/tomcat/webapps/ # 暴露 Tomcat 默认端口 EXPOSE 8080 # 启动 Tomcat CMD ["catalina.sh", "run"] ``` #### 使用 Spring Boot 部署 JAR 包 ```dockerfile # 使用官方 OpenJDK 镜像作为基础 FROM openjdk:8-jdk-alpine # 设置工作目录 WORKDIR /app # 将构建好的 JAR 包复制到镜像中 COPY mywebapp.jar /app/mywebapp.jar # 暴露 Spring Boot 默认端口 EXPOSE 8080 # 启动 Spring Boot 应用 CMD ["java", "-jar", "mywebapp.jar"] ``` ### 结论 是否需要 Tomcat 取决于项目的打包形式: - 如果是 WAR 包,则需要 Tomcat 或其他支持 WAR 部署的应用服务器。 - 如果是 Spring Boot 的 JAR 包,则不需要单独部署 Tomcat
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值