问题1
:在一个部署的一个POD中创建两个不同的服务后端。这不是吊舱的设计目的。如果您想要公开多个服务,那么应该有一个POD(至少)来支持每个服务。通过允许您定义复制和活跃选项,部署围绕POD进行。在您的案例中,您应该有一个部署(它创建一个或多个将响应一个echo请求的pods)用于对应的服务。
问题2
:您的服务没有正确链接到后端。服务显然是想选择一个标签
app=echo
或
app=echo2
. 在您的部署中,
app=echo12
. 因此,服务根本找不到任何活动端点。
要解决上述问题,请尝试以下操作:
apiVersion: v1
kind: Service
metadata:
name: echo1
spec:
ports:
- port: 80
targetPort: 5678
selector:
app: echo1
---
apiVersion: v1
kind: Service
metadata:
name: echo2
spec:
ports:
- port: 80
targetPort: 5678
selector:
app: echo2
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: echo1
spec:
selector:
matchLabels:
app: echo1
replicas: 1
template:
metadata:
labels:
app: echo1
spec:
containers:
- name: echo1
image: hashicorp/http-echo
args:
- "-text=echo1"
ports:
- containerPort: 5678
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: echo2
spec:
selector:
matchLabels:
app: echo2
replicas: 1
template:
metadata:
labels:
app: echo2
spec:
containers:
- name: echo2
image: hashicorp/http-echo
args:
- "-text=echo2"
ports:
- containerPort: 5678
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: echo-ingress
spec:
rules:
- host: echo1.example.com
http:
paths:
- backend:
serviceName: echo1
servicePort: 80
- host: echo2.example.com
http:
paths:
- backend:
serviceName: echo2
servicePort: 80
我已经在自己的集群中测试了上面的内容,并验证了它是否正常工作(当然是使用不同的入口URL)。希望这有帮助!