ALB Ingress 基于火山引擎应用型负载均衡(Application Load Balancer,ALB),提供更加丰富的七层负载均衡能力。本文主要介绍使用 ALB Ingress 实现业务发布的操作方法和注意事项。
k8s_
前缀的内容。k8s_
前缀的内容。apiVersion: loadbalancer.vke.volcengine.com/v1beta1 kind: ALBInstance metadata: name: alb # ALBInstance 资源名称 spec: instanceID: "alb-2dgns526uiv41fi5********" # 填写已有 ALB 实例的 ID listeners: - protocol: "HTTP" # 监听器的协议 port: 80 # 监听器协议为 HTTP 时的监听端口
说明
本例中使用已有的 ALB 实例创建 ALBInstance,采用了最简单的配置方式。更多配置,请参见 通过 kubectl 创建 ALB Ingress。
deployment-demo.yaml
代码如下:apiVersion: apps/v1 kind: Deployment metadata: name: deployment-demo # 无状态负载名称 namespace: default # 无状态负载所在的命名空间 spec: replicas: 1 # 无状态负载的副本数 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx # 容器名称 image: nginx:latest # 容器镜像地址和 Tag ports: - containerPort: 80 # 容器开放的端口号
kubectl apply -f deployment-demo.yaml
deployment-demo.yaml
代码如下:apiVersion: v1 kind: Service metadata: name: service-demo # 服务名称 spec: selector: app: nginx # 通过标签选择器将服务与后段容器组(Pod)绑定。 ports: - name: rule # 端口映射规则名称 protocol: TCP # 服务协议,支持 TCP 或 UDP port: 80 # 服务端口 nodePort: 30000 # 节点端口,取值范围为 30000~32767。 targetPort: 80 # 容器端口,即工作负载对外提供服务的端口号或端口名称,例如:Nginx 开放的默认端口号为 80 type: NodePort # 服务的类型
注意
kubectl apply -f service-demo.yaml
alb-ingress.yaml
代码如下:apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: alb-ingress-demo # 路由规则的名称 namespace: default # 路由规则所属的命名空间 spec: ingressClassName: alb # ALBInstance 的资源名称 rules: - host: example.com # 需要对外提供访问的域名 http: paths: - pathType: Prefix # 路径匹配规则,默认为 Prefix(前缀匹配) path: / # 请求匹配的路径 backend: service: name: service-demo # 需要对接的服务名称 port: number: 80 # 需要对接服务的端口号
说明
本例中使用最简单的方式创建 ALB Ingress。更多配置,请参见 通过 kubectl 创建 ALB Ingress。
kubectl apply -f alb-ingress.yaml
使用 ALB Ingress 中配置的域名访问服务。
curl http://example.com
预期结果如下,表示能够通过 ALB Ingress 访问到后端的服务。
<!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> <style> html { color-scheme: light dark; } body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h1>Welcome to nginx!</h1> <p>If you see this page, the nginx web server is successfully installed and working. Further configuration is required.</p> <p>For online documentation and support please refer to <a href="http://nginx.org/">nginx.org</a>.<br/> Commercial support is available at <a href="http://nginx.com/">nginx.com</a>.</p> <p><em>Thank you for using nginx.</em></p> </body> </html>