使用弹性负载均衡器在 EKS 上公开 MinIO 租户服务说明

使用弹性负载均衡器在 EKS 上公开 MinIO 租户服务说明

这篇博文是关于将 MinIO 租户服务暴露给 Amazon EKS 集群之外的应用程序的系列文章的第二部分。第一篇博文概述并比较了使用弹性负载均衡器在 AWS EKS 中公开 MinIO 服务的四种方法。

软件定义的 MinIO 为 baremetal 和所有主要的 Kubernetes 平台(例如TanzuAzureGCPOpenShiftSUSE Rancher)提供分布式高性能对象存储  MinIO 与 Amazon EKS 服务原生集成,使您能够利用最流行的云和世界上最快的对象存储。MinIO 是 AWS S3 的完全直接替代品,它在 EKS 以及本地和/或其他云上运行。客户将 MinIO 用于多种用途,例如提供多租户对象存储即服务、多应用数据湖屋或 AI/ML 处理管道。

要在 EKS 上充分利用 MinIO,您需要将其 Kubernetes 服务(UI 和 API)公开给集群外部的用户和应用程序,无论是使用虚拟私有云 (VPC) 在 AWS 内部公开还是在外部公开到 Internet。

这篇博文将带您了解三个选项:经典负载均衡器、应用程序负载均衡器和网络负载均衡器。我们将向您展示如何在 EKS 上部署它们,包括对架构的讨论以及这种方法的优缺点。

使用 Classic Load Balancer 公开 MinIO 服务

要在 EKS 上使用 Classic Load Balancer 公开服务,您需要做的就是设置服务type: LoadBalancer为此,Tenant CRD具有exposeServices属性,该属性告诉 Operator 代表您处理服务的创建。

首先,我们需要一个 EKS 集群、一个 MinIO Operator 和一个 MinIO 租户。请按照通过 EKS 部署 MinIO中的说明进行操作

然后在租户清单上,我们指定exposeServices中的字段,如下例所示:

apiVersion: minio.min.io/v2
kind: Tenant

metadata:
name: minio-tenant-1
namespace: minio-tenant-1
Spec:
...
exposeServices:
  console: true
  minio: true
...

这会将控制台和 MinIO 服务类型设置为LoadBalancer,然后 EKS 将创建 2 个 Classic Load Balancer,一个用于MinIO 控制台服务,另一个用于MinIO 服务器服务,如下图所示:


Untitled (12).png


现在您可以在端口 9443 (HTTPS) 上浏览 MinIO 控制台:


Untitled (13).png


并在端口 443 (HTTPS) 上访问 MinIO API:

~ curl -k https://a380f6d1bc70241c981c0f6a6fa324cf-1463137531.us-east-1.elb.amazonaws.com
<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>AccessDenied</Code><Message>Access Denied.</Message><Resource>/</Resource><RequestId>171FE8F42987C613</RequestId><HostId>3cb3ba23-1285-4269-8f8a-678ce127d532</HostId></Error>

流量转发

EKS 为我们创建负载均衡器,并为服务公开的每个端口添加一个监听器。对于MinIO服务,EKS 在端口 443 上添加了一个侦听器,如下图所示。


Untitled (14).png


侦听器会将流量转发到集群的每个实例(也称为节点)上的同一端口。


Untitled (15).png


该服务使用Kubernetes 中运行的所有节点的端口N作为 NodePort 公开;在前面的示例中,此端口为 30144。


Untitled (16).png


Kubernetes NodePort 将接收到的流量转发给服务MinIO,然后服务将流量转发给与服务过滤器匹配的 pod。

Classic Load Balancer 创建 TCP(第 4 层)侦听器并且不过滤任何流量。


Untitled (17).png


如果您正在使用 TLS,则MinIO服务本身负责 TLS 终止。请参阅网络加密 TLS 文档以了解有关如何在 MinIO 中配置 TLS 证书的更多信息。

使用 Classic Load Balancer 公开操作员控制台

要允许使用 Classic Load Balancer 从 Kubernetes 集群外部访问 MinIO Operator Console,只需将服务类型从 ClusterIP 更改为 LoadBalancer。例如:

kubectl get service console -n minio-operator -oyaml > console.yaml

文件内容将是这样的:

