日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

如何通過自建Kubernetes集群使用ALB Ingress

本文指導您如何在阿里云云上自建的Kubernetes集群中通過ALB Ingress,來使用阿里云應用型負載均衡ALB(Application Load Balancer)產品。

場景示例

本文以下圖場景為例。您已依托阿里云云上資源自建Kubernetes集群,并希望該集群可以通過ALB Ingress轉發請求。

您可以通過在自建Kubernetes集群中部署alb-ingress-controller,并創建Ingress和Service資源;alb-ingress-controller會根據Kubernetes集群內的服務配置,將Ingress以轉發規則的形式同步到ALB上,同時會通過監聽集群的APIServer來觀察Ingress的后續變更,并將相應的變化同步到ALB上。ALB感知到變化會動態地將相應流量轉發到集群內對應的Pod上。更多信息,請參見ALB Ingress概述

ALB Ingress場景示例

注意事項

  • 如果您使用的是Overlay類型的網絡插件,如Flannel,則ALB Ingress后端Service服務僅支持NodePort和LoadBalancer類型。

  • AlbConfig、Namespace、Ingress和Service這些資源的名稱不能以aliyun開頭。

前提條件

  • 您已擁有阿里云云上自建Kubernetes v1.20版本以上集群,并可通過kubectl工具連接該集群。關于如何下載和安裝kubectl工具,請參見安裝和設置kubectl

  • 您已為云上自建集群開啟SNAT公網訪問能力。具體操作,請參見使用公網NAT網關SNAT功能訪問互聯網

  • 云上自建的集群使用controller鏡像時,請注意:

配置步驟

配置步驟

以下步驟涉及文件修改,請您了解對應的文件名稱和用途。

步驟

文件名稱

文件用途

步驟一:部署alb-ingress-controller

load-balancer-controller.yaml

基于模板修改

用于部署alb-ingress-controller

步驟二:創建AlbConfig及IngressClass資源

alb.yaml

自建并修改

用于創建albconfig及ingressClass資源,并同步完成ALB實例的創建

步驟三:部署測試應用

test-service.yaml

自建并修改

用于部署測試服務

步驟四:創建Ingress

test-ingress.yaml

自建并修改

用于創建Ingress

步驟一:部署alb-ingress-controller

說明

受運營商網絡的影響,拉取Deployment鏡像可能出現拉取失敗的情況。為此,您可以使用私有鏡像,根據開源文檔如何從源碼進行controller的部署自行編譯上傳。

本文中alb-ingress-controller使用InCluster模式啟動,通過配置監聽Service、Endpoint、Node等資源的權限,使用load-balancer-controller.yaml文件部署alb-ingress-controller,相關的ServiceAccount、Deployment、ConfigMap已經預置,您只需要針對實際情況執行以下修改。

  1. 修改load-balancer-controller.yaml文件,將Deployment對應的鏡像修改為可用的鏡像地址。

    load-balancer-controller.yaml文件用于部署alb-ingress-controller。

    修改前:

    image: ${path/to/your/image/registry}

    修改后:

    image: alibabacloudslb/alibaba-load-balancer-controller:v1.2.0  #已完成x86編譯的鏡像
  2. 修改load-balancer-controller.yaml文件,在ConfigMap中配置AccessKey ID與AccessKey Secret。

    說明

    您可以使用需要創建ALB實例的阿里云賬號登錄RAM控制臺,然后在AccessKey頁面查看AccessKey ID與AccessKey Secret。

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: load-balancer-config
      namespace: kube-system
    data:
      cloud-config.conf: |-
           {
               "Global": {
                   "AccessKeyID": "VndV***", # 需要base64編碼
                   "AccessKeySecret": "UWU0NnUyTFdhcG***" # 需要base64編碼
               }
           }
                            
  3. 通過kubectl連接集群,執行以下命令,提交修改后的load-balancer-controller.yaml文件進行部署。

    kubectl apply -f load-balancer-controller.yaml

    預期輸出:

    clusterrole.rbac.authorization.k8s.io/system:load-balancer-controller created
    serviceaccount/load-balancer-controller created
    clusterrolebinding.rbac.authorization.k8s.io/system:load-controller-manager created
    configmap/load-balancer-config created
    deployment.apps/load-balancer-controller created
  4. 執行以下命令驗證alb-ingress-controller部署結果。

    kubectl -n kube-system get all | grep load-balancer

    如下圖所示,pod運行狀態為Running,表示部署成功。

    alb-ingress-controller部署驗證

步驟二:創建AlbConfig及IngressClass資源

