目录

蓝绿发布:

实战:

1.先部署v1.0.0版本

2.再部署v2.0.0版本

3.使用svc做流量切换


蓝绿发布:

一些应用程序只需要部署一个新版本,并需要立即切到这个版本。因此,我们需要执行蓝/绿部署。在进行蓝/绿部署时,应用程序的一个新副本(绿)将与现有版本(蓝)一起部署。然后更新应用程序的入口/路由器以切换到新版本(绿)。然后,您需要等待旧(蓝)版本来完成所有发送给它的请求,但是大多数情况下,应用程序的流量将一次更改为新版本;Kubernetes不支持内置的蓝/绿部署。目前最好的方式是创建新的部署,然后更新应用程序的服务(如service)以指向新的部署;蓝绿部署是不停老版本,部署新版本然后进行测试,确认OK后将流量逐步切到新版本。蓝绿部署无需停机,并且风险较小。

实战:

1.先部署v1.0.0版本

cat nginx_1.0.0.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-v1
spec:
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  replicas: 2
  selector:
    matchLabels:
      app: nginx-v1
      
  template:
    metadata:
      labels:
        app: nginx-v1
        release: v1.0.0
    spec:
      containers:
      - name: nginx
        image: registry.cn-shenzhen.aliyuncs.com/lishanbin/nginx:1.0.0
        ports:
        - containerPort: 80

2.再部署v2.0.0版本

cat nginx_2.0.0.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-v2
spec:
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  replicas: 2
  selector:
    matchLabels:
      app: nginx-v2
      
  template:
    metadata:
      labels:
        app: nginx-v2
        release: v2.0.0
    spec:
      containers:
      - name: nginx
        image: registry.cn-shenzhen.aliyuncs.com/lishanbin/nginx:2.0.0
        ports:
        - containerPort: 80

查看部署情况:

3.使用svc做流量切换

3.1 此时我们访问1.0.0版本:

cat nginx_service.yaml

apiVersion: v1
kind: Service
metadata:
  name: nginxservice
  labels:
    release: v1.0.0
spec:
  type: NodePort
  selector:
    release: v1.0.0
  ports:
  - port: 80
    targetPort: 80
    nodePort: 30000

浏览器验证:

0254542044f34b8699397cc6eae4ae31.png

 3.2 修改svc为v2.0.0版本

apiVersion: v1
kind: Service
metadata:
  name: nginxservice
  labels:
    release: v2.0.0
spec:
  type: NodePort
  selector:
    release: v2.0.0
  ports:
  - port: 80
    targetPort: 80
    nodePort: 30000

访问验证:

6139d188d35e4a5aa7fa3aa919afe1e9.png

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