我有一个kubernetes设置,其配置如下所示:
#---
kind: Service
apiVersion: v1
metadata:
name: myservice
spec:
selector:
app: my-service
ports:
- protocol: "TCP"
# Port accessible inside cluster
port: 8080
# Port to forward to inside the pod
targetPort: 80
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: my-service
spec:
replicas: 1
template:
metadata:
labels:
app: my-service
spec:
containers:
- name: my-service
image: my-custom-docker-regisry/my-service:latest
imagePullPolicy: Always
ports:
- containerPort: 8080
imagePullSecrets:
- name: regcred
Run Code Online (Sandbox Code Playgroud)
和我的入口:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: test-ingress
annotations:
nginx.ingress.kubernetes.io/ssl-redirect: "false"
spec:
rules:
- http:
paths:
- path: /myservice
backend:
serviceName: myservice
servicePort: 80
Run Code Online (Sandbox Code Playgroud)
我试图做的是从docker注册表中提取图像并在kubernetes中运行它。我在这里配置了一个部署和一项服务,并通过入口将服务公开给外部。
我的minikube在IP 192.168.99.100下运行,当我尝试访问地址为curl 192.168.99.100:80/myservice的应用程序时,出现了502 Bad Gateway。
有人知道为什么会发生这种情况还是我在配置上做错了什么?谢谢高级!
Kos*_*Kos 31
您的入口针对此服务:
serviceName: myservice
servicePort: 80
Run Code Online (Sandbox Code Playgroud)
但名为的服务myservice公开端口8080而不是80:
ports:
- protocol: "TCP"
# Port accessible inside cluster
port: 8080
# Port to forward to inside the pod
targetPort: 80
Run Code Online (Sandbox Code Playgroud)
您的入口应指向服务公开的端口之一。
此外,服务本身以端口 80 为目标,但部署中的 pod 似乎公开了端口 8080,而不是 80:
containers:
- name: my-service
image: my-custom-docker-regisry/my-service:latest
imagePullPolicy: Always
ports:
- containerPort: 8080
Run Code Online (Sandbox Code Playgroud)
所以长话短说,看起来你可以换port用targetPort在你service这么认为:
80808080了服务名称myserviceport下所有 pod 的端口80,myservice端口80。| 归档时间: |
|
| 查看次数: |
5692 次 |
| 最近记录: |