如果app需要开放两个端口,有两种办法:
- 第一种是起2个service,每个service开放一个端口
- 第二种是同一个service开放2个端口
第一种:起2个service,每个service开放一个端口
明明可以用一个service搞定,为什么还要起两个service呢?
- 让service更清晰,一个service负责一种服务。
例如,有个app,同时开发9200
与9300
端口。9200
提供web
服务,9300
提供api
。那么,用两个service
,分别命名为app-http
与app-api
,分别暴露9200
与9300
端口,分别为nodePort
与clusterIP
方式,这样层次清晰。
第二种:同一个service开2个端口
一般我们只有一个端口的时候,在service的yaml文件是这样的:
ports:
- nodePort: 9200
port: 9200
protocol: TCP
targetPort: 9200
而如果你想开两个端口,直接复制粘贴可不行,k8s会提示你必须要加上name。所以,如果要开多端口,要为每个port都指定一个name,如:
ports:
- name: http
nodePort: 9200
port: 9200
protocol: TCP
targetPort: 9200
- name: api
port: 9300
protocol: TCP
targetPort: 9300