Kubernetes(k8s)蓝绿发布
Kubernetes(k8s)蓝绿发布
蓝绿部署:
一些应用程序只需要部署一个新版本,并需要立即切到这个版本。因此,我们需要执行蓝/绿部署。在进行蓝/绿部署时,应用程序的一个新副本(绿)将与现有版本(蓝)一起部署。然后更新应用程序的入口/路由器以切换到新版本(绿)。然后,您需要等待旧(蓝)版本来完成所有发送给它的请求,但是大多数情况下,应用程序的流量将一次更改为新版本;Kubernetes不支持内置的蓝/绿部署。目前最好的方式是创建新的部署,然后更新应用程序的服务(如service)以指向新的部署;蓝绿部署是不停老版本,部署新版本然后进行测试,确认OK后将流量逐步切到新版本。蓝绿部署无需停机,并且风险较小。
实战
lan.yaml
配置文件内容如下:
apiVersion: apps/v1 kind: Deployment metadata: name: myapp-v1 namespace: blue-green spec: replicas: 3 selector: matchLabels: app: myapp version: v1 template: metadata: labels: app: myapp version: v1 spec: containers: - name: myapp image: janakiramm/myapp:v1 imagePullPolicy: IfNotPresent ports: - containerPort: 80
lv.yaml
配置文件内容如下:
apiVersion: apps/v1 kind: Deployment metadata: name: myapp-v2 namespace: blue-green spec: replicas: 3 selector: matchLabels: app: myapp version: v2 template: metadata: labels: app: myapp version: v2 spec: containers: - name: myapp image: janakiramm/myapp:v2 imagePullPolicy: IfNotPresent ports: - containerPort: 80
service_lanlv.yaml
配置文件内容如下:
apiVersion: v1 kind: Service metadata: name: myapp-lan namespace: blue-green labels: app: myapp version: v1 spec: type: NodePort ports: - port: 80 nodePort: 30062 name: http selector: app: myapp version: v1
当前指向版本v1(也就是蓝)
创建
kubectl apply -f lan.yaml kubectl apply -f lv.yaml kubectl get pods -n blue-green
显示如下:
上面可以看到有两个pod,一个是myapp-v1
这个是蓝程序
(升级之前的程序),一个是myapp-v2
这个是绿程序
(升级之后的程序),蓝绿程序一起运行
kubectl apply -f service_lanlv.yaml kubectl get svc -n blue-green
在浏览器访问http://<k8s集群任何一个节点ip>:port
,显示如下:
我是版本v1,蓝色哦..
修改service_lanlv.yaml
配置文件,修改标签,让其指向到绿程序(升级之后的程序)
service_lv.yaml
文件内容如下:
apiVersion: v1 kind: Service metadata: name: myapp-lan namespace: blue-green labels: app: myapp version: v2 spec: type: NodePort ports: - port: 80 nodePort: 30062 name: http selector: app: myapp version: v2
kubectl apply -f service_lv.yaml
在浏览器访问http://<k8s集群任何一个节点ip>:port
显示如下:
我是版本v2,绿色哦..
作者:半兽人
链接:https://www.orchome.com/9779
来源:OrcHome
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
目录 返回
首页