Kubernetes进阶(一)

本文介绍了Kubernetes如何实现蓝绿部署,详细讲解了滚动更新、回滚过程。同时,探讨了使用YAML文件管理容器的便利性,以及自动创建YAML文件的方法。此外,还深入讨论了健康检查,包括Liveness和Readiness探针的用途和区别,以及它们在应用自修复中的作用。
摘要由CSDN通过智能技术生成

一、Kubernetes实现蓝绿部署

1.1 什么是蓝绿部署

蓝绿部署,英文名Blue Green Deployment,是一种可以保证系统在不间断提供服务的情况下上线的部署方式。

蓝绿部署的模型中包含两个集群,就好比海豚的左脑和右脑。

在没有上线的正常情况下,集群A和集群B的代码版本是一致的,并且同时对外提供服务。
在系统升级的时候下,我们首先把一个集群(比如集群A)从负载列表中摘除,进行新版本的部署。集群B仍然继续提供服务。

当集群A升级完毕,我们把负载均衡重新指向集群A,再把集群B从负载列表中摘除,进行新版本的部署。集群A重新提供服务。

1.2 滚动更新

// 创建模块
[root@master ~]# mkdir apache

// 编写 dockerfile文件
[root@master ~]# cat apache/Dockerfile 
FROM busybox

RUN mkdir /data && \
echo "hello amu,This is test1" > /data/index.html

ENTRYPOINT ["/bin/httpd","-f","-h","/data"]

#v1版本
// 创建两个不同版本的镜像
[root@master ~]# docker build -t gaofan1225/httpd:v1 apache/
Sending build context to Docker daemon  2.048kB
Step 1/3 : FROM busybox
latest: Pulling from library/busybox
3cb635b06aa2: Pull complete 
Digest: sha256:b5cfd4befc119a590ca1a81d6bb0fa1fb19f1fbebd0397f25fae164abe1e8a6a
Status: Downloaded newer image for busybox:latest
 ---> ffe9d497c324
Step 2/3 : RUN mkdir /data &&     echo "hello amu,This is test1" > /data/index.html
 ---> Running in 2400a9edc3b7
Removing intermediate container 2400a9edc3b7
 ---> b596ff036149
Step 3/3 : ENTRYPOINT ["/bin/httpd","-f","-h","/data"]
 ---> Running in 9bad15d04393
Removing intermediate container 9bad15d04393
 ---> 21d6bd11fd0d
Successfully built 21d6bd11fd0d
Successfully tagged gaofan1225/httpd:v1

#v2版本
// 创建之前修改dockerfile这一行:echo "hello amu,This is test2" > /data/index.html
[root@master ~]# cat apache/Dockerfile 
FROM busybox

RUN mkdir /data && \
echo "hello amu,This is test2" > /data/index.html	// 修改这里

ENTRYPOINT ["/bin/httpd","-f","-h","/data"]

[root@master ~]# docker build -t gaofan1225/httpd:v2 apache/ 
Sending build context to Docker daemon  2.048kB
Step 1/3 : FROM busybox
 ---> ffe9d497c324
Step 2/3 : RUN mkdir /data &&     echo "hello amu,This is test2" > /data/index.html
 ---> Using cache
 ---> b596ff036149
Step 3/3 : ENTRYPOINT ["/bin/httpd","-f","-h","/data"]
 ---> Using cache
 ---> 21d6bd11fd0d
Successfully built 21d6bd11fd0d
Successfully tagged gaofan1225/httpd:v2

// 登录 docker.hub仓库
[root@master ~]# docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: gaofan1225
Password: 
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

// 上传镜像当 docker.hub仓库 
[root@master ~]# docker push gaofan1225/httpd:v1
The push refers to repository [docker.io/gaofan1225/httpd]
88be387e4d70: Pushed 
64cac9eaf0da: Mounted from library/busybox 
v1: digest: sha256:074bdf0f11e9ee6f4efb2c12f67fdfab4eae8472fae1a75eb5004f3e5884ad3e size: 734

[root@master ~]# docker push gaofan1225/httpd:v2
The push refers to repository [docker.io/gaofan1225/httpd]
88be387e4d70: Pushed 
64cac9eaf0da: Layer already exists 
v2: digest: sha256:074bdf0f11e9ee6f4efb2c12f67fdfab4eae8472fae1a75eb5004f3e5884ad3e size: 734

// 创建一个httpd容器,使用v1版本的,并复制成三个
[root@master ~]# kubectl create deployment httpd --image gaofan1225/httpd:v1 --replicas 3
deployment.apps/httpd created

[root@master ~]# kubectl get pods
NAME                     READY   STATUS    RESTARTS   AGE
httpd-8556845dfd-gct9q   1/1     Running   0          58s
httpd-8556845dfd-hcqrk   1/1     Running   0          58s
httpd-8556845dfd-zv9qz   1/1     Running   0          58s

// 暴露端口
[root@master ~]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值