在Kubernetes中,负载均衡通常由服务对象来实现。你可以使用Service资源来暴露一个容器(或一组容器),并且提供负载均衡功能。
以下是一个简单的服务定义示例,它使用了Cluster内部负载均衡器实现(也就是说,它不暴露给外部网络,只在集群内部使用):
XML
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 9376
在这个例子中,my-service
服务将会将进入的流量均衡到标签为app=my-app
的Pod上,这些Pod的目标端口是9376。
如果你需要一个外部负载均衡器,你可以设置type: LoadBalancer
,这将依赖于你的云提供商,但大多数云服务提供商都支持这种类型的服务。
html
apiVersion: v1
kind: Service
metadata:
name: my-loadbalancer
spec:
type: LoadBalancer
selector:
app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 9376
在这个例子中,Kubernetes将为你的服务设置一个外部可访问的负载均衡器,你可以通过服务状态中的**LoadBalancer Ingress
**字段找到它的IP地址。