赞
踩
Deployment控制器支持自定义控制更新过程中的滚动节奏,如“暂停(pause)”或“继续(resume)”更新操作。
金丝雀发布过程:
比如等待第一批新pod资源创建完成后,立即暂停更新过程,此时仅存在一部分新版本的应用,主体还是旧版本,然后筛选一小部分的用户请求路由到新版本的pod应用,继续观察能否稳定地按期望的方式运行。确定没问题后继续完成后续的滚动更新,否则立即回滚更新操作。
(1)更新deployment版本,并配置暂停deployment
我们先查看我们创建的nginx服务的版本
kubectl describe deployment
另开一个终端监控pods
kubectl get pods -w
更新版本到1.16 ,并且用金丝雀暂停
kubectl set image deployment/nginx nginx=nginx:1.16 && kubectl rollout pause deployment/nginx
然后去监控窗口看
创建了一个新的资源,而旧的并没被删除,因为我们pause了
kubectl get pods -o wide
查看新创建pod的ip
kubectl rollout status deployment/nginx
观察更新状态
我们用
curl http://10.244.1.4
curl -I 10.244.1.4
上面的
检查服务是否正常
如果都没问题
继续更新
kubectl rollout resume deployment/nginx
监控端的原pod就会显示Terminating
然后查看下版本
kubectl describe deployment
ok
1.适合于对资源的修改操作
2.声明式资源管理办法依赖于资源配置清单文件对资源进行管理资源配置清单文件有两种格式:yaml(人性化,易读),json(易于api接口解析)
3.对资源的管理,是通过事先定义在统一资源配置清单内,再通过陈述式命令应用到k8s集群里
4.语法格式:kubectl create/app1y/delete -f xxxx.yaml
kubectl create 和kubelctl apply 的区别
kubectl create -f xxxx.yaml 无法更新,只能创建,必须先delete对应的yaml
kubectl apply -f xxxx.yaml 可以更新,可以创建,可以重复使用
如果yaml文件中的kind值为deployment,那么上面这两个命令都可以创建一个deployment,生成相应数量的pod
区别:
kubectl create:
(1)kubectl create 命令,是先删除所有现有的东西,重新根据yaml文件生成新的。所以要求是yaml文件中的配置必须是完整的
(2)kubectl create命令,用同一个yaml文件执行替换replace命令,将不会成功。
kubectl apply:
kubectl apply命令,根据配置文件里面写出来的内容,升级现有的,所以yaml文件的内容可以只写需要升级的属性
查看资源配置清单命令:
kubectl get deployment nginx -o yaml
解释资源配置清单的命令:
kubectl explain depolyment.metadata //解释deployment.metadata信息
kubectl get service nginx -o yaml
kubectl explain service.metadata
service的用法也相同
修改资源配置清单和应用命令:
离线修改:
修改yaml文件,并用kubectl apply -f xxxx.yaml 文件使之生效
注意:当apply不生效时,先使用delete清除资源,再apply创建资源
kubectl get service nginx -o yaml > nginx-svc.yaml
vim nginx-svc.yaml
#修改port:8080
kubectl delete -f nginx-svc.yaml
kubectl apply -f nginx-svc.yaml
kubectl get svc
在线修改:
直接使用kubectl edit service nginx
在线编辑资源配置清单并保存退出即时生效(如port:888)
PS:此修改方式不会对yaml文件内容修改
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。