是否可以在 Kubernetes pod 中公开 2 个端口?

是否可以在 Kubernetes pod 中公开 2 个端口?

我有以下情况 -

图像

位置模拟器将根据时间从 GPS 跟踪器获取经度和纬度数据。因此,此位置模拟器与 activemq 有连接,但为了接收原始数据,是否可以公开此服务的另一个端口来接收实时跟踪数据?

答案1

例如,如果您想deployment在两个或更多端口上公开自己的信息,您至少可以通过两种方式来实现。

  1. 中的正确配置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
  1. 使用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 用于访问服务的任何端口

相关内容