Deployment控制器支持自定义控制更新过程中的滚动节奏,如“暂停(pause)”或“继续(resume)”更新操作。比如等待第一批新的Pod资源创建完成后立即暂停更新过程,此时,仅存在一部分新版本的应用,主体部分还是旧的版本。然后,再筛选一小部分的用户请求路由到新版本的Pod应用,继续观察能否稳定地按期望的方式运行。确定没问题之后再继续完成余下的Pod资源滚动更新,否则立即回滚更新操作。这就是所谓的金丝雀发布。
实验
需要先确定版本
(1)更新deployment的版本,并配置暂停deployment
kubectl set image deployment/ky10 nginx=nginx:1.15 && kubectl rollout pause deployment/ky10kubectl rollout status deployment/ky10 #观察更新状态
(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
只有10.244.2.21为新版本
详细信息
服务器对外暴露时可以创建新的网络,增加安全性
同样可以进行登录
查看标签
kubectl get pod --show-labels
net-ky10配置如下的yaml文件
vim net-ky10.yaml
apiVersion: v1
kind: Service
metadata:labels:app: ky10name: net-ky10namespace: default
spec:clusterIP: 10.96.100.10clusterIPs:- 10.96.100.10ports:- nodePort: 32695port: 80protocol: TCPtargetPort: 80selector:pod-template-hash: 84cb7c599f
sessionAffinity: Nonetype: NodePort
在删除它。最后做yaml文件映射