創建albconfig及ingressClass資源成功后,即可同步完成ALB實例的創建。

  1. 創建alb.yaml文件并復制以下內容到該文件中。

    alb.yaml用于創建AlbConfig及IngressClass資源。

    apiVersion: alibabacloud.com/v1
    kind: AlbConfig
    metadata:
      name: alb-demo
    spec:
      config:
        name: alb-test             #alb-test為ALB實例名稱
        addressType: Internet      #Intranet表示私網,Internet表示公網 。
        zoneMappings:
        - vSwitchId: vsw-wz9e2usil7e5an1xi****    #ALB需要至少兩個可用區的交換機ID
        - vSwitchId: vsw-wz92lvykqj1siwvif****
      listeners:
        - port: 80
          protocol: HTTP
    ---
    apiVersion: networking.k8s.io/v1
    kind: IngressClass
    metadata:
      name: alb
    spec:
      controller: ingress.k8s.alibabacloud/alb
      parameters:
        apiGroup: alibabacloud.com
        kind: AlbConfig
        name: alb-demo   #指定的AlbConfig資源
    說明

    請關注以下兩個參數的配置:

    • albconfig.spec.config.addressType:表示實例網絡類型。取值:

      • Internet(默認值):表示公網。每個可用區提供一個公網IP和一個私網IP。公網ALB通過彈性公網IP(Elastic IP Address,簡稱EIP)提供公網能力,選擇公網將會收取彈性公網IP的實例費、帶寬或流量費用。

        • 彈性公網IP對外提供服務,支持通過互聯網訪問ALB

        • 私網IP,支持云上VPC內的ECS訪問ALB

      • Intranet:表示私網。每個可用區提供一個私網IP,只能通過阿里云內部網絡訪問ALB,無法從互聯網訪問。

    • spec.config.zoneMappings:用于設置ALB Ingress交換機ID,您需要至少指定兩個不同可用區交換機ID,指定的交換機必須在ALB當前所支持的可用區內。關于ALB支持的地域與可用區,請參見支持的地域與可用區

  2. 通過kubectl連接集群,執行以下命令,提交alb.yaml文件進行部署。

    kubectl apply -f alb.yaml

    預期輸出:

    AlbConfig.alibabacloud.com/alb-demo create
    ingressclass.networking.k8s.io/alb created
  3. 查看ALB實例創建結果。

步驟三:部署測試應用

本文使用測試鏡像來創建Deployment資源,并使用該Deployment資源部署測試應用。

  1. 創建test-service.yaml文件并復制以下內容到該文件中。

    test-service.yaml用于部署兩個名稱分別為test01和test02的Deployment,以及兩個名稱分別為test01和test02的Service。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: test01
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: test01
      template:
        metadata:
          labels:
            app: test01
        spec:
          containers:
          - name: test01
            image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginxdemos:latest
            ports:
            - containerPort: 80
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: test01-service
    spec:
      ports:
      - port: 80
        targetPort: 80
        protocol: TCP
      selector:
        app: test01
      type: NodePort
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: test02
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: test02
      template:
        metadata:
          labels:
            app: test02
        spec:
          containers:
          - name: test02
            image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginxdemos:latest
            ports:
            - containerPort: 80
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: test02-service
    spec:
      ports:
      - port: 80
        targetPort: 80
        protocol: TCP
      selector:
        app: test02
      type: NodePort
  2. 通過kubectl連接集群,執行以下命令,提交test-service.yaml文件進行部署。

    kubectl apply -f test-service.yaml

    預期輸出:

    deployment "test01" created
    service "test01-service" created
    deployment "test02" created
    service "test02-service" created
  3. 執行以下命令,驗證測試服務是否部署成功。

    kubectl get svc,deploy  

    如果收到以下回復,代表測試服務部署成功。部署測試服務

步驟四:創建Ingress

Ingress對應ALB實例中的轉發規則。本文使用基于路徑的轉發功能進行配置,更多高級功能請參見ALB Ingress的詳細使用手冊

  1. 創建test-ingress.yaml文件并復制以下內容到該文件中。

    test-ingress.yaml文件用于創建Ingress。

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: test-ingress
    spec:
      ingressClassName: alb
      rules:
       - host: demo.domain.ingress.top
         http:
          paths:
          - path: /test01
            pathType: Prefix
            backend:
              service:
                name: test01-service
                port:
                  number: 80
          - path: /test02
            pathType: Prefix
            backend:
              service:
                name: test02-service
                port:
                  number: 80
  2. 通過kubectl連接集群,執行以下命令,提交test-ingress.yaml文件進行部署。

    kubectl apply -f test-ingress.yaml

    預期輸出:

    ingress "test-ingress" created
  3. 執行以下命令,驗證test-ingress資源創建結果。

    kubectl get ingress

    如果收到以下回復,代表test-ingress資源創建成功。image

步驟五:結果驗證

通過域名解析訪問

  1. 將您的常用域名通過CNAME方式解析到已創建ALB實例的DNS名稱上。具體操作,請參見為ALB添加CNAME記錄

    本示例中假設您將自定義域名demo.domain.ingress.top解析到ALB實例的公網服務域名。

  2. 執行以下命令,使用ALB實例訪問test01服務。

    curl http://demo.domain.ingress.top/test01

    結果驗證1

  3. 執行以下命令,使用ALB實例訪問test02服務。

    curl http://demo.domain.ingress.top/test02

    結果驗證2

如果您在使用過程中有任何疑問,請加入釘群ALB客戶交流群(釘群號:31945843)咨詢。

相關文檔

ALB Ingress概述及功能介紹: