使用 NodePort
1.配置
# app1-service.yaml
apiVersion: v1
kind: Service
metadata:name: app1-service
spec:selector:app: app1ports:- protocol: TCPport: 80targetPort: 80type: NodePort # 类型为NodePort
---
# app2-service.yaml
apiVersion: v1
kind: Service
metadata:name: app2-service
spec:selector:app: app2ports:- protocol: TCPport: 80targetPort: 80type: NodePort # 类型为NodePort
---
# api-service.yaml
apiVersion: v1
kind: Service
metadata:name: api-service
spec:selector:app: apiports:- protocol: TCPport: 80targetPort: 80type: NodePort # 类型为NodePort
三个难记的随机端口:Kubernetes为每个Service在30000-32767范围内随机分配一个端口。
app1-service
-> 端口31234
app2-service
-> 端口31235
api-service
-> 端口31236
访问方式:你需要知道任意一个节点的IP(如
192.168.1.100
)。访问App1:
http://192.168.1.100:31234
访问App2:
http://192.168.1.100:31235
访问API:
http://192.168.1.100:31236
核心问题:
URL不友好:端口号难以记忆和传播,看起来非常不专业。
无法使用标准端口:无法直接使用HTTP的80和HTTPS的443标准端口。
安全性:需要在防火墙上开放多个高端口号,增加了攻击面。
需要知道节点IP:如果节点宕机,需要改用其他节点的IP。