百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

使用 AWS 负载均衡器和 Ingress 自动化应用程序负载均衡器

bigegpt 2024-09-03 11:04 3 浏览

本文将帮助您在 Elastic Kubernetes Service (EKS) 上使用 AWS 负载均衡器控制器和 Ingress 模板自动化创建和配置 ALB 的过程。

自动化 AWS 负载均衡器对于有效管理云基础设施至关重要。本文深入探讨了使用 AWS Load Balancer 控制器和Ingress 模板实现自动化的重要性。无论您是新手还是经验丰富,掌握这些配置对于简化 Amazon Web Services 上的负载均衡器设置、确保更顺畅、更有效的设置至关重要。

负载均衡器充当客户端的主要联系点,将传入流量分配到各个可用区中的多个目标(例如EC2 实例)。这增强了应用程序的可用性。配置有协议和端口的侦听器检查客户端连接请求。为每个侦听器设置的规则指示负载均衡器如何根据条件将请求路由到已注册的目标。优先规则包括要执行的操作。每个侦听器都需要一个默认规则,并且可以选择定义其他规则以增强控制。

入口模板

Ingress 模板在 AWS 负载均衡器管理中至关重要,可简化配置流程以提高效率。这些模板定义了规定流量如何定向到服务的规则。它们对于确保最佳资源利用和维护安全至关重要。通过 Ingress Templates,您可以轻松指定路由策略、管理后端服务以及实施健康检查。例如,您可以创建规则以将流量引导至特定产品或 AWS 账户。本节探讨 AWS 中入口模板的必要性并提供示例规则,说明它们在负载均衡器配置中的重要性。

AWS 负载均衡器控制器

AWS 负载均衡器控制器是在 AWS 环境中高效管理应用程序负载均衡器 (ALB) 的关键组件。它充当Kubernetes 集群和 AWS 服务之间的桥梁,直接通过 Kubernetes 清单简化 ALB 的部署和管理。该控制器对于自动化负载均衡器配置至关重要,可确保 Kubernetes 工作负载与 AWS 基础设施的无缝集成。通过使用AWS负载均衡器控制器,用户可以增强可扩展性,减少人工干预,并优化AWS生态系统中Kubernetes集群上运行的应用程序的性能。

创建入口模板

为 AWS 负载均衡器制作 Ingress 模板涉及几个关键组件,以确保有效配置。

  1. 规则: 定义路由规则,指定如何根据路径或主机引导流量。
  2. 后端服务:指定处理流量的后端服务,包括服务名称和端口。
  3. 健康检查:实施健康检查,确保后端服务的可用性和可靠性。

我们将逐步介绍每个组件,详细说明其重要性并提供示例来为 AWS 负载均衡器创建全面的 Ingress 模板。这种分步方法可确保根据您的特定应用需求量身定制结构良好且功能齐全的配置。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: sample-ingress
  annotations:
    kubernetes.io/ingress.class: "alb"
    alb.ingress.kubernetes.io/scheme: "internet-facing or internal"
    alb.ingress.kubernetes.io/certificate-arn: "arn:aws:acm:your-region:your-account-id:certificate/your-acm-cert-arn"
