跳到主要内容

LoadBalancer

安装openelb

kubectl apply -f https://raw.githubusercontent.com/openelb/openelb/master/deploy/openelb.yaml

使用layer2模式

metadata:

  • name: Name of the Eip object.

spec:

  • address: 一个或多个 IP 地址:
    • 192.168.0.100.
    • 192.168.0.0/24.
    • 192.168.0.91-192.168.0.100.
  • protocol: 指定 Eip 对象用于哪种 OpenELB 模式。该值可以是layer2bgp。如果未指定此字段,bgp则使用默认值。
  • interface:OpenELB 在其上侦听 ARP 或 NDP 请求的 NIC。该字段仅在protocol设置为时有效layer2
kubectl apply -f layer2-eip.yaml
apiVersion: network.kubesphere.io/v1alpha2
kind: Eip
metadata:
name: layer2-eip
spec:
address: 192.168.0.91-192.168.0.100
interface: eth0
protocol: layer2

svc使用loadbalancer

  • 您必须设置spec:typeLoadBalancer
  • lb.kubesphere.io/v1alpha1: openelb注释指定服务使用 OpenELB 。
  • protocol.openelb.kubesphere.io/v1alpha1: layer2注释指定 OpenELB 用于第 2 层模式。
  • eip.openelb.kubesphere.io/v1alpha2: layer2-eip注解指定 OpenELB 使用的 Eip 对象。如果未配置此注解,OpenELB 会自动使用与协议匹配的第一个可用 Eip 对象。您也可以删除此注解并添加spec:loadBalancerIP字段(例如spec:loadBalancerIP: 192.168.0.91)以将特定 IP 地址分配给服务。
  • 如果spec:externalTrafficPolicy设置为Cluster(默认值),OpenELB 从所有 Kubernetes 集群节点中随机选择一个节点来处理 Service 请求。也可以通过 kube-proxy 访问其他节点上的 Pod。
  • 如果spec:externalTrafficPolicy设置为Local,OpenELB 会在 Kubernetes 集群中随机选择一个包含 Pod 的节点来处理 Service 请求。只能访问选定节点上的 Pod。
kind: Service
apiVersion: v1
metadata:
name: nginx-svc
annotations:
lb.kubesphere.io/v1alpha1: openelb
protocol.openelb.kubesphere.io/v1alpha1: layer2
eip.openelb.kubesphere.io/v1alpha2: layer2-eip
spec:
selector:
app: nginx
type: LoadBalancer
ports:
- protocol: TCP
port: 80
targetPort: 80
externalTrafficPolicy: Cluster