你好,我正在尝试部署一个简单的Tomcat服务。详情如下:
- minikube版本:v1.8.1
操作系统: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]
我得到一个404当我 curl 的URL。我不确定是部署.yaml文件还是一些minikube设置有问题。
3条答案
按热度按时间envsm3lx1#
您应该设置
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
1.通过NodePort访问服务:
minikube service web --url
http://172.17.0.15:31637
如果这没有帮助,请检查
tomcat
pod的日志,查看它是在端口8080
上启动的。09-Mar-2020 13:36:00.157 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler [“http-nio-8080”]
您还可以通过首先定位docker容器
docker ps
并使用docker logs <container-name>
从其中获取日志来检查docker日志5anewei62#
Tomcat镜像在webapps.dist文件夹中带有默认的预安装应用程序(ROOT,manager...),以避免它们在容器启动时默认加载(https://github.com/docker-library/tomcat/issues/183)。例如,您可以简单地将webapps.dist重命名为webapps和(通过例如kubectl exec<pod_name>-- bash),并且在部署应用程序之后,404应该不再发生。
xpszyzbs3#
上面萨拉的回答为我指明了正确的方向。复制文件可以正常工作,但这需要重新启动tomcat服务,以恢复更改。我必须在部署yaml上使用'cp -r',如下所示: