k8s 金丝雀发布与声明式管理

Deployment控制器支持自定义控制更新过程中的滚动节奏,如“暂停(pause)”或“继续(resume)”更新操作。比如等待第一批新的Pod资源创建完成后立即暂停更新过程,此时,仅存在一部分新版本的应用,主体部分还是旧的版本。然后,再筛选一小部分的用户请求路由到新版本的Pod应用,继续观察能否稳定地按期望的方式运行。确定没问题之后再继续完成余下的Pod资源滚动更新,否则立即回滚更新操作。这就是所谓的金丝雀发布。
 

 实验

需要先确定版本

k8s 金丝雀发布与声明式管理_第1张图片

(1)更新deployment的版本,并配置暂停deployment
 

kubectl set image deployment/ky10 nginx=nginx:1.15 && kubectl rollout pause deployment/ky10

kubectl rollout status deployment/ky10  #观察更新状态

 

 k8s 金丝雀发布与声明式管理_第2张图片

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

kubectl get pods -w 

curl [-I] 10.0.0.189
curl [-I] 192.168.80.11:44847

(3)确保更新的pod没问题了,继续更新
 

kubectl rollout resume deployment/nginx

 (4)查看最后的更新情况

kubectl get pods -w 

curl [-I] 10.0.0.189
curl [-I] 192.168.80.11:44847

查看每个的版本

所有IP

k8s 金丝雀发布与声明式管理_第3张图片

只有10.244.2.21为新版本

k8s 金丝雀发布与声明式管理_第4张图片

k8s 金丝雀发布与声明式管理_第5张图片

详细信息

k8s 金丝雀发布与声明式管理_第6张图片

服务器对外暴露时可以创建新的网络,增加安全性

k8s 金丝雀发布与声明式管理_第7张图片

k8s 金丝雀发布与声明式管理_第8张图片

同样可以进行登录

k8s 金丝雀发布与声明式管理_第9张图片

 

查看标签

kubectl get pod --show-labels

net-ky10配置如下的yaml文件

vim net-ky10.yaml
apiVersion: v1
kind: Service
metadata:
  labels:
    app: ky10
  name: net-ky10
  namespace: default
spec:
  clusterIP: 10.96.100.10
  clusterIPs:
  - 10.96.100.10
  ports:
  - nodePort: 32695
    port: 80
    protocol: TCP
    targetPort: 80
  selector:
    pod-template-hash: 84cb7c599f
sessionAffinity: None
  type: NodePort

k8s 金丝雀发布与声明式管理_第10张图片

k8s 金丝雀发布与声明式管理_第11张图片

在删除它。最后做yaml文件映射

你可能感兴趣的:(kubernetes,容器,云原生)