您好,我正在尝试部署一个简单的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设置是否有问题。
答案 0 :(得分:0)
您应该设置target-Port
,在您的情况下为8080
。
所有这些都在Set up Ingress on Minikube with the NGINX Ingress Controller
上得到了很好的解释。
- 使用以下命令创建部署:
kubectl run web --image=gcr.io/google-samples/hello-app:1.0 --port=8080
- 输出:
deployment.apps/web created
- 公开部署:
kubectl expose deployment web --target-port=8080 --type=NodePort
- 输出:
service/web exposed
- 验证服务已创建并且在节点端口上可用:
kubectl get service web
- 输出:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE web NodePort 10.104.133.249 <none> 8080:31637/TCP 12m
- 通过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