spec:
  rules:
    - host: "*"
      http:
        paths:
          - path: /*
            pathType: Prefix
            backend:
              service:
                name: default-service
                port:
                  number: 80
          - path: /products
            pathType: Prefix
            backend:
              service:
                name: products-service
                port:
                  number: 80
          - path: /accounts
            pathType: Prefix
            backend:
              service:
                name: accounts-service
                port:
                  number: 80
  • metadata:指定 Ingress 的名称并包含 AWS 特定设置的注释。
  • kubernetes.io/ingress.class: "alb":指定要使用的 Ingress 类,指示 AWS ALB Ingress Controller 应管理 Ingress。
  • alb.ingress.kubernetes.io/scheme: “internet-facing”或“internal”:确定 ALB 是面向互联网还是内部网络。
    选项:
  • “internet-facing”:可通过互联网访问 ALB。
  • “internal”:ALB 是内部的,无法通过 Internet 访问
  • alb.ingress.kubernetes.io/certificate-arn: "arn:aws:acm:your-region:your-account-id:certificate/your-acm-cert-arn":指定该证书的 ARN(Amazon Resource Name)与 ALB 关联的ACM(AWS Certificate Manager) 证书。
  • spec.rules:定义基于主机的路由规则。/* 规则将流量定向到默认服务,而 /products 和 /accounts 对于产品和帐户服务具有特定规则。
  • pathType:指定路径的匹配类型。
  • backend.service.name backend.service.port:指定每个规则的后端服务。

AWS 负载均衡器控制器

AWS 负载均衡器控制器是帮助管理 Kubernetes 集群的弹性负载均衡器的控制器。它通过配置应用程序负载均衡器来满足 Kubernetes Ingress 资源的需求。

有关 AWS 负载均衡器的更多信息,请参阅AWS 负载均衡器控制器。

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app.kubernetes.io/component: controller
    app.kubernetes.io/name: aws-load-balancer-controller
  name: aws-load-balancer-controller
  namespace: alb-ingress
spec:
  replicas: 1
  selector:
    matchLabels:
      app.kubernetes.io/component: controller
      app.kubernetes.io/name: aws-load-balancer-controller
  template:
    metadata:
      labels:
        app.kubernetes.io/component: controller
        app.kubernetes.io/name: aws-load-balancer-controller
    spec:
      containers:
        - args:
            - --cluster-name=@@env: <<your EKS cluster name>>
            - --ingress-class=alb
          image: public.ecr.aws/eks/aws-load-balancer-controller:v2.5.2
          livenessProbe:
            failureThreshold: 2
            httpGet:
              path: /healthz
              port: 61779
              scheme: HTTP
            initialDelaySeconds: 30
            timeoutSeconds: 10
          name: controller
          ports:
            - containerPort: 9443
              name: webhook-server
              protocol: TCP
          resources:
            limits:
              cpu: 200m
              memory: 700Mi
            requests:
              cpu: 100m
              memory: 300Mi
          securityContext:
            allowPrivilegeEscalation: false
            readOnlyRootFilesystem: true
            runAsNonRoot: true
          volumeMounts:
            - mountPath: /tmp/k8s-webhook-server/serving-certs
              name: cert
              readOnly: true
      priorityClassName: system-cluster-critical
      securityContext:
        fsGroup: 1337
      serviceAccountName: lineplanner-alb-ingress-controller
      terminationGracePeriodSeconds: 10
      volumes:
        - name: cert
          secret:
            defaultMode: 420
            secretName: aws-load-balancer-webhook-tls
---
apiVersion: v1
kind: Service
metadata:
  labels:
    app.kubernetes.io/name: aws-load-balancer-controller
  name: aws-load-balancer-webhook-service
  namespace: alb-ingress
spec:
  ports:
    - port: 443
      targetPort: 9443
  selector:
    app.kubernetes.io/component: controller
    app.kubernetes.io/name: aws-load-balancer-controller 

使用“kubectl apply ”命令应用 AWS 负载均衡器和 Ingress 模板YAML文件,如下面的代码片段中所指定。

kubectl apply -f ingress-file.yaml
kubectl apply -f aws-alb-controller.yaml

检查部署状态并监控事件以确保配置成功。

# To verify AWS Load Balancer controller deployment status
kubectl get pods -n abl-ingress

# To verify ingress deployment status
kubectl get ingress
kubectl describe ingress <<your-ingress-name>>

通过 AWS 控制台或 CLI 确认 AWS 负载均衡器的创建和配置。

aws elbv2 describe-load-balancers --names <<your-load-balancer-name>>

结论

本文重点介绍了使用 AWS 控制器和 Ingress 模板实现 AWS 负载均衡器自动化的关键作用。AWS 控制器提供的无缝编排简化了配置,提高了效率和可扩展性。入口模板在定义规则、后端服务和运行状况检查、简化负载均衡器管理方面发挥着至关重要的作用。其好处包括增强的资源利用率、可靠性以及更简单的部署过程。通过利用这些工具,用户可以优化其 AWS 基础设施,确保强大且响应迅速的应用程序环境。采用自动化,打造面向未来的弹性云架构,适应不断变化的业务需求。

-END--

欢迎关注【辉哥传书vlog】头条号,喜欢记得点赞、收藏、评论、转发哦!

相关推荐

当Frida来“敲”门(frida是什么)

0x1渗透测试瓶颈目前,碰到越来越多的大客户都会将核心资产业务集中在统一的APP上,或者对自己比较重要的APP,如自己的主业务,办公APP进行加壳,流量加密,投入了很多精力在移动端的防护上。而现在挖...

服务端性能测试实战3-性能测试脚本开发

前言在前面的两篇文章中,我们分别介绍了性能测试的理论知识以及性能测试计划制定,本篇文章将重点介绍性能测试脚本开发。脚本开发将分为两个阶段:阶段一:了解各个接口的入参、出参,使用Python代码模拟前端...

Springboot整合Apache Ftpserver拓展功能及业务讲解(三)

今日分享每天分享技术实战干货,技术在于积累和收藏,希望可以帮助到您,同时也希望获得您的支持和关注。架构开源地址:https://gitee.com/msxyspringboot整合Ftpserver参...

Linux和Windows下:Python Crypto模块安装方式区别

一、Linux环境下:fromCrypto.SignatureimportPKCS1_v1_5如果导包报错:ImportError:Nomodulenamed'Crypt...

Python 3 加密简介(python des加密解密)

Python3的标准库中是没多少用来解决加密的,不过却有用于处理哈希的库。在这里我们会对其进行一个简单的介绍,但重点会放在两个第三方的软件包:PyCrypto和cryptography上,我...

怎样从零开始编译一个魔兽世界开源服务端Windows

第二章:编译和安装我是艾西,上期我们讲述到编译一个魔兽世界开源服务端环境准备,那么今天跟大家聊聊怎么编译和安装我们直接进入正题(上一章没有看到的小伙伴可以点我主页查看)编译服务端:在D盘新建一个文件夹...

附1-Conda部署安装及基本使用(conda安装教程)

Windows环境安装安装介质下载下载地址:https://www.anaconda.com/products/individual安装Anaconda安装时,选择自定义安装,选择自定义安装路径:配置...

如何配置全世界最小的 MySQL 服务器

配置全世界最小的MySQL服务器——如何在一块IntelEdison为控制板上安装一个MySQL服务器。介绍在我最近的一篇博文中,物联网,消息以及MySQL,我展示了如果Partic...

如何使用Github Action来自动化编译PolarDB-PG数据库

随着PolarDB在国产数据库领域荣膺桂冠并持续获得广泛认可,越来越多的学生和技术爱好者开始关注并涉足这款由阿里巴巴集团倾力打造且性能卓越的关系型云原生数据库。有很多同学想要上手尝试,却卡在了编译数据...

面向NDK开发者的Android 7.0变更(ndk android.mk)

订阅Google官方微信公众号:谷歌开发者。与谷歌一起创造未来!受Android平台其他改进的影响,为了方便加载本机代码,AndroidM和N中的动态链接器对编写整洁且跨平台兼容的本机...

信创改造--人大金仓(Kingbase)数据库安装、备份恢复的问题纪要

问题一:在安装KingbaseES时,安装用户对于安装路径需有“读”、“写”、“执行”的权限。在Linux系统中,需要以非root用户执行安装程序,且该用户要有标准的home目录,您可...

OpenSSH 安全漏洞,修补操作一手掌握

1.漏洞概述近日,国家信息安全漏洞库(CNNVD)收到关于OpenSSH安全漏洞(CNNVD-202407-017、CVE-2024-6387)情况的报送。攻击者可以利用该漏洞在无需认证的情况下,通...

Linux:lsof命令详解(linux lsof命令详解)

介绍欢迎来到这篇博客。在这篇博客中,我们将学习Unix/Linux系统上的lsof命令行工具。命令行工具是您使用CLI(命令行界面)而不是GUI(图形用户界面)运行的程序或工具。lsoflsof代表&...

幻隐说固态第一期:固态硬盘接口类别

前排声明所有信息来源于网络收集,如有错误请评论区指出更正。废话不多说,目前固态硬盘接口按速度由慢到快分有这几类:SATA、mSATA、SATAExpress、PCI-E、m.2、u.2。下面我们来...

新品轰炸 影驰SSD多款产品登Computex

分享泡泡网SSD固态硬盘频道6月6日台北电脑展作为全球第二、亚洲最大的3C/IT产业链专业展,吸引了众多IT厂商和全球各地媒体的热烈关注,全球存储新势力—影驰,也积极参与其中,为广大玩家朋友带来了...