当我卷曲kubernetes Tomcat服务时出现404

时间:2020-03-09 08:20:42

标签: docker kubernetes devops kubectl minikube

您好,我正在尝试部署一个简单的tomcat服务。详细信息如下:

1.minikube版本:v1.8.1

2.OS:mac

3. deployment.yaml 文件(我在yaml文件的目录中)

apiVersion: apps/v1
kind: Deployment
metadata:
  name: tomcat-deployment
spec:
  selector:
    matchLabels:
      app: tomcat
  replicas: 1
  template:
    metadata:
      labels:
        app: tomcat
    spec:
      containers:
      - name: tomcat
        image: tomcat:9.0
        ports:
        - containerPort: 8080

4。用于部署和公开服务的命令

kubectl apply -f deployment.yaml

kubectl expose deployment tomcat-deployment --type=NodePort

minikube service tomcat-deployment --url

curl [URL]

卷曲URL时得到404。 我不确定Deployment.yaml文件或某些minikube设置是否有问题。

2 个答案:

答案 0 :(得分:0)

您应该设置target-Port,在您的情况下为8080

所有这些都在Set up Ingress on Minikube with the NGINX Ingress Controller

上得到了很好的解释。
  1. 使用以下命令创建部署:

kubectl run web --image=gcr.io/google-samples/hello-app:1.0 --port=8080

  • 输出:

deployment.apps/web created

  1. 公开部署:

kubectl expose deployment web --target-port=8080 --type=NodePort

  • 输出:

service/web exposed

  1. 验证服务已创建并且在节点端口上可用:

kubectl get service web

  • 输出:

   NAME      TYPE       CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
   web       NodePort   10.104.133.249   <none>        8080:31637/TCP   12m
  1. 通过NodePort访问服务:

minikube service web --url

  • 输出:

http://172.17.0.15:31637

如果这样不能帮助检查tomcat窗格的日志,以查看它是否在端口8080上启动 寻找一条线

2020年3月9日13:36:00.157信息[main] org.apache.coyote.AbstractProtocol.start启动ProtocolHandler [“ http-nio-8080”]

您还可以通过首先找到Docker容器docker ps并使用docker logs <container-name>从其中获取日志来检查Docker日志

答案 1 :(得分:0)

Tomcat映像随附于webapps.dist文件夹内的默认预安装应用程序(ROOT,manager ...),以避免在容器启动时默认加载它们(https://github.com/docker-library/tomcat/issues/183)。例如,您可以简单地将webapps.dist重命名为webapps,然后(例如通过kubectl exec -bash)重命名,然后在部署应用程序后,404不再应该出现。

相关问题