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

通過使用已有CLB的服務公開Kubernetes應用

CLB支持在ACK集群中使用,通過LoadBalancer類型Service暴露應用。通過阿里云傳統型負載均衡CLB(Classic Load Balancer)暴露的服務(Service),在集群外可通過域名或<IP:服務端口>的方式訪問服務,在集群內可通過<服務名:服務端口>的方式訪問服務。本文以Nginx應用為例,介紹如何通過使用已有CLB的服務來公開應用。

前提條件

已存在通過CLB控制臺創建的CLB實例,且該實例與Kubernetes集群處于同一地域。如果沒有創建,請參見創建和管理CLB實例

背景信息

如果您集群的Cloud Controller Manager(CCM)組件版本大于等于v1.9.3,對于指定已有CLB,CCM默認不再為該CLB處理監聽。您可以通過設置service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners: "true"參數來啟用監聽配置,或者手動配置該CLB的監聽規則。

查看CCM版本的方法:

  • 使用控制臺:在集群組件管理頁面查看CCM組件版本。

    1. 登錄容器服務管理控制臺

    2. 在控制臺左側導航欄,單擊集群

    3. 集群列表頁面,在目標集群右側,選擇更多 > 運維管理 > 組件管理,進入組件管理頁簽查看CCM的版本信息。

  • 使用kubectl命令行(僅適用于專有版集群):執行以下命令查看CCM組件版本。

    kubectl get pod -n kube-system -o yaml|grep image:|grep cloud-con|uniq

注意事項

  • 被復用的CLB需要滿足以下限制條件:

    • 支持復用通過CLB控制臺創建的CLB,不支持復用CCM自動創建的CLB

    • 如果您需要在Kubernetes集群中復用私網類型的CLB,則該CLB需要和Kubernetes集群處于同一VPC下。

    • 復用CLB的地址類型必須與服務的訪問類型一致。當服務為公網訪問(即service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "internet")時,所用CLB地址類型必須為公網;當服務為內部訪問(即service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "intranet")時,所用CLB地址類型必須為私網

    • 多個服務不能同時使用一個CLB的同一個監聽端口。

  • CCM只為Type=LoadBalancer類型的服務配置CLB。對于非LoadBalancer類型的服務,則不會為其配置負載均衡。

    重要

    Type=LoadBalancer的服務變更為其他類型時,CCM會刪除為該CLB添加的配置,從而造成無法通過該CLB訪問服務。

  • CCM使用聲明式API,會在一定條件下自動根據服務的配置刷新CLB配置。當service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners: 設置為true時,您自行在CLB控制臺上修改的配置均存在被覆蓋的風險。

    重要

    請勿在CLB控制臺上手動修改Kubernetes創建并維護的CLB的任何配置,否則有配置丟失的風險,造成服務不可訪問。

  • 已創建的LoadBalancer類型Service不支持重新指定CLB。如果您需要更換CLB,請重新創建Service。

CLB配額限制

  • CCM會為Type=LoadBalancer類型的Service創建CLB。默認情況下一個用戶可以保有60個CLB實例。

  • CCM會根據Service中定義的端口創建CLB監聽。默認情況下一個CLB實例可以添加50個監聽。

  • CCM會根據Service的配置將ECS掛載到CLB后端服務器組中。

    • 默認情況下一個ECS實例可掛載的后端服務器組的數量為50個。

    • 默認情況下一個CLB實例可以掛載200個后端服務器。

    說明

    如需更大配額,您可以前往配額管理頁面,并根據控制臺提示申請配額。

    關于更多CLB使用限制,請參見使用限制

步驟一:部署示例應用

以下應用部署通過kubectl命令行方式進行。如果您需要通過控制臺部署應用,請參見創建無狀態工作負載Deployment

  1. 使用以下示例應用的YAML內容,創建名為my-nginx.yaml文件。

    apiVersion: apps/v1 # for versions before 1.8.0 use apps/v1beta1
    kind: Deployment
    metadata:
      name: my-nginx    #示例應用的名稱。
      labels:
        app: nginx
    spec:
      replicas: 3       #設置副本數量。
      selector:
        matchLabels:
          app: nginx     #對應服務中Selector的值需要與其一致,才可以通過服務公開此應用。
      template:
        metadata:
          labels:
            app: nginx
        spec:
        #  nodeSelector:
        #    env: test-team
          containers:
          - name: nginx
            image: registry.aliyuncs.com/acs/netdia:latest     #替換為您實際的鏡像地址,格式為:<image_name:tags>。
            ports:
            - containerPort: 80                                #需要在服務中暴露該端口。
  2. 執行以下命令,部署示例應用my-nginx。

    kubectl apply -f my-nginx.yaml
  3. 執行以下命令,確認示例應用狀態正常。

    kubectl get deployment my-nginx

    返回結果示例:

    NAME       READY   UP-TO-DATE   AVAILABLE   AGE
    my-nginx   3/3     3            3           50s

