我可能会在这里问一个错误的问题,但我正在尝试创建一个像这样的内部负载均衡器
我有一个可以访问的 API 服务http://[api_service_name]:3000
和一个简单的 nginx 网关服务,proxy_passhttp://[gateway_service_name]:80
到http://[api_service_name]:3000
我的 API 服务 service.yaml 文件是
apiVersion: v1
kind: Service
metadata:
creationTimestamp: null
labels:
service: api-service-name
name: api-service-name
spec:
ports:
- name: "3000"
port: 3000
targetPort: 3000
selector:
service: api-service-name
status:
loadBalancer: {}
我的 API 服务 deployment.yaml 文件是
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
creationTimestamp: null
name: api-service-name
spec:
replicas: 1
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
service: api-service-name
spec:
containers:
- env:
...
image: ...
name: api-service-name
ports:
- containerPort: 3000
resources: {}
restartPolicy: Always
status: {}
而我的 nginx service.yaml 是
apiVersion: v1
kind: Service
metadata:
creationTimestamp: null
labels:
service: gateway-service-name
name: gateway-service-name
spec:
ports:
- name: "80"
port: 80
protocol: TCP
targetPort: 80
selector:
service: gateway-service-name
type: LoadBalancer
externalName: gateway-service-name
status:
loadBalancer: {}
和 deployment.yaml 是
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
creationTimestamp: null
name: gateway-service-name
spec:
replicas: 1
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
service: gateway-service-name
spec:
containers:
- image: ...
name: gateway-service-name
ports:
- containerPort: 80
resources: {}
restartPolicy: Always
status: {}
这些设置适用于外部负载均衡器/网关。当我这样做kubectl get svc
时
NAME CLUSTER-IP EXTERNAL-IP
gateway-service-name gateway.int.ip.add.ress gateway.ext.ip.add.ress
api-service-name api.int.ip.add.ress <none>
http://gateway.ext.ip.add.ress/any_available_endpoints
我可以很好地浏览
我想弄清楚我是否可以在不必为网关设置外部 IP 地址的情况下实现相同的目标,并http://gateway.int.ip.add.ress/any_available_endpoints
改用
我尝试使用默认值ClusterIp
ServiceType
,但它不起作用
注意:我将通过 vpn 访问网络,并且位于另一个集群上的另一个服务将在内部访问它
更新:我最终将我的客户端(网络)放在同一个集群中,这样我的网关就不必有外部 IP 地址,我不确定这是否是正确的方法,但现在会保持这样