场景:
我有一个包含host01
、host02
和host03
的k8s簇。
我在host01
上运行master,在host02
和host03
上运行slave,我想在master上为客户端连接打开一个端口,即我想打开:host01:32702
。
使用以下service.yaml,我成功地打开了host01:32702
。令我惊讶的是,host02:32702
和host03:32702
也开放了。
kind: Service
# ...
spec:
type: NodePort
ports:
- name: dashboard
port: 8265
targetPort: 8265
nodePort: 32702
selector:
podonhost01: yes
问题:
- 这是预期的NodePort行为吗?选择器不工作吗
- 如果是,那么为什么这是预期的NodePort行为?如果我有1000台主机,那么单个服务将在所有这些主机上打开32702端口
- 如何只打开
host01
上的32702端口而不打开其余主机
您可以使用externalIP,
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app.kubernetes.io/name: MyApp
ports:
- name: http
protocol: TCP
port: 80
targetPort: 9376
externalIPs:
- HOST-01 IP
参考编号:https://kubernetes.io/docs/concepts/services-networking/service/#external-ips