0

我有一个在 minikube 集群中运行的简单微服务设置。它受到这个例子的启发。 我的设置包括一个简单的router微服务,其中包含一个 golang 网络服务器。我现在要测试的是当有多个 Pod 时的负载平衡。但似乎没有任何负载平衡。

微服务的 kubernetes 文件如下所示:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: router
  labels:
    app: router
    tier: router
spec:
  replicas: 2
  strategy: {}
  template:
    metadata:
      labels:
        app: router
        tier: router
    spec:
      containers:
      - image: {myregistry}/router
        name: router
        resources: {}
        ports:
          - name: target-port
            containerPort: 8082
        env:
          - name: PORT
            value: "8082"
status: {}
---
apiVersion: v1
kind: Service
metadata:
  name: router
  labels:
    app: router
    tier: router
spec:
  type: LoadBalancer
  selector:
    app: router
    tier: router
  ports:
  - port: 8082
    name: http
    targetPort: target-port

skaffold 配置如下所示:

apiVersion: skaffold/v1beta2
kind: Config
build:
  artifacts:
  - image: {myregistry}/router
    context: src/router/bin
  tagPolicy:
    gitCommit: {}
  local:
    push: false
deploy:
  kubectl:
    manifests:
    - ./kubernetes/**.yaml

Kubernetes 正确部署了两个 pod。的输出kubectl get pods如下所示:

NAME                           READY   STATUS    RESTARTS   AGE
router-7f75f6f9df-c8mgp        1/1     Running   0          14m
router-7f75f6f9df-k248m        1/1     Running   0          14m

skaffold dev日志输出中我可以看到每个请求都被路由到了router-7f75f6f9df-c8mgppod。即使使用不同的浏览器,所有请求最终都会出现在完全相同的 pod 中。

当我删除这个 pod 时,即使有另一个 pod 正在运行,路由器微服务也会有轻微的停机时间。

这种行为可能是什么问题?

4

1 回答 1

3

minikube 不“正确”支持 LoadBalancer 服务类型。过去只使用 NodePort 或 externalIP 服务类型是司空见惯的,但是官方的hello-minikube示例现在指出:

在支持负载平衡器的云提供商上,将提供一个外部 IP 地址来访问服务。在 Minikube 上,LoadBalancer 类型使 Service 可以通过 minikube service 命令访问

因此,您应该能够有效地使用您的 minikube LoadBalancer 服务:minikube service router

但是,有一个为裸机 kubernetes 集群开发的简洁解决方案,称为metallb,它可能能够帮助您在 minikube 上以更好的方式进行测试。

您可以在 minikube 上安装和配置它。例如

kubectl apply -f https://raw.githubusercontent.com/google/metallb/v0.8.1/manifests/metallb.yaml

以下是一些博客文章,其中其他人解释了 metallb 与 minikube 的设置和使用以支持 LoadBalancer:

博文 1 博文 2

这是官方文档

希望有帮助!

于 2019-09-20T23:23:07.677 回答