本文主要介紹在虛擬節點上部署Ingress應用,使得集群無需創建新節點即可為該應用擴充無限容量,滿足業務高峰低谷的彈性需求。

前提條件

操作步驟

  1. 登錄容器服務管理控制臺
  2. 在控制臺左側導航欄,單擊集群
  3. 集群列表頁面,單擊目標集群名稱或者目標集群右側操作列下的詳情
  4. 在集群管理頁左側導航欄,選擇工作負載 > 無狀態
  5. 單擊右上角的使用YAML創建資源
  6. 選擇樣例模板或自定義,然后單擊創建
    樣例模板
    您可以使用如下YAML示例模板創建Ingress。
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: coffee
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: coffee
      template:
        metadata:
          labels:
            app: coffee
        spec:
          containers:
          - name: coffee
            image: nginxdemos/hello:plain-text
            ports:
            - containerPort: 80
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: coffee-svc
    spec:
      ports:
      - port: 80
        targetPort: 80
        protocol: TCP
      selector:
        app: coffee
      clusterIP: None
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: tea
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: tea
      template:
        metadata:
          labels:
            app: tea
        spec:
          containers:
          - name: tea
            image: nginxdemos/hello:plain-text
            ports:
            - containerPort: 80
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: tea-svc
      labels:
    spec:
      ports:
      - port: 80
        targetPort: 80
        protocol: TCP
      selector:
        app: tea
      clusterIP: None
    ---
    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: cafe-ingress
    spec:
      rules:
      - host: cafe.example.com
        http:
          paths:
          - path: /coffee
            pathType: Prefix
            backend:
              service:
                name: coffee-svc
                port:
                  number: 80
          - path: /tea
            pathType: Prefix
            backend:
              service:
                name: tea-svc
                port:
                  number: 80

預期結果

  • 在集群管理頁左側導航欄中,選擇工作負載 > 無狀態,可以看到剛剛創建的coffeetea
  • 在集群管理頁左側導航欄中,選擇工作負載 > 容器組,可以看到Pod都運行在Virtual-Kubelet節點上。
  • 在集群管理頁左側導航欄中,選擇網絡 > 路由,可以看到剛剛創建的路由。
  • 您可以執行如下命令,確保可以訪問Ingress應用。
    kubectl  get ing

    預期輸出:

    NAME           HOSTS              ADDRESS          PORTS   AGE
    cafe-ingress   cafe.example.com   114.55.xx.xx   80      6m18s

    執行以下命令,驗證訪問Ingress應用的"Host:cafe.example.com" <EXTERNAL_IP>/tea地址。

    curl -H "Host:cafe.example.com" <EXTERNAL_IP>/tea

    預期輸出:

    Server address: 192.168.xx.xx:80
    Server name: tea-658d56f6cc-cxxxx
    Date: 25/Sep/2020:12:36:50 +0000
    URI: /tea
    Request ID: b01d5bab9ae07abb8bc385377193xxxx

    執行以下命令,驗證訪問Ingress應用的"Host:cafe.example.com" <EXTERNAL_IP>/coffee地址。

    curl -H "Host:cafe.example.com" <EXTERNAL_IP>/coffee

    預期輸出:

    Server address: 192.168.xx.xx:80
    Server name: coffee-8c8ff9b4f-hxxxx
    Date: 25/Sep/2020:12:36:47 +0000
    URI: /coffee
    Request ID: 722fe41a65a7fb552613c56e0a9axxxx