k8s蓝绿发布
目录蓝绿发布:实战: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
浏览器验证:
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
访问验证:
更多推荐
已为社区贡献6条内容
所有评论(0)