天天看点

回滚 - 每天5分钟玩转 Docker 容器技术(141)

<code>kubectl apply</code> 每次更新应用时 Kubernetes 都会记录下当前的配置,保存为一个 revision(版次),这样就可以回滚到某个特定 revision。

默认配置下,Kubernetes 只会保留最近的几个 revision,可以在 Deployment 配置文件中通过 <code>revisionHistoryLimit</code> 属性增加 revision 数量。

下面实践回滚功能。应用有如下三个配置文件 <code>httpd.v1.yml</code>,<code>httpd.v2.yml</code> 和 <code>httpd.v3.yml</code>,分别对应不同的 httpd 镜像 <code>2.4.16</code>,<code>2.4.17</code> 和 <code>2.4.18</code>:

回滚 - 每天5分钟玩转 Docker 容器技术(141)
回滚 - 每天5分钟玩转 Docker 容器技术(141)
回滚 - 每天5分钟玩转 Docker 容器技术(141)

通过 <code>kubectl apply</code> 部署并更新应用:

回滚 - 每天5分钟玩转 Docker 容器技术(141)

<code>--record</code> 的作用是将当前命令记录到 revision 记录中,这样我们就可以知道每个 revison 对应的是哪个配置文件。通过 <code>kubectl rollout history deployment httpd</code> 查看 revison 历史记录。

回滚 - 每天5分钟玩转 Docker 容器技术(141)

<code>CHANGE-CAUSE</code> 就是 <code>--record</code> 的结果。如果要回滚到某个版本,比如 revision 1,可以执行命令 <code>kubectl rollout undo deployment httpd --to-revision=1</code>:

回滚 - 每天5分钟玩转 Docker 容器技术(141)

此时,revison 历史记录也会发生相应变化。

回滚 - 每天5分钟玩转 Docker 容器技术(141)

revison 1 变成了 revison 4。不过我们可以通过 <code>CHANGE-CAUSE</code> 知道每个 revison 的具体含义。所以一定要在执行 <code>kubectl apply</code> 时加上 <code>--record</code>参数。

滚动更新我们就讨论到这里,下一节开始学习 k8s 的 Health Check 功能。

书籍:

1.《每天5分钟玩转Docker容器技术》

<a href="https://item.jd.com/16936307278.html" target="_blank">https://item.jd.com/16936307278.html</a>

2.《每天5分钟玩转OpenStack》

<a href="https://item.jd.com/12086376.html" target="_blank">https://item.jd.com/12086376.html</a>