K8S
文章目录
一、灰度发布(金丝雀发布)
金丝雀发布(Canary Release )
Deployment控制器支持自定义控制更新过程中的滚动节奏,如了暂停(pause)”或“继续(resume)"更新操作。比如等待第一批新的Pod资源创建完成后立即暂停更新过程,此时,仅存在一部分新版本的应用,主体部分还是旧的版本。然后,再筛选一小部分的用户请求路由到新版本的Pod应用,继续观察能否稳定地按期望的方式运行。确定没问题之后再继续完成余下的Pod资源滚动更新,否则立即回滚更新操作。这就是所谓的金丝雀发布。
(1)更新deployment的版本,并配置暂停deployment
curl -I 10.244.2.16
curl -I 192.168.100.110:32127
HTTP/1.1 200 OK
Server: nginx/1.14.2
Date: Wed, 18 Aug 2021 12:45:02 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Tue, 04 Dec 2018 14:44:49 GMT
Connection: keep-alive
ETag: "5c0692e1-264"
Accept-Ranges: bytes
kubectl set image deployment/nginx nginx=nginx:1.14 && kubectl rollout pause deployment/nginx
kubectl rollout status deployment/nginx #观察更新状态
(2)监控更新的过程,可以看到已经新增了一个资源,但是并未按照预期的状态去删除一个旧的资源,就是因为使用了pause暂停命令
kubectl get pods -w
curl -I 10.244.2.16
curl -I 192.168.100.110:32127
(3)确保更新的pod没问题了,继续更新
kubectl rollout resume deployment/nginx
(4)查看最后的更新情况
kubectl get pods -w
curl -I 10.244.2.18
curl -I 192.168.100.110:32127
二、声明式管理方法
1.适合于对资源的修改操作
2.声明式资源管理方法依赖于资源配置清单文件对资源进行管理
资源配置清单文件有两种格式:yaml(人性化,易读),json(易于api接口解析)
3.对资源的管理,是通过事先定义在统一资源配置清单内,再通过陈述式命令应用到k8s集群里
4.语法格式: kubectl create/apply/delete -f xxxx.yaml
查看资源配置清单
kubectl get deployment nginx -o yaml
解释资源配置清单
kubectl get all -n default
kubectl explain deployment.metadata
kubectl get service nginx-service -o yaml
kubectl explain service.metadata
修改资源配置清单并应用
离线修改
修改yaml文件,并用kubectl apply -f xxx.yaml 文件使之生效
注意:当apply不生效时,先使用delete清除资源,再apply创建 资源
kubectl get service nginx-service -o yaml > nginx-svc.yaml
vim nginx-svc.yaml #修改port: 8090
kubectl delete -f nginx-svc.yaml
kubectl apply -f nginx-svc.yaml
kubectl get svc
在线修改:
直接使用kubectl edit service nginx 在线编辑资源配置清单并保存退出即时生效( 如port: 888)
PS:此修改方式不会对yaml文件内容修改
删除资源配置清单
陈述式删除:
kubectl delete service nginx
声明式删除:
kubectl delete -f nginx-svc.yaml