我有一个 LoadBalancer 服务,它在集群外公开 3300 端口。我想为内部通信打开一个新端口,以便其他 pod 可以与此服务通信,但此端口不应暴露在集群外。
基本上,通信看起来像这样:
my-svc:3301
pod/my-app <--- svc/my-svc <------------- pod/my-new-app
^
| ext-ip:3300
|
outside_world
apiVersion: v1
kind: Service
metadata:
name: my-svc
spec:
type: LoadBalancer
ports:
- name: my-port
protocol: "TCP"
port: 3300
targetPort: 3300
selector:
app: my-app
有没有办法将新端口包含在此服务本身中?我是否必须创建另一个 NodePort 类型的服务?
答案 0 :(得分:1)
如果“内部”和“外部”通信路径使用不同的端口,则需要单独的 (ClusterIP) 服务。没有办法说你想要一个服务来创建一个 LoadBalancer(或一个 NodePort),而只是为了某些服务端口。
如果两者都可以使用相同的端口,那么您可以将其他 pod 指向 http://my-svc:3300
。即使是 LoadBalancer(或 NodePort)服务,也可以像 ClusterIP 服务一样使用其 name:
和 port:
调用它。
答案 1 :(得分:0)
使用另一个答案中提到的内部通信所需的端口创建一个 ClusterIP 类型的新服务(默认服务类型)。
apiVersion: v1
kind: Service
metadata:
name: my-svc-internal
spec:
type: ClusterIP
ports:
- name: my-port
protocol: "TCP"
port: 3301
targetPort: 3301
selector:
app: my-app