金丝雀发布(Cannary Release)


修改后退出立即生效

集群外部访问用那个类型:用nodeport

nodeip+nodeport外部访问

内部访问clusterip

用什么设置clusterip的端口号

金丝雀发布(Cannary Release)

  • k8s中默认是滚动更新,deployment控制器可以自己控制滚动更新节奏,比如‘’暂停(pause)‘’和‘’继续(resume)‘’更新操作。比如原本有一批待更新的pod资源,先随机更新一部分pod资源然后立即停止更新,此时,只有一部分应用更新完成,主体部分还是旧的版本。然后将一部分(比例很小)用户的请求路由到新版本的应用来进行测试。应用测试没问题后再继续完成余下的pod资源滚动更新,如果应用的新版本测试的有问题的话,立即回滚更新操作。这个就是金丝雀发布
  • 简单的来说就是先升级一部分,让用户使用,没有出现问题的话,再把其他的更新,过一段时间后自动把旧版本删除掉

新版本的流量怎么引过去的呢?

但是这里有个问题就是原本用户在用,但是升级之后不知道谁在用新的谁在用旧的版本,在这里可以专门挑一个用户来测试新版本,先告知他测试新版本,然后这个专门的用户来测试,新pod和原来的service关联(,这个指定的用户访问原来的serviceip,service此时和新旧资源都关联,)然后创建一个新的标签给新的pod,然后新的pod和service进行关联,然后根据新的service就会访问到新的pod上

新旧pservice如何联结在一起?

通过标签和标签选择器

类比金丝雀探瓦斯,探测到有瓦斯的话,就会产生反应,工作人员就知道有瓦斯存在,从而避免了意外的发生

不像蓝绿要两套设备

也不像滚动发布按照比例一部分一部分发布

金丝雀发布需要有个新资源让你先测试一下,用户在知情的情况下升级到这个版本中,用户去测试,如果没有问题的话,在逐步的把剩下的资源更新

service怎么关联到pod?

通过标签和标签选择器

kubectl get nodes
NAME       STATUS   ROLES    AGE   VERSION
master01   Ready    master   24h   v1.15.1
node01     Ready    <none>   24h   v1.15.1
node02     Ready    <none>   24h   v1.15.1
[root@master01 opt]# kubectl get pod
No resources found.

查看资源:资源为空

在这里插入图片描述

创建一个资源nginx:1.14

kubectl create deployment nginx --image=nginx:1.14
#deployment.apps/nginx created说明创建成功

在这里插入图片描述

查看

kubectl get pod
kubectl get svc
kubectl get deployment
或
kubectl get deployment,pod,svc

在这里插入图片描述

暴露端口

kubectl expose deployment nginx --port=80 --target-port=80

在这里插入图片描述

查看版本号(可以先通过kubectl get svc查看到cluster IP以及端口)

curl http://10.103.74.102 -I
或
curl http://10.103.74.102:80 -I

在这里插入图片描述

注意:创建后必须将服务暴露出来才能查看这个服务也就是kubectl expose

提升pod数量

kubectl scale deployment nginx --replicas=3

在这里插入图片描述

下面的操作根据上面的来操作

更新deployment的版本并配置暂停deployment

开启跟踪

kubectl get pod -w
kubectl get pod -owide -w#详细跟踪

在这里插入图片描述

开启另一个终端

kubectl set image deployment nginx nginx=nginx:1.16 && kubectl rollout pause deployment nginx#联结起来,更新然后暂停,要不然会删除掉旧版本

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

监视更新的过程,可以看到已经新增了一个资源,但是并未按照预期的状态删除一个旧的资源,就是因为使用了pause暂停命令原终端查看

在这里插入图片描述

一部分更新了,而且没有Terminating 删除

查看状态

kubectl rollout status deployment nginx 

在这里插入图片描述

查看更新的服务

curl http://10.244.2.12 
curl http://10.244.2.12 -I

在这里插入图片描述

在这里插入图片描述

访问ClusterIP

由于有四个服务,所以四个一循环,
curl http://10.103.74.102 -I
curl http://10.103.74.102 -I
curl http://10.103.74.102 -I
curl http://10.103.74.102 -I

在这里插入图片描述

在这里插入图片描述

kubectl describe svc nginx 
 kubectl get endpoints 
kubectl get endpoints nginx 

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

将新创建的也关联起来

确保更新的pod没有问题,持续更新

kubectl rollout resume deployment nginx 

在这里插入图片描述

动态跟踪的情况:发现此时已经删除

在这里插入图片描述

再次查看版本:发现都是1.16版本

curl http://10.103.74.102 -I

在这里插入图片描述

查看3种资源

kubectl get nodes 
kubectl get pod
kubectl get service

在这里插入图片描述

删除3种资源,一般先查看资源名(以nginx为例)

[root@master01 opt]# kubectl get svc
NAME         TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE
kubernetes   ClusterIP   10.96.0.1      <none>        443/TCP        25h
nginx        NodePort    10.110.47.18   <none>        80:30558/TCP   25h
[root@master01 opt]# kubectl delete service nginx 
service "nginx" deleted
[root@master01 opt]# kubectl delete deployment nginx 
deployment.extensions "nginx" deleted

在这里插入图片描述

[root@master01 opt]# kubectl delete deployment nginx 
deployment.extensions "nginx" deleted

ubectl delete deployment nginx
deployment.extensions “nginx” deleted


[外链图片转存中...(img-lAl0KMhh-1635986634697)]

```shell
[root@master01 opt]# kubectl delete deployment nginx 
deployment.extensions "nginx" deleted

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

逆水行舟*不进则退

你的赞是我的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值