本文主要介绍在虚拟节点上部署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