k8s 使用tomcat官方镜像部署集群并解决访问页面404

一、集群节点配置:
master:192.168.206.138
k8s-node1:192.168.206.136
k8s-node2:192.168.206.137

二、下载一个Tomcat镜像

docker pull tomcat
docker images | grep tomcat
docker tag docker.io/tomcat tomcat

三、根据官方镜像自己构建一个一次性就能启动的Tomcat镜像

官方镜像这里有个坑,使用kubectl启动之后,页面报错404,仔细检查发现,是因为tomcat的webapp目录下没有对应的文件,所以连初始界面都无法显示。要想显示,必须要根据官方镜像自己构建一个Dockerfile

vim Dockerfile

FROM tomcat
ENV MYPATH /usr/local/tomcat
WORKDIR $MYPATH
RUN  cp -r webapps.dist/* webapps/
ENTRYPOINT /bin/bash $MYPATH/bin/startup.sh && tail -f $MYPATH/logs/catalina.out
docker build -t tomcat:v7 .
docker tag tomcat:v7 192.168.206.137:5000/tomcat:v7
docker push 192.168.206.137:5000/tomcat:v7

这里需要将镜像上传到自己搭建的registry,并配置nodes节点都可以正常访问5000端口。

步骤可以看:registry搭建方法

三、创建一个 tomcat1.yaml

vim tomcat1.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: tomcatdeploy1
spec:
  replicas: 1
  selector:
    matchLabels:
      app: tomcat1
  template:
    metadata:
      labels:
        app: tomcat1
    spec:
      containers:
      - name: mytomcat1
        image: 192.168.206.137:5000/tomcat:v7
        ports:
        - containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
  name: tomcatservice1
spec:
  type: NodePort
  ports:
  - port: 8080
    targetPort: 8080
    nodePort: 30088
  selector:
    app: tomcat1

四、部署yaml

kubectl create -f tomcat1.yaml
kubectl get pod -o wide
kubectl get svc | grep tomcatservice1

根据上面的信息可以看出,该POD部署在k8s-node1上,映射POD的8080端口到master的30088端口上。所以可以通过masterIP:30088访问该tomcat服务

http://192.168.206.138:30088/

见此页面表示部署OK

  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Kubernetes部署Tomcat集群,可以使用以下步骤: 1. 准备Docker镜像:可以使用官方Tomcat镜像,或者自己构建镜像,并将其上传到Docker Registry中。 2. 创建Deployment:使用kubectl create命令创建一个Deployment,指定使用镜像和副本数,例如: ``` kubectl create deployment tomcat --image=tomcat:latest --replicas=3 ``` 这将创建一个名为tomcat的Deployment,使用最新版的Tomcat镜像,并启动3个副本。 3. 创建Service:使用kubectl expose命令创建一个Service,将Tomcat容器的端口暴露出来,例如: ``` kubectl expose deployment tomcat --type=LoadBalancer --name=tomcat-svc --port=8080 --target-port=8080 ``` 这将创建一个名为tomcat-svc的Service,将Tomcat容器的8080端口暴露出来,并使用LoadBalancer类型的Service。 4. 创建ConfigMap:使用kubectl create configmap命令创建一个ConfigMap,用于存储Tomcat的配置文件,例如: ``` kubectl create configmap tomcat-config --from-file=./tomcat/conf/server.xml ``` 这将创建一个名为tomcat-config的ConfigMap,并将当前目录下的server.xml文件存储到ConfigMap中。 5. 创建StatefulSet:使用kubectl create命令创建一个StatefulSet,指定使用镜像、副本数和ConfigMap,例如: ``` kubectl create -f tomcat-statefulset.yaml ``` 这将从tomcat-statefulset.yaml文件中创建一个名为tomcat的StatefulSet,使用最新版的Tomcat镜像,并启动3个副本。tomcat-statefulset.yaml文件内容如下: ``` apiVersion: apps/v1 kind: StatefulSet metadata: name: tomcat spec: serviceName: tomcat-svc replicas: 3 selector: matchLabels: app: tomcat template: metadata: labels: app: tomcat spec: containers: - name: tomcat image: tomcat:latest ports: - containerPort: 8080 volumeMounts: - name: tomcat-config mountPath: /usr/local/tomcat/conf/server.xml subPath: server.xml volumeClaimTemplates: - metadata: name: tomcat-data spec: accessModes: ["ReadWriteOnce"] resources: requests: storage: 1Gi ``` 其中,volumeClaimTemplates用于定义存储卷,将每个副本的数据存储到持久化存储中。 6. 验证部署使用kubectl get命令查看Deployment、Service和StatefulSet的状态,例如: ``` kubectl get deployment tomcat kubectl get service tomcat-svc kubectl get statefulset tomcat ``` 确认Deployment、Service和StatefulSet都处于运行状态,并且Service的EXTERNAL-IP不为<pending>。 7. 访问Tomcat使用浏览器访问Service的EXTERNAL-IP,即可访问Tomcat Web应用。如果有多个副本,则可以通过访问不同的Pod IP地址来访问不同的副本。 需要注意的是,以上步骤只是一个简单的示例,实际部署可能需要针对具体的需求进行调整。例如,可能需要配置存储卷、使用Ingress等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值