介绍如何部署服务。

前提条件

  • 您已成功部署一个Kubernetes集群,参见创建Kubernetes 集群。
  • 您可以通过Kubectl连接到Kubernetes集群,参见通过 kubectl 连接 Kubernetes 集群。

背景信息

灰度及蓝绿发布是为新版本创建一个与老版本完全一致的生产环境,在不影响老版本的前提下,按照一定的规则把部分流量切换到新版本,当新版本试运行一段时间没有问题后,将用户的全量流量从老版本迁移至新版本。因此,这里先在集群中部署一个旧版本的服务。

操作步骤

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

    本例是一个 nginx 应用,包含一个 deployment、 service 以及 ingress。deployment 通过 NodePort 对外暴露端口,并且有一个
    ingress 正在对外提供服务。编排模板如下。

    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
      name: old-nginx
    spec:
      replicas: 2
      selector:
        matchLabels:
          run: old-nginx
      template:
        metadata:
          labels:
            run: old-nginx
        spec:
          containers:
          - image: registry.cn-hangzhou.aliyuncs.com/xianlu/old-nginx
            imagePullPolicy: Always
            name: old-nginx
            ports:
            - containerPort: 80
              protocol: TCP
          restartPolicy: Always
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: old-nginx
    spec:
      ports:
      - port: 80
        protocol: TCP
        targetPort: 80
      selector:
        run: old-nginx
      sessionAffinity: None
      type: NodePort
    ---
    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
        name: gray-release
    spec:
      rules:
      - host: www.example.com
        http:
          paths:
          # 老版本服务
          - path: /
            backend:
              serviceName: old-nginx
              servicePort: 80

  5. 创建成功后,单击左侧导航栏中的路由与负载均衡 > 路由
    您可看到虚拟主机名称指向 old-nginx。
    路由

  6. 登录 Master 节点,执行 curl 命令,查看路由的访问情况。
    curl -H "Host: www.example.com" http://<EXTERNAL_IP> 
    说明 <EXTERNAL_IP>可通过以下两种方式获取。

    • 执行以下命令获取:
      kubectl get ingress
    • 在Kubernetes菜单下,单击应用 > 路由进入路由(Ingress)页面,选择目标路由,查看对应的端点信息。
      路由