ASK使用ALB Ingress Controller测评

简介: 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

相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
7月前
|
存储 Kubernetes 负载均衡
【Kubernetes系统原理、核心资源、Pod原理与创建及生命周期管理、Job、Cronjob、Statefulset、Service负载均衡Ingress】
【Kubernetes系统原理、核心资源、Pod原理与创建及生命周期管理、Job、Cronjob、Statefulset、Service负载均衡Ingress】
361 2
|
1天前
|
Kubernetes 负载均衡 应用服务中间件
深入理解 Kubernetes Ingress:路由流量、负载均衡和安全性配置
深入理解 Kubernetes Ingress:路由流量、负载均衡和安全性配置
|
2天前
|
容器
在容器服务ACK中,如果你想更改ALB Ingress的域名和端口
【2月更文挑战第15天】在容器服务ACK中,如果你想更改ALB Ingress的域名和端口
15 3
|
2天前
|
Kubernetes 负载均衡 应用服务中间件
k8s学习-CKA真题-七层负载均衡Ingress
k8s学习-CKA真题-七层负载均衡Ingress
54 0
|
8月前
|
负载均衡 Cloud Native 算法
极致的稳定性和高可用,揭秘 ALB Ingress 云原生网关(下)
极致的稳定性和高可用,揭秘 ALB Ingress 云原生网关(下)
|
8月前
|
弹性计算 容灾 Cloud Native
极致的稳定性和高可用,揭秘 ALB Ingress 云原生网关(上)
极致的稳定性和高可用,揭秘 ALB Ingress 云原生网关(上)
|
负载均衡 Kubernetes 监控
直播预告丨 立即解锁 ALB Ingress 高级特性
2023年 1 月 11 日(周三)15:00--16:00,阿里云开发工程师,李宇曈(遐宇)、阿里云高级开发工程师,刘晓冬(晓冬)将为您详细介绍 ALB Ingress 的高级特性。
直播预告丨 立即解锁 ALB Ingress 高级特性
|
运维 Kubernetes 负载均衡
从 Nginx Ingress 窥探云原生网关选型
现今有越来越多的企业开始采纳云原生理念进行应用架构转型。而 K8s 和微服务是云原生的两大支柱,随着云原生浪潮而被广泛应用。
从 Nginx Ingress 窥探云原生网关选型
|
Kubernetes 监控 Cloud Native
K8s Ingress 为什么选择 MSE 云原生网关?|学习笔记(二)
快速学习 K8s Ingress 为什么选择 MSE 云原生网关?
206 0
K8s Ingress 为什么选择 MSE 云原生网关?|学习笔记(二)
|
2天前
|
负载均衡 算法 应用服务中间件
面试题:Nginx有哪些负载均衡算法?Nginx位于七层网络结构中的哪一层?
字节跳动面试题:Nginx有哪些负载均衡算法?Nginx位于七层网络结构中的哪一层?
49 0