本文主要介绍在虚拟节点上部署Ingress应用,使得集群无需创建新节点即可为该应用扩充无限容量,满足业务高峰低谷的弹性需求。

前提条件

您已经部署了一个虚拟节点。请参见虚拟节点

您已经给namespace vk打上virtual-node-affinity-injection: enabled标签。请参见通过配置namespace标签的方式创建Pod

操作步骤

  1. 登录 容器服务管理控制台
  2. 在 Kubernetes 菜单下,单击左侧导航栏中的应用 > 无状态,单击右上角的使用模板创建
  3. 选择所需的集群和命名空间vk,选择样例模板或自定义,然后单击创建

    您可以使用如下 yaml 示例模板创建Ingress。
    apiVersion: extensions/v1beta1
    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: extensions/v1beta1
    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: extensions/v1beta1
    kind: Ingress
    metadata:
      name: cafe-ingress
    spec:
      rules:
      - host: cafe.example.com
        http:
          paths:
          - path: /tea
            backend:
              serviceName: tea-svc
              servicePort: 80
          - path: /coffee
            backend:
              serviceName: coffee-svc
              servicePort: 80

预期结果

  • 在 Kubernetes 菜单下,单击左侧导航栏的应用 > 无状态,选择目标集群和命名空间,可以看到刚刚创建的coffeetea

  • 在 Kubernetes 菜单下,单击左侧导航栏的应用 > 容器组,选择目标集群和命名空间,可以看到 Pod 都运行在 Virtual-Kubelet 节点上。

  • 在 Kubernetes 菜单下,单击左侧导航栏的路由与负载均衡 > 路由,选择目标集群和命名空间,可以看到刚刚创建的路由。

  • 您可以执行如下命令,确保可以访问 Ingress 应用。
    kubectl -n vk get ing
    curl -H "Host:cafe.example.com" <EXTERNAL_IP>/tea
    curl -H "Host:cafe.example.com" <EXTERNAL_IP>/coffee