apiVersion: v1
kind: Service
metadata:
annotations:
  kubectl.kubernetes.io/last-applied-configuration: |
    {"apiVersion":"v1","kind":"Service","metadata":{"annotations":{"operator.min.io/authors":"MinIO, Inc.","operator.min.io/license":"AGPLv3","operator$
  operator.min.io/authors: MinIO, Inc.
  operator.min.io/license: AGPLv3
  operator.min.io/support: https://subnet.min.io
creationTimestamp: "2022-10-20T21:33:09Z"
labels:
  name: console
name: console
namespace: minio-operator
resourceVersion: "19562"
uid: d824df76-48d7-4e20-9bb9-60970b55be5a
spec:
clusterIP: 10.100.42.174
clusterIPs:
- 10.100.42.174
internalTrafficPolicy: Cluster
ipFamilies:
- IPv4
ipFamilyPolicy: SingleStack
ports:
- name: http
  port: 9090
  protocol: TCP
  targetPort: 9090
- name: https
  port: 9443
  protocol: TCP
  targetPort: 9443
selector:
  app: console
sessionAffinity: None
type: ClusterIP
status:
loadBalancer: {}

我们需要做的就是将类型字段从 更改ClusterIPLoadBalancer

apiVersion: v1
kind: Service
spec:
...
type: LoadBalancer
...

然后应用更改:

kubectl apply -f console.yaml
service/console configured

您将在 AWS EC2 控制台中看到一个新的负载均衡器:


Untitled (18).png


负载均衡器的 DNS 主机名也可以从服务状态中获取:

kubectl get service console -n minio-operator -o jsonpath="{.status.loadBalancer.ingress[0].hostname}"
ad824df7648d74e209bb960970b55be5-230115377.us-east-1.elb.amazonaws.com

最后,要管理 MinIO,请通过浏览器在端口 9090 上列出的主机名访问 MinIO 操作员控制台。


Untitled (19).png


Classic Load Balancer 的附加服务注释

虽然 Classic Load Balancer 是 AWS EKS 上的默认负载均衡器,但有时我们需要自定义其行为。这是通过向 MinIO 服务和 MinIO 控制台服务以及 MinIO 操作员控制台服务添加注释来实现的。

Kubernetes 服务文档列出了Classic Load Balancer 的所有支持注释。

MinIO 租户控制台和 MinIO 服务注释

要向 MinIO 控制台和 MinIO 服务添加注释,我们将它们添加到租户清单中的serviceMetadata字段中。

示例:Classic Load Balancer 内部

在此示例中,我们将使用如下所示的注释将 MinIO 服务的 Classic Load Balancer 和 MinIO 控制台配置为内部类型,以允许内部流量。

apiVersion: minio.min.io/v2
kind: Tenant
metadata:
name: minio-tenant
spec:
...
serviceMetadata:
  consoleServiceAnnotations:
    service.beta.kubernetes.io/aws-load-balancer-internal: "true"
  minioServiceAnnotations:
    service.beta.kubernetes.io/aws-load-balancer-internal: "true"
...

操作员控制台服务注释

要公开 Operator Console 服务,我们需要直接对其应用注释。

示例:传统负载均衡器上的 TLS 终止


Untitled (20).png


添加以下注释将在端口 9090 上使用 AWS ACM 颁发的证书在经典负载均衡器中启用 TLS 终止,后端流量作为未加密的 HTTP 发送:

service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http
service.beta.kubernetes.io/aws-load-balancer-ssl-cert: arn:aws:acm:regn:acct:certificate/id
service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "9090"

为了实现这一点,让我们首先列出 Operator Console 服务清单。

kubectl get service -n minio-operator console -oyaml operator-console.yaml

编辑注释后,Operator Console 服务清单将如下所示:

apiVersion:v1 kind:服务元数据:注释:... service.beta.kubernetes.io/aws-load-balancer-backend-protocol:http service.beta.kubernetes.io/aws-load-apiVersion: v1
kind: Service
metadata:
annotations:
...
  service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http
  service.beta.kubernetes.io/aws-load-balancer-ssl-cert: arn:aws:acm:us-east-1:111111111111:certificate/3493eeee-850a-4010-afcf-225fb0f2a2b4
  service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "9090"
...
name: console
namespace: minio-operator
spec:
...
type: LoadBalancer

注意:为了强调本文中的重要部分并节省空间,清单的某些部分已被编辑并替换为省略号。

完成编辑后,应用更改:

kubectl apply -f operator-console.yaml
service/console configured

Classic Load Balancer 的侦听器公开端口 9090 并将证书分配给该端口,如下所示:


Untitled (21).png


现在我们可以使用带有有效公共 TLS 证书的 HTTPS 导航到操作员控制台 UI:


Untitled (22).png


经典负载均衡器注解

以下是一些最常用的 MinIO 服务注释。

内部经典负载均衡器

此注释将使负载均衡器仅在内部使用,而不是默认的面向 Internet 的负载均衡器:

service.beta.kubernetes.io/aws-load-balancer-internal: "true"

更改密码和 TLS 协议

此注释将更改 TLS 策略。当您需要某个特定密码组或 SSL 协议(如 TLS 1、TLS 1.1 或 TLS 1.2)时使用它(这里是Classic Load Balancer 的策略组列表)。

service.beta.kubernetes.io/aws-load-balancer-ssl-negotiation-policy: "ELBSecurityPolicy-TLS-1-2-2017-01"

启用 Classic Load Balancer 访问日志

service.beta.kubernetes.io/aws-load-balancer-access-log-enabled: "true"
service.beta.kubernetes.io/aws-load-balancer-access-log-emit-interval: "60"
service.beta.kubernetes.io/aws-load-balancer-access-log-s3-bucket-name: "my-bucket"

service.beta.kubernetes.io/aws-load-balancer-access-log-s3-bucket-prefix: "my-bucket-prefix/prod"


这些注释一起使您能够将 ELB 注释存储在 S3 目标中。访问日志可用于识别连接问题,以及按请求细粒度的请求详细信息,请参阅如何解释 AWS 文档中的访问日志

确保目标 S3 和 ELB 存在于同一 AWS 区域中,并且 S3 存储桶启用来自 ELB 的写入访问日志

Classic Load Balancer 的安全组

有时需要针对与负载均衡器关联的安全组进行自定义安全设置,特别是当 Kubernetes 集群是手动创建的或具有特定安全措施时,以下 2 个注释将在这些情况下提供帮助。

service.beta.kubernetes.io/aws-load-balancer-security-groups: "sg-53fae93f"

要在创建的 ELB 上配置的现有安全组列表。与注释不同service.beta.kubernetes.io/aws-load-balancer-extra-security-groups,这会替换之前分配给 ELB 的所有其他安全组,并且还会覆盖为此 ELB 创建的唯一生成的安全组。

此列表中的第一个安全组 ID 用作允许传入流量到目标工作节点(服务流量和健康检查)的源。

如果多个 ELB 配置了相同的安全组 ID,则只有一个许可行将添加到工作节点安全组,这意味着如果您删除其中任何一个 ELB,它将删除单个许可行并阻止所有 ELB 的访问共享相同的安全组 ID。

如果使用不当,这可能会导致跨服务中断

service.beta.kubernetes.io/aws-load-balancer-extra-security-groups: "sg-53fae93f,sg-42efd82e"

要添加到创建的 ELB 的附加安全组列表。

Classic Load Balancer 跨区域负载均衡

service.beta.kubernetes.io/aws-load-balancer-cross-zone-load-balancing-enabled: "true"

跨区域负载平衡在所有可用区中的所有后端实例之间平均分配流量

Classic Load Balancer 中的端到端 TLS 加密


Untitled (23).png


service.beta.kubernetes.io/aws-load-balancer-ssl-cert: certificate-arn

即使可以使用注释将 AWS ACM 颁发的证书分配给经典负载均衡器service.beta.kubernetes.io/aws-load-balancer-ssl-cert以在负载均衡器中执行 TLS 终止,但为了让经典负载均衡器信任后端服务 (MinIO),它需要该服务在 pod 的 HTTPS 端口上有一个有效的公共 CA 颁发的证书,或者将 MinIO 服务的 Kubernetes 颁发的证书上传到负载均衡器作为“后端证书”以信任它。

截至目前,还没有通过注释从 EKS 中的 Kubernetes 内部自动执行此操作的方法。相反,您可以使用 AWS 控制台 UI 来创建和配置 Classic Load Balancer 创建,如下所示。


Untitled (24).png


即使我们将 MinIO 服务证书添加到负载均衡器,对负载均衡器配置的任何手动更改都可能 - 而且很可能会 - 在 MinIO Operator 的下一个协调循环中丢失。因此,当 MinIO 具有自签名证书或私有 CA 颁发的证书时,不建议在 Classic Load Balancer 上执行 TLS 终止为此,请使用 Nginx Ingress、Application Load Balancer 或 Network Load Balancer 等替代方案。

使用 Application Load Balancer 公开 MinIO 租户服务

Application Load Balancer 在 OSI 模型的应用层或第七层工作。侦听器配置为根据应用程序流量的内容将请求路由到不同的目标组。Application Load Balancer在 Classic Load Balancer 的基础上提供了多项关键增强功能,包括支持将 Lambda 函数注册为目标,以及更好的自定义和改进的性能。

首先,我们需要一个 EKS 集群,安装 MinIO Operator 和一个租户,按照通过 EKS 部署 MinIO中的说明进行操作。

在 EKS 集群上,我们需要安装 AWS 负载均衡器控制器,请参阅此处的说明

然后我们将创建一个带有适当 ALB 注释的 Ingress Manifest,请在此处查看完整的注释列表

示例:Application Load Balancer 端到端 TLS 加密


Untitled (25).png


请注意以下有关此示例的信息:

  • 创建单个 ALB,侦听端口 443。

  • tenant.exampledomain.comminio.exampledomain.com DNS 将指向同一个 ALB,使用主机名解析,ALB 入口分别将流量转发到正确的服务、控制台minio

  • 200 和 443 是健康检查的有效成功代码

  • TLS使用 ACM 管理的 SSL 证书在公共域( tenant-console.exampledomain.comminio.exampledomain.com )的 ALB 级别终止

  • 从 Application Load Balancer 到服务的流量经过 TLS 加密,即使证书无效(自签名证书或私有 CA 颁发的证书)也是如此

在下面的示例入口清单中编辑标有#replace注释的字段,以匹配您的环境所需的设置。

#tenant-ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: tenant-ingress #replace
namespace: tenant-namespace #replace
annotations:
  alb.ingress.kubernetes.io/scheme: internet-facing
  alb.ingress.kubernetes.io/certificate-arn: Certificate ARN #replace
  alb.ingress.kubernetes.io/subnets: subnet-a, subnet-b, subnet-c, subnet-d #replace
  alb.ingress.kubernetes.io/backend-protocol: HTTPS
  alb.ingress.kubernetes.io/target-type: ip
  alb.ingress.kubernetes.io/healthcheck-protocol: HTTPS
  alb.ingress.kubernetes.io/success-codes: '200,403'
spec:
ingressClassName: alb
rules:
  - host: tenant-console.exampledomain.com #replace
    http:
      paths:
        - path: /
          pathType: Prefix
          backend:
            service:
              name: tenant-namespace-console #replace tenant-namespace
              port:
                number: 9443
  - host: minio.exampledomain.com #replace
    http:
      paths:
        - path: /
          pathType: Prefix
          backend:
            service:
              name: minio
              port:
                number: 443

最后,应用清单。

kubectl apply -f tenant-ingress.yaml
ingress/tenant-ingress configured

ALB 的一个奇怪之处在于他们没有根据此 AWS 文档验证后端 TLS 证书:

“ ...您可以使用自签名证书或已过期的证书。由于负载均衡器位于虚拟私有云 (VPC) 中,负载均衡器与目标之间的流量在数据包级别进行身份验证,因此即使证书不存在,也不会面临中间人攻击或欺骗的风险在目标上是无效的。

这意味着您可以使用有效的 TLS 证书在 ALB 处执行 TLS 终止,然后在 MinIO 服务中使用自签名证书、kubernetes CA 颁发的或任何其他私有 CA 颁发的证书来启用端到端加密.

使用 Application Load Balancer 公开 MinIO 操作员控制台

使用 ALB ingress 公开 Operator Console 类似于公开租户和控制台的方式,即通过创建 ingress。

示例:在 ALB 中使用 TLS 终止的操作员控制台


Untitled (26).png


在这个例子中,我们将:

  • 将使用主机标头operator.exampledomain.com接收到的流量路由到操作员控制台服务(将自定义域替换为您自己的域)。

  • 在 ALB 上设置 TLS 终止。

  • 将 HTTP 流量转发到操作员控制台暴露的端口 9090。

在下面的示例 Ingress 清单中编辑标有#replace注释的字段以匹配您的设置。

#operator-ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: operator-ingress
namespace: minio-operator
annotations:
  alb.ingress.kubernetes.io/scheme: internet-facing
  alb.ingress.kubernetes.io/certificate-arn: Certificate ARN #replace
  alb.ingress.kubernetes.io/subnets: subnet-a,subnet-b #replace
  alb.ingress.kubernetes.io/backend-protocol: HTTP
  alb.ingress.kubernetes.io/target-type: ip
  alb.ingress.kubernetes.io/healthcheck-protocol: HTTP
  alb.ingress.kubernetes.io/success-codes: '200'
spec:
ingressClassName: alb
rules:
  - host: operator.exampledomain.com #replace
    http:
      paths:
        - path: /
          pathType: Prefix
          backend:
            service:
              name: console
              port:
                number: 9090

然后,应用清单。

kubectl apply -f operator-ingress.yaml
ingress/operator-ingress configured

使用网络负载均衡器公开 MinIO 租户服务

在 EKS 集群之外公开 MinIO 的最后一个选项是使用网络负载均衡器。

像往常一样,我们将首先创建一个 EKS 集群,安装 MinIO Operator 和一个租户。为此,您可以按照通过 EKS 部署 MinIO中的说明进行操作。

在 EKS 集群上,我们还需要安装 AWS 负载均衡器控制器,请参阅此处的说明

示例:使用网络负载均衡器公开 MinIO 服务和 MinIO 操作员控制台服务

我们将再次编辑租户清单以指定exposeServices,我们将设置注释以指定我们需要网络负载均衡器,否则 Kubernetes 将提供默认的经典负载均衡器。

serviceMetada字段中,我们为 MinIO 操作员控制台和 MinIO 服务指定注释,如本例所示:

apiVersion: minio.min.io/v2
kind: Tenant

metadata:
name: minio-tenant-1
namespace: minio-tenant-1
Spec:
...
exposeServices:
  console: true
  minio: true
...

 serviceMetadata:
  consoleServiceAnnotations:
      service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: instance

      service.beta.kubernetes.io/aws-load-balancer-scheme: internet-facing

      service.beta.kubernetes.io/aws-load-balancer-type: external
  minioServiceAnnotations:
    service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: instance

      service.beta.kubernetes.io/aws-load-balancer-scheme: internet-facing

      service.beta.kubernetes.io/aws-load-balancer-type: external


这将为 MinIO 服务创建一个网络负载均衡器,并为 MinIO 操作员控制台服务创建另一个网络负载均衡器。

网络负载均衡器将在端口 443 上为 MinIO 添加一个 TCP 侦听器,如下所示。


Untitled (27).png


网络负载均衡器侦听 TCP(第 4 层)流量。因此,网络负载均衡器不会过滤任何流量。


Untitled (28).png


MinIO 服务本身将负责 TLS 终止。如果这是您想要执行的操作,请参阅网络加密 TLS 文档以了解有关在 MinIO 中配置 TLS 证书的更多信息。

对于MinIO Operator Console服务,让我们在端口 9443 上添加一个 TCP 侦听器,如下所示。


Untitled (29).png
Untitled (30).png


如果您希望MinIO 操作员控制台服务本身负责 TLS 终止,请参阅网络加密 TLS 文档以了解如何在 MinIO 中配置 TLS 证书。

示例:在网络负载均衡器上使用 TLS 终止公开 MinIO 操作员控制台


Untitled (31).png


添加以下注释将在网络负载均衡器上设置 TLS 终止,使用 AWS ACM 颁发的证书,在端口 9090 上,后端流量作为未加密的 HTTP 流量发送:

service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: instance

service.beta.kubernetes.io/aws-load-balancer-scheme: internet-facing

service.beta.kubernetes.io/aws-load-balancer-type: external

service.beta.kubernetes.io/aws-load-balancer-backend-protocol:tcp
service.beta.kubernetes.io/aws-load-balancer-ssl-cert: arn:aws:acm:regn:acct:certificate/id
service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "9090"


让我们回到服务清单。对于这个例子,我们将使用 MinIO Operator Console 服务。

kubectl get service -n minio-operator console -oyaml > operator-console.yaml

然后,添加注释并将类型更改为LoadBalancer生成的 MinIO 操作员控制台服务描述符将如下所示:

apiVersion: v1
kind: Service
metadata:
annotations:
...

   service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: instance

   service.beta.kubernetes.io/aws-load-balancer-scheme: internet-facing

   service.beta.kubernetes.io/aws-load-balancer-type: external
  service.beta.kubernetes.io/aws-load-balancer-backend-protocol: tcp
  service.beta.kubernetes.io/aws-load-balancer-ssl-cert: arn:aws:acm:us-east-1:111111111111:certificate/3493eeee-850a-4010-afcf-225fb0f2a2b4
  service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "9090"
...
name: console
namespace: minio-operator
spec:
...
type: LoadBalancer
...

注意:清单的某些部分经过编辑并替换为省略号以缩短文件并强调相关部分。

接下来,应用清单。

kubectl apply -f operator-console.yaml
service/console configured

网络负载均衡器的侦听器公开端口 9090 并将证书分配给该端口,如下所示


Untitled (32).png


接下来,使用带有有效公共 TLS 证书的 HTTPS,使用浏览器导航到 MinIO 操作员控制台:


Untitled (33).png


网络负载均衡器的附加服务注释

您将在下面找到一些最常见的使用网络负载均衡器注释的配置。有关 AWS 网络负载均衡器服务注释的完整参考,请参阅AWS 负载均衡器控制器文档

网络负载均衡器注解

面向 Internet 的网络负载均衡器

service.beta.kubernetes.io/aws-load-balancer-scheme: "internet-facing"

此注释将使网络负载均衡器连接到互联网,而不是默认的内部连接。

子网

service.beta.kubernetes.io/aws-load-balancer-subnets: subnet-xxxx, mySubnet

使用此注释指定要与网络负载均衡器关联的子网列表。

访问日志

service.beta.kubernetes.io/aws-load-balancer-attributes: access_logs.s3.enabled=true,access_logs.s3.bucket=my-access-log-bucket,access_logs.s3.prefix=my-app

使用aws-load-balancer-attributes注释为网络负载均衡器配置访问日志。

目标类型

service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: instance

此注释指定要为网络负载均衡器配置的目标类型。您可以在instanceIP之间进行选择。

有关不同方法和用例的广泛解释,请参阅EKS 最佳实践文档中的网络。

实例模式_

这是在 Kubernetes 上公开服务的默认和最常见模式,它将流量路由到为您的服务打开的 NodePort 上集群内的所有 EC2 实例。


Untitled (34).png


在上面的示例中,所有三个节点都添加到目标组


Untitled (35).png


NLB 将流量路由到所有节点,包括 IP 为 172.0.0.3 的节点,即使它没有运行服务的 pod。各个工作节点上的 Kube-proxy 设置将流量从 NodePort 转发到服务后面的 pod。

IP模式

此模式将流量直接路由到 pod IP。AWS NLB 将流量直接发送到服务背后的 Kubernetes pod,无需通过 Kubernetes 集群中的工作节点进行额外的网络跃点。


Untitled (36).png


因为 Pod 有一个 ENI 和一个 VPC 中可达的 IP 地址,网络负载均衡器不需要通过 kube-proxy 路由流量,只路由到目标组的 pod-id:port 组合,不包括节点 IP没有运行服务的 pod。


Untitled (37).png


此模式需要在 EKS 集群上安装AWS VPC CNI 插件。

此网络(以及其他)的一些用例包括:

  • 通过 kube-proxy 减少一跳的延迟

  • IPV6支持

  • 每个 Pod 的安全组

  • 自定义网络

IPV6

service.beta.kubernetes.io/aws-load-balancer-type: "external"
service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: "ip"
service.beta.kubernetes.io/aws-load-balancer-ip-address-type: dualstack

如果您要对 IPv6 pod 进行负载平衡,请添加service.beta.kubernetes.io/aws-load-balancer-ip-address-type: dualstack注释。您只能通过 IPv6 将负载均衡到 IP 目标,而不是实例目标。没有这个注解,负载平衡是通过 IPv4 进行的。

使用 MinIO 和托管 Kubernetes 创造奇迹

这篇博文提供了向 Kubernetes 集群外的应用程序和用户公开 MinIO 操作员控制台和租户服务的详细说明。无论您是在 EKS 还是其他 Kubernetes 发行版上运行,托管与否,都可以直接部署和管理 Kubernetes 原生 MinIO。在 AWS 市场
试用MinIO 托管应用程序,或立即下载 MinIO并在本地部署。


上一篇 下一篇