gpt4 book ai didi

kubernetes - 入口指向服务上的错误端口

转载 作者:行者123 更新时间:2023-12-04 08:31:27 25 4
gpt4 key购买 nike

我有一个 Kubernetes 服务,它公开了两个端口,如下所示

Name:              m-svc
Namespace: m-ns
Labels:
Annotations: <none>
Selector: app=my-application
Type: ClusterIP
IP: 10.233.43.40
Port: first 8080/TCP
TargetPort: 8080/TCP
Endpoints: 10.233.115.178:8080,10.233.122.166:8080
Port: second 8888/TCP
TargetPort: 8888/TCP
Endpoints: 10.233.115.178:8888,10.233.122.166:8888
Session Affinity: None
Events: <none>

这是入口定义:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: f5
virtual-server.f5.com/http-port: "80"
virtual-server.f5.com/ip: controller-default
virtual-server.f5.com/round-robin: round-robin
creationTimestamp: 2018-10-05T18:54:45Z
generation: 2
name: m-ingress
namespace: m-ns
resourceVersion: "39557812"
selfLink: /apis/extensions/v1beta1/namespaces/m-ns
uid: 20241db9-c8d0-11e8-9fac-0050568d4d4a
spec:

rules:
- host: www.myhost.com
http:
paths:
- backend:
serviceName: m-svc
servicePort: 8080
path: /first/path
- backend:
serviceName: m-svc
servicePort: 8080
path: /second/path
status:
loadBalancer:
ingress:
- ip: 172.31.74.89

但是当我去 www.myhost.com/first/path我最终在监听端口 8888 的服务上的 m-svc .可能会发生什么?

另一条信息是我在指向同一服务上不同端口的两个入口之间共享服务,这是一个问题吗?此服务上的端口 8888 有一个不同的入口端口,它工作正常

我也在使用 F5 Controller

经过大量时间调查,看起来根本原因在F5s,看起来因为后端(Kubernetes服务)的名称相同,它只在池中创建一个条目并将请求路由到这个后端和在 F5 策略中注册的一个端口。有没有办法解决这个问题?一种解决方法是为每个端口创建一个独特的服务,但我不想进行此更改,这在 F5 级别是否可行?

最佳答案

据我所知,您没有 Selector在您的服务领域。没有它,它不会转发到任何后端或 pod。是什么让你认为它会移植到 8888 ?奇怪的是你有 Endpoints 在您的服务中。您是否手动创建了它们?

该服务必须是这样的:

Name:              m-svc
Namespace: m-ns
Labels:
Annotations: <none>
Selector: app=my-application
Type: ClusterIP
IP: 10.233.43.40
Port: first 8080/TCP
TargetPort: 8080/TCP
Endpoints: 10.233.115.178:8080,10.233.122.166:8080
Port: second 8888/TCP
TargetPort: 8888/TCP
Endpoints: 10.233.115.178:8888,10.233.122.166:8888
Session Affinity: None
Events: <none>

然后在您的部署定义中:
selector:
matchLabels:
app: my-application

或者在一个 pod 中:
apiVersion: v1
kind: Pod
metadata:
annotations: { ... }
labels:
app: my-application

您还应该能够描述您的 Endpoints :
$ kubectl describe endpoints m-svc
Name: m-svc
Namespace: default
Labels: app=my-application
Annotations: <none>
Subsets:
Addresses: x.x.x.x
NotReadyAddresses: <none>
Ports:
Name Port Protocol
---- ---- --------
first 8080 TCP
second 8081 TCP

Events: <none>

关于kubernetes - 入口指向服务上的错误端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52672687/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com