步驟二:通過使用已有CLB的服務公開應用

您可以通過控制臺和kubectl兩種方式來創建LoadBalancer類型的服務,并通過其公開應用。

控制臺方式

  1. 登錄容器服務管理控制臺

  2. 在控制臺左側導航欄,單擊集群

  3. 集群列表頁面,單擊目標集群名稱或者目標集群右側操作列下的詳情

  4. 在集群管理頁左側導航欄,選擇網絡 > 服務

  5. 服務頁面,單擊右上角的創建

  6. 創建服務對話框中,設置服務的相關參數,然后單擊創建

    參數

    描述

    服務名稱

    輸入服務的名稱。

    服務類型

    選擇服務類型,即服務訪問的方式。

    強制覆蓋已有監聽:選擇是否強制覆蓋CLB上的已有監聽或者為沒有監聽的CLB自動創建監聽。

    說明
    • 如果已有負載均衡的監聽上綁定了業務,強制覆蓋可能會引發業務中斷。

    • 由于CCM目前支持的后端配置有限,無法處理一些復雜配置。如果有復雜的后端配置需求,可以在不覆蓋監聽的情況下,通過控制臺自行配置監聽。

    如存在以上兩種情況不建議強制覆蓋監聽;如果已有負載均衡的監聽端口不再使用,則可以強制覆蓋。

    外部流量策略

    設置外部流量策略。

    • Local:流量只發給本機的Pod。

    • Cluster:流量可以轉發到集群中其他節點上的Pod。

    說明

    您的服務類型為節點端口或負載均衡時,才能設置外部流量策略。

    服務關聯

    選擇關聯該服務要綁定的后端應用。

    端口映射

    添加服務端口(對應Service YAML文件中的port)和容器端口(對應Service YAML文件中的targetPort),容器端口需要與后端的Pod中暴露的容器端口一致。

    注解

    為該服務添加一個注解(Annotation),配置負載均衡的參數。

    標簽

    為該服務添加一個標簽,標識該服務。

    服務頁面,可以看到新創建的服務。

  7. 服務頁面,單擊目標服務名稱,進入服務詳情頁面,在基本信息區域,單擊該服務的外部端點,例如39.106.XX.XX:80,訪問示例應用。

Kubectl方式

  1. 使用以下示例服務的YAML內容,創建名為my-nginx-svc.yaml的文件。

    • 修改service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id,請替換${YOUR_LB_ID}為您通過負載均衡管理控制臺創建的CLB實例ID。

    • 使用已有的CLB實例時,默認情況下不會為該CLB創建監聽或覆蓋已有監聽。如有需要,請設置service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listenerstrue。本示例中,CLB實例為新創建,需要為其創建監聽,因此設為true。更多注解請參見通過Annotation配置傳統型負載均衡CLB

    • selector修改為my-nginx.yaml示例應用文件中matchLabels的值(即:app: nginx),從而將該服務關聯至后端應用。

    apiVersion: v1
    kind: Service
    metadata:
      annotations:
        service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: ${YOUR_LB_ID}
        service.beta.kubernetes.io/alicloud-loadbalancer-force-override-listeners: 'true'
      labels:
        app: nignx
      name: my-nginx-svc
      namespace: default
    spec:
      ports:
      - port: 80
        protocol: TCP
        targetPort: 80
      selector:
        app: nginx
      type: LoadBalancer
  2. 執行以下命令創建名為my-nginx-svc的服務,并通過其公開應用。

    kubectl apply -f my-nginx-svc.yaml
  3. 執行以下命令確認LoadBalancer類型的服務創建成功。

    kubectl get svc my-nginx-svc

    返回結果示例:

    NAME           TYPE           CLUSTER-IP    EXTERNAL-IP      PORT(S)        AGE
    my-nginx-svc   LoadBalancer   172.21.5.82   39.106.XX.XX     80:30471/TCP   5m
  4. 執行curl <YOUR-External-IP>命令訪問示例應用,請將YOUR-External-IP替換為上面獲取到的EXTERNAL-IP地址。