LoadBalancer

本指南介绍了如何在使用 Cloud Provider KIND 的 kind 集群中使 type 为 LoadBalancer 的服务正常工作。

本指南补充了 Cloud Provider KIND 安装文档

安装 Cloud Provider KIND 🔗︎

可以使用 golang 安装 Cloud Provider KIND

go install sigs.k8s.io/cloud-provider-kind@latest

或下载 已发布的二进制文件 之一。

Cloud Provider KIND 作为独立的二进制文件在您的主机上运行,并连接到您的 KIND 集群,并为您的服务配置新的 Load Balancer 容器。它需要权限才能在系统上打开端口并连接到容器运行时。

使用 LoadBalancer 🔗︎

以下示例创建了一个负载均衡器服务,该服务路由到两个 http-echo pod,一个输出 foo,另一个输出 bar。

kind: Pod
apiVersion: v1
metadata:
  name: foo-app
  labels:
    app: http-echo
spec:
  containers:
  - name: foo-app
    image: hashicorp/http-echo:0.2.3
    args:
    - "-text=foo"
---
kind: Pod
apiVersion: v1
metadata:
  name: bar-app
  labels:
    app: http-echo
spec:
  containers:
  - name: bar-app
    image: hashicorp/http-echo:0.2.3
    args:
    - "-text=bar"
---
kind: Service
apiVersion: v1
metadata:
  name: foo-service
spec:
  type: LoadBalancer
  selector:
    app: http-echo
  ports:
  # Default port used by the image
  - port: 5678

应用内容

kubectl apply -f https://kind.kubernetes.ac.cn/examples/loadbalancer/usage.yaml

现在,通过向其外部 IP 和端口发送流量来验证负载均衡器是否正常工作。

LB_IP=$(kubectl get svc/foo-service -o=jsonpath='{.status.loadBalancer.ingress[0].ip}')
# should output foo and bar on separate lines 
for _ in {1..10}; do
  curl ${LB_IP}:5678
done