Nazia Jahan Trisha Asked: 2020-04-22 06:52:31 +0800 CST2020-04-22 06:52:31 +0800 CST 2020-04-22 06:52:31 +0800 CST 是否可以在 Kubernetes pod 中公开 2 个端口? 772 我有以下情况 - 位置模拟器将根据时间从 GPS 跟踪器获取其经度和纬度数据。所以这个位置模拟器和activemq有连接,但是要接收原始数据,是否可以暴露这个服务的另一个端口来接收实时跟踪数据? kubernetes 1 个回答 Voted Best Answer PjoterS 2020-04-22T08:42:18+08:002020-04-22T08:42:18+08:00 例如,如果您想deployment在两个或更多端口上公开您,您至少可以通过两种方式进行操作。 中的正确配置YAML。这种方法在Kubernetes 文档中有很好的描述。 对于某些服务,您需要公开多个端口。Kubernetes 允许您在服务对象上配置多个端口定义。当为一个服务使用多个端口时,您必须提供所有端口名称,以便这些名称明确。例如: 例子: apiVersion: v1 kind: Service metadata: name: my-service spec: selector: app: MyApp ports: - name: http protocol: TCP port: 80 targetPort: 9376 - name: https protocol: TCP port: 443 targetPort: 9377 - name: <another-name> protocol: TCP port: XXX targetPort: XXX 使用kubectl expose. $ kubectl exposed <resource(deployment/Replicaset/etc)> <deployment-name> --port=XXX,XYZ,ABC --target-port=XXX $ kubectl expose deployment nginx --port=80,8080,6000 --target-port=8080 service/nginx exposed $ kubectl describe svc nginx Name: nginx Namespace: default Labels: run=nginx Annotations: <none> Selector: run=nginx Type: ClusterIP IP: 10.0.74.75 Port: port-1 80/TCP TargetPort: 8080/TCP Endpoints: 10.48.0.13:8080 Port: port-2 8080/TCP TargetPort: 8080/TCP Endpoints: 10.48.0.13:8080 Port: port-3 6000/TCP TargetPort: 8080/TCP Endpoints: 10.48.0.13:8080 Session Affinity: None Events: <none> 如Kubernetes 文档中所述 targetPort: 是容器接受流量的端口, port: 是抽象Service端口,可以是其他 Pod 用来访问 Service 的任何端口
例如,如果您想
deployment
在两个或更多端口上公开您,您至少可以通过两种方式进行操作。YAML
。这种方法在Kubernetes 文档中有很好的描述。例子:
kubectl expose
.$ kubectl exposed <resource(deployment/Replicaset/etc)> <deployment-name> --port=XXX,XYZ,ABC --target-port=XXX
$ kubectl expose deployment nginx --port=80,8080,6000 --target-port=8080 service/nginx exposed
如Kubernetes 文档中所述
targetPort
: 是容器接受流量的端口,port
: 是抽象Service
端口,可以是其他 Pod 用来访问 Service 的任何端口