Docker Kubernetes-minikube服务连接超时
我有一个Docker环境,有3个容器:nginx、带Laravel的PHP和一个MySQL数据库。它工作得很好,我现在正在努力学习库伯内特斯 我希望仅为nginx容器创建一个部署和一个服务,以使开始时变得简单: 以下是deployment.yaml:Docker Kubernetes-minikube服务连接超时,docker,kubernetes,dockerfile,Docker,Kubernetes,Dockerfile,我有一个Docker环境,有3个容器:nginx、带Laravel的PHP和一个MySQL数据库。它工作得很好,我现在正在努力学习库伯内特斯 我希望仅为nginx容器创建一个部署和一个服务,以使开始时变得简单: 以下是deployment.yaml: apiVersion: apps/v1 kind: Deployment metadata: name: toolkit-app-deployment spec: replicas: 1 selector:
apiVersion: apps/v1
kind: Deployment
metadata:
name: toolkit-app-deployment
spec:
replicas: 1
selector:
matchLabels:
container: toolkit-server
template:
metadata:
labels:
container: toolkit-server
spec:
containers:
- name: toolkit-server
image: my/toolkit-server:test
ports:
- containerPort: 8000
imagePullSecrets:
- name: my-cred
ports:
- containerPort: 80
这是服务。yaml:
apiVersion: v1
kind: Service
metadata:
name: backend
spec:
selector:
container: toolkit-server
ports:
- protocol: "TCP"
port: 80
targetPort: 8000
type: LoadBalancer
targetPort: 80
如果需要,这里是docker-compose.yaml的nginx部分:
version: "3.8"
services:
server:
build:
context: .
dockerfile: dockerfiles/nginx.dockerfile
ports:
- "8000:80"
volumes:
- ./src:/var/www/html
- ./nginx/nginx.conf:/etc/nginx/conf.d/default.conf:ro
container_name: toolkit-server
部署已成功创建,我可以看到1/1吊舱正在运行
然而,当我运行minikube服务后端时,我得到的URL刚好超时
我本来希望看到某种类型的nginx页面,可能是nginx错误——但由于超时,我不确定下一步是什么
我是Kubernetes的新手,很有可能我把端口搞砸了,或者是一些基本的东西。谢谢你的帮助
编辑:
根据@david maze的建议,我在deployment.yaml中更改了以下内容:
apiVersion: apps/v1
kind: Deployment
metadata:
name: toolkit-app-deployment
spec:
replicas: 1
selector:
matchLabels:
container: toolkit-server
template:
metadata:
labels:
container: toolkit-server
spec:
containers:
- name: toolkit-server
image: my/toolkit-server:test
ports:
- containerPort: 8000
imagePullSecrets:
- name: my-cred
ports:
- containerPort: 80
以及以下正在使用的。yaml:
apiVersion: v1
kind: Service
metadata:
name: backend
spec:
selector:
container: toolkit-server
ports:
- protocol: "TCP"
port: 80
targetPort: 8000
type: LoadBalancer
targetPort: 80
正如预期的那样,在浏览器中查看时,这给了我一个nginx错误页面,但关键是不再超时。这是一个社区wiki答案,用于提高可见性。请随意扩展它 如评论中所述,问题是由于端口配置错误造成的 TargetPort是服务将向其发送请求的端口,您的pod将监听该端口。容器中的应用程序也需要侦听此端口 ContainerPort定义可在容器内访问应用程序的端口 因此,在您的用例中,部署应该具有:
ports:
- containerPort: 80
以及服务:
targetPort: 80
这将使连接不再超时。您是否对Nginx配置进行了任何更改,使其在端口8000上侦听,或者容器内的进程在默认HTTP端口80上侦听?我可能会将pod和服务规范中提到的端口8000更改为端口80。您好,我最初的Docker环境是通过localhost:8000访问的-我已经将部署和服务YAML都更改为端口80,现在我收到一个502坏网关nginx错误-这是一个进步!谢谢你的帮助你好,李。你能用上面提到的信息编辑你的问题吗?这将使分析更容易。没问题-我已经编辑了问题谢谢@Lee。那么,现在的实际问题是什么?当前行为(在David提出的更改之后)是您想要实现的吗?