首页 > 其他分享 >K8S实现发布和回滚三种方案对比

K8S实现发布和回滚三种方案对比

时间:2025-01-18 20:22:50浏览次数:1  
标签:回滚 name apps 三种 xiuxian 版本 K8S spec metadata

蓝绿部署、灰度发布、金丝雀发布和 A/B 测试的 K8S 实现方案

1. 蓝绿部署

  • 特点:蓝绿部署的核心思想是同时部署两个版本的应用(蓝环境和绿环境),但在某一时刻只有一个环境对外提供服务,另一环境处于待命状态,准备随时切换。
  • 缺点:一套环境空跑,资源浪费。

K8S实现蓝绿发布方案

  1. 基于控制器创建蓝版本的应用。
  2. 为蓝版本的 Pod 创建 Service(xiuxian-svc)。
  3. 基于控制器创建绿版本的应用。
  4. 修改 Service 的标签选择器指向绿版本。

部署步骤

  1. 部署蓝版本应用

    apiVersion: v1
    kind: ReplicationController
    metadata:
      name: xiuxian-blue
    spec:
      replicas: 3
      selector:
        apps: xiuxian
      template:
        metadata:
          labels:
            apps: xiuxian
        spec:
          containers:
          - image: registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1
            name: xiuxian
    
  2. 访问测试
    使用以下命令测试蓝版本的 Service:

    kubectl get svc
    while true; do curl 10.200.138.186; sleep 0.5; done
    
  3. 部署绿版本
    创建绿版本的配置:

    apiVersion: v1
    kind: ReplicationController
    metadata:
      name: xiuxian-green
    spec:
      replicas: 3
      selector:
        apps: green
      template:
        metadata:
          labels:
            apps: green
        spec:
          containers:
          - image: registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v2
            name: xiuxian
    
  4. 切换版本
    修改 xiuxian-svc 的选择器指向 green 版本:

    apiVersion: v1
    kind: Service
    metadata:
      name: xiuxian-svc
    spec:
      type: ClusterIP
      selector:
        apps: green
      ports:
      - port: 80
        targetPort: 80
    
  5. 删除测试环境
    使用以下命令删除创建的应用:

    kubectl delete -f .
    

2. 灰度发布 | 金丝雀发布

  • 特点:灰度发布是逐步替换旧版本,不会一次性全量替换,而是逐步升级一部分应用进行测试,最终完成替换。
  • 缺点:无法细粒度控制更新范围。

K8S实现灰度发布方案

  1. 部署旧版本:创建并设置副本数为 3。
  2. 创建 Service:将 xiuxian-svc 与旧版本关联。
  3. 部署新版本:创建并设置副本数为 1。
  4. 更新副本数:逐步将旧版本副本数减少,增加新版本副本数。

部署步骤

  1. 部署旧版本

    apiVersion: v1
    kind: ReplicationController
    metadata:
      name: xiuxian-old
    spec:
      replicas: 3
      selector:
        apps: v1
      template:
        metadata:
          labels:
            apps: v1
            school: oldboyedu
        spec:
          containers:
          - image: registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1
            name: xiuxian
    
  2. 部署新版本

    apiVersion: v1
    kind: ReplicationController
    metadata:
      name: xiuxian-new
    spec:
      replicas: 1
      selector:
        apps: v2
      template:
        metadata:
          labels:
            apps: v2
            school: oldboyedu
        spec:
          containers:
          - image: registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v2
            name: xiuxian
    
  3. 逐步替换旧版本
    修改副本数,逐步减少旧版本副本数并增加新版本副本数:

    kubectl edit rc xiuxian-old # 修改旧版本副本数
    kubectl edit rc xiuxian-new # 修改新版本副本数
    
  4. 观察 Pod 访问情况
    在这一过程中,新版本和旧版本会共存,逐步替换。

3. A/B 测试

  • 特点:A/B 测试允许一部分用户访问新版本,主要用于测试不同版本的效果。
  • 缺点:需要额外的组件支持,例如 Istio 插件来进行流量分配和管理。

K8S实现 A/B 测试
使用 Istio 或其他流量管理工具,可以根据不同的请求路径或其他条件将流量分发到不同版本的应用。


