1.8. 为工作负载部署负载均衡器


红帽构建的 MicroShift 提供了网络负载均衡器的内置实现。以下示例使用节点 IP 地址作为 LoadBalancer 服务配置文件的外部 IP 地址。

先决条件

  • 已安装 OpenShift CLI (oc)。
  • 您可以使用具有集群管理角色的用户访问集群。
  • 在使用 OVN-Kubernetes 网络插件配置的基础架构上安装集群。
  • KUBECONFIG 环境变量被设置。

流程

  1. 运行以下命令验证您的 pod 是否正在运行:

    $ oc get pods -A
  2. 运行以下命令来创建示例命名空间:

    $ NAMESPACE=nginx-lb-test
    $ oc create ns $NAMESPACE
  3. 以下示例在命名空间中部署测试 nginx 应用程序的三个副本:

    $ oc apply -n $NAMESPACE -f - <<EOF
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: nginx
    data:
      headers.conf: |
        add_header X-Server-IP  \$server_addr always;
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - image: quay.io/packit/nginx-unprivileged
            imagePullPolicy: Always
            name: nginx
            ports:
            - containerPort: 8080
            volumeMounts:
            - name: nginx-configs
              subPath: headers.conf
              mountPath: /etc/nginx/conf.d/headers.conf
            securityContext:
              allowPrivilegeEscalation: false
              seccompProfile:
                type: RuntimeDefault
              capabilities:
                drop: ["ALL"]
              runAsNonRoot: true
          volumes:
            - name: nginx-configs
              configMap:
                name: nginx
                items:
                  - key: headers.conf
                    path: headers.conf
    EOF
  4. 您可以运行以下命令来验证三个副本是否已成功启动:

    $ oc get pods -n $NAMESPACE
  5. 使用以下示例命令为 nginx 测试应用程序创建 LoadBalancer 服务:

    $ oc create -n $NAMESPACE -f - <<EOF
    apiVersion: v1
    kind: Service
    metadata:
      name: nginx
    spec:
      ports:
      - port: 81
        targetPort: 8080
      selector:
        app: nginx
      type: LoadBalancer
    EOF
    注意

    您必须确保 port 参数是一个主机端口,不被其他 LoadBalancer 服务或 MicroShift 组件的红帽构建。

  6. 运行以下命令,验证服务文件是否存在,是否正确分配了外部 IP 地址,并且外部 IP 与节点 IP 相同:

    $ oc get svc -n $NAMESPACE

    输出示例

    NAME    TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)        AGE
    nginx   LoadBalancer   10.43.183.104   192.168.1.241   81:32434/TCP   2m

验证

  • 以下命令使用 LoadBalancer 服务配置的外部 IP 地址形成五个到示例 nginx 应用程序的连接。命令的结果是这些服务器 IP 地址的列表。使用以下命令验证负载均衡器是否向所有正在运行的应用程序发送请求:

    EXTERNAL_IP=192.168.1.241
    seq 5 | xargs -Iz curl -s -I http://$EXTERNAL_IP:81 | grep X-Server-IP

    如果负载均衡器成功将流量分发到应用程序,则上一命令的输出包含不同的 IP 地址,例如:

    输出示例

    X-Server-IP: 10.42.0.41
    X-Server-IP: 10.42.0.41
    X-Server-IP: 10.42.0.43
    X-Server-IP: 10.42.0.41
    X-Server-IP: 10.42.0.43

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.