ASK使用ALB Ingress Controller测评

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
全局流量管理 GTM,标准版 1个月
EMR Serverless StarRocks,5000CU*H 48000GB*H
简介: ASK容器集群使用ALB 7层负载均衡

介绍:
ASK为阿里云推出的无服务器Kubernetes容器服务Serverless Kubernetes。
ALB为阿里云推出的应用型负载均衡(Application Load Balancer)
ALB Ingress Controller为阿里云应用型负载均衡ALB在容器下的组件,提供Ingress流量管理。

为什么不用Nginx Ingress Controller呢?
Nginx Ingress Controller在
livenessprobe 在高负载下容易超时失败;
开启prometheus采集指标监控后,高负载情况下容易出现OOM,导致容器被Kill。
https://help.aliyun.com/document_detail/160658.htm

测试
ALB 作为应用侧的负载均衡,肯定不会以单独的产品工作的,作为下游,前端可以部署WAF、API网关等,
作为上游,后端可以联动ACK、ASK,FAAS,SAE、ECS等产品。

ASK+ALB实践
先创建一个ASK集群。

图片.png

图片.png

注意 选择 ALB Ingress ,监控服务Arms和日志SLS等,如果是上生产也最好开通下。

如果前期没有安装ALB Ingress,创建完容器集群后也可以去组件管理页面安装ALB Ingress Controller。

配置应用
1,配置deployment、svc
demo-test-ask.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: demo-test-ask
  namespace: default
spec:
  replicas: 2
  selector:
    matchLabels:
      app: demo-test-ask
  template:
    metadata:
      labels:
        app: demo-test-ask
    spec:
      containers:
      - name: demo-test-ask
        image: registry-vpc.cn-hangzhou.aliyuncs.com/xxx/demotest-newflow_testing:20230217151402
        ports:
        - containerPort: 8080
        resources:
          limits:
            cpu: "0.2"
            ephemeral-storage: 5Gi
            memory: 0.5Gi
---
apiVersion: v1
kind: Service
metadata:
  name: demo-test
  namespace: default
spec:
  ports:
  - port: 8080
    targetPort: 8080
    protocol: TCP
  selector:
    app: demo-test-ask
  clusterIP: None

注意:
image 地址为自己的SpringBoot项目,将jar包打入到Docker镜像里,上传到阿里云镜像服务。
HTTP请求内容就是一个简单的controller:
图片.png

resources 里定义了一个0.2核,0.5G内存的资源。
service 名称为 demo-test,需要和后面ingress name一致。

执行 kubectl apply -f demo-test-ask.yaml
查看 service 和 deployment

图片.png

2,下面配置Ingress 服务

2.1 创建 AlbConfig
创建ALB实例的时候使用。
alb-test.yaml

kind: AlbConfig
metadata:
  name: default
spec:
  config:
    name: alb-test
    addressType: Internet
    zoneMappings:
    - vSwitchId: vsw-bp1b36wd3oxxx
    - vSwitchId: vsw-bp1vefgpbdxxx

addressType项:
Internet(默认值):负载均衡具有公网IP地址,DNS域名被解析到公网IP,因此可以在公网环境访问。
Intranet:负载均衡只有私网IP地址,DNS域名被解析到私网IP,因此只能被负载均衡所在VPC的内网环境访问。

此处创建一个公网的ALB,使用2个可用区。

图片.png

2.2 创建IngressClass
alb.yaml

apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
  name: alb
spec:
  controller: ingress.k8s.alibabacloud/alb
  parameters:
    apiGroup: alibabacloud.com
    kind: AlbConfig
    name: default

图片.png

3, 创建Ingress
因为第一次创建ingress,所以会自动创建ALB实例

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: demo-ingress-now
spec:
  ingressClassName: alb
  rules:
   - host: ask-hos.daily.fh-inc.com
     http:
      paths:
      # 配置Context Path
      - path: /demotest-newflow
        pathType: ImplementationSpecific
        backend:
          service:
            name: demo-test
            port:
              number: 8080

注意此处
ingressClassName: alb
是绑定到 ALB实例的,如果不指定,就无法在ALB 服务器组生成对应配置,也就无法转发,会报503
暴露host地址:ask-hos.daily.fh-inc.com,为内网测试地址,后面需要绑定hosts测试。
测试项目的请求路径为:/demotest-newflow
绑定的service 为 上面定义的demo-test

执行apply
图片.png

4,ALB实例自动创建
图片.png

图片.png

创建了 2个 EIP 公网地址和2个 VIP内网地址。
172.16.174.190
172.16.142.88
VIP地址是绑定的VSwitch定义的CIDR范围。

自动关联2个EIP

图片.png

测试应用
绑定hosts,如果本地没有打通到VPC的内网网络,可以直接绑定公网的ALB地址测试,任何一个EIP都可以。
本地测试:
返回hello world 成功

图片.png

或者使用阿里云DNS的 PrivateZone服务,VPC内都获取这个内部DNS记录

图片.png

在ECS 服务器上测试,不用绑定hosts,直接访问即可。

图片.png

另外,使用ASK后,我们的Pod都在ECI上,可以看到弹性容器实例的相关信息。

图片.png

如果接入Arms-Prometheus,能观察到Pod的状态和指标。
图片.png

相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
存储 Kubernetes 负载均衡
【Kubernetes系统原理、核心资源、Pod原理与创建及生命周期管理、Job、Cronjob、Statefulset、Service负载均衡Ingress】
【Kubernetes系统原理、核心资源、Pod原理与创建及生命周期管理、Job、Cronjob、Statefulset、Service负载均衡Ingress】
389 2
|
6月前
|
Kubernetes 负载均衡 应用服务中间件
深入理解 Kubernetes Ingress:路由流量、负载均衡和安全性配置
深入理解 Kubernetes Ingress:路由流量、负载均衡和安全性配置
1081 1
|
3月前
|
Java 应用服务中间件 测试技术
阿里云云效产品使用合集之云效流水线如何使用alb ingress的脚本
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
6月前
|
容器
在容器服务ACK中,如果你想更改ALB Ingress的域名和端口
【2月更文挑战第15天】在容器服务ACK中,如果你想更改ALB Ingress的域名和端口
74 3
|
6月前
|
Kubernetes 负载均衡 应用服务中间件
k8s学习-CKA真题-七层负载均衡Ingress
k8s学习-CKA真题-七层负载均衡Ingress
95 0
|
负载均衡 Cloud Native 算法
极致的稳定性和高可用,揭秘 ALB Ingress 云原生网关(下)
极致的稳定性和高可用,揭秘 ALB Ingress 云原生网关(下)
113 0
|
弹性计算 容灾 Cloud Native
极致的稳定性和高可用,揭秘 ALB Ingress 云原生网关(上)
极致的稳定性和高可用,揭秘 ALB Ingress 云原生网关(上)
152 0
|
负载均衡 Kubernetes 监控
直播预告丨 立即解锁 ALB Ingress 高级特性
2023年 1 月 11 日(周三)15:00--16:00,阿里云开发工程师,李宇曈(遐宇)、阿里云高级开发工程师,刘晓冬(晓冬)将为您详细介绍 ALB Ingress 的高级特性。
直播预告丨 立即解锁 ALB Ingress 高级特性
|
5月前
|
缓存 负载均衡 算法
解读 Nginx:构建高效反向代理和负载均衡的秘密
解读 Nginx:构建高效反向代理和负载均衡的秘密
122 2
|
4月前
|
负载均衡 算法 应用服务中间件
nginx自定义负载均衡及根据cpu运行自定义负载均衡
nginx自定义负载均衡及根据cpu运行自定义负载均衡
84 1