标签:回滚,name,apps,三种,xiuxian,版本,K8S,spec,metadata
From: https://www.cnblogs.com/leojazz/p/18678791

相关文章

  • k8s的名称空间
    1.什么是名称空间?通过工作中的这段时间,复习一下k8s的名称空间,在K8s中,名称空间是用于隔离集群资源的机制。Kubernetes集群中的一些资源支持名称空间,而一些资源不支持名称空间。那些支持名称空间的资源被称为局部资源,而不支持名称空间的资源则是全局资源。如何判定资源是否支......
  • k8s的五大组件
    Kubernetes核心组件及其功能Kubernetes(K8s)是一个强大的容器编排平台,能够自动化容器化应用程序的部署、扩展和管理。其架构由多个组件协作完成,以下是Kubernetes的五大核心组件及其功能。1.APIServer(kube-apiserver)作用:Kubernetes的所有请求都会通过APIServer,它是集......
  • k8s集成MinIo
    本篇文章分享一下在k8s怎么集成 minio做存储,并实现PersistentVolume(PV)、PersistentVolumeClaim(PVC)、动态存储卷StorageClass,以及演示让pod使用这些存储卷的完整流程。一、理论1、PV概念PV是对K8S存储资源的抽象,PV一般由运维人员创建和配置,供容器申请使用。没有PV......
  • JS上传文件夹的三种解决方案
    要求:免费,开源,技术支持技术:百度webuploader,分块,切片,断点续传,秒传,MD5验证,纯JS实现,支持第三方软件集成前端:vue2,vue3,vue-cli,html5,webuploader后端:asp.net,.netmvc,.netcore,asp,jsp,java,springboot,php,数据库:MySQL,Oracle,SQLServer,达梦,人大金仓,国产数据库平......
  • Kubernetes (K8s) 权限管理指南
    1.引言Kubernetes(K8s)作为当今最流行的容器编排平台,其安全性至关重要。本指南旨在全面介绍K8s的权限管理机制,帮助具有一定基础的读者深入理解并掌握这一关键领域。©ivwdcwso(ID:u012172506)2.Kubernetes安全模型概述K8s的安全模型主要包括三个阶段:认证(......
  • 大一计算机的自学总结:二叉树三种序的非递归遍历
    前言二叉树的递归遍历在我上一篇“二叉树及其三种序的递归遍历”里有。其中用到的“BinaryTree”也在链接文章的“二叉树的创建”里。大一计算机的自学总结:二叉树及其三种序的递归遍历而非递归遍历是借助栈的特性,会更难更复杂。TvT......一、先序遍历#include<bits/stdc++.......
  • Kubernetes(k8s)和Docker Compose本质区别
    Kubernetes(简称k8s)和DockerCompose是容器编排领域的两大重要工具,虽然它们都用于管理和编排容器化应用,但在设计目标、功能特性、使用场景和复杂度上存在显著差异。以下将从多个方面详细探讨Kubernetes和DockerCompose的本质区别。一、设计目标与应用场景1.KubernetesK......
  • 云原生&K8S&confing泄露&etcd&proxy
    一、Etcd未授权访问攻击port:2379;默认通过证书认证,主要存放节点的数据,如一些token证书。第一种情况:没有配置--client-cert-path参数打开证书验证(或者改为false),暴露外Etcd服务存在未授权访问风险;暴露外部可以访问,直接未授权访问获取secrets和token利用;第二种在打开证书......
  • 【k8s面试题2025】1、练气期
    主要通过呼吸吐纳等方法,将外界的天地灵气吸入体内,初步改造身体,使身体素质远超常人。文章目录docker和虚拟机的不同Kubernetes和docker的关系Kube-proxyIPVS和iptables的异同蓝绿发布Kubernetes中常见的数据持久化方式关于Dockerfile中`COPY`和`ADD`指令......
  • CentOS7.8安装k8s.210708
    1,安装docker/kubelet#在master节点和worker节点都要执行#最后一个参数1.20.6用于指定kubenetes版本,支持所有1.20.x版本的安装#腾讯云dockerhub镜像#exportREGISTRY_MIRROR="https://mirror.ccs.tencentyun.com"#DaoCloud镜像#exportREGISTRY_......