写点什么

021 云原生之 Kubernetes 部署

发布于: 刚刚
021云原生之Kubernetes 部署

Kubernetes 中的部署是指如何控制一组 Pod 的运行状态使其满足生产需要。部署分为无状态部署和有状态部署。无论哪种部署,其内部都有副本集控制功能。


ReplicaSet 的目的是维护一组状态稳定的 Pod 副本,从而保证指定数量的相同 Pod 的可用性。它主要通过以下声明来控制副本数量。


在 Kubernetes 中,自动分配副本数量的算法如下:期望的副本数量=ceil[当前副本数量*(当前度量值/期望度量值)]。


部署(Deployment)是一个拥有 ReplicaSet 并通过声明来控制 Pod 滚动、更新的对象。虽然 ReplicaSet 可以独立使用,但是它主要被用作协调 Pod 创建、删除和更新的机制。使用部署时,用户不必担心副本集,因为部署通过 ReplicaSet 进行管理,建议使用部署而不是 ReplicaSet


Recreate 是指重建所有 Pod,其过程为先终止 Pod 所有的副本,然后重新创建指定数量的 Pod 副本。而 RollingUpdate 则采取一定的控制策略来逐步更新 Pod 副本。


如果在版本升级过程中又触发了更新的版本升级,则 Kubernetes 会暂停之前版本的替换过程,用最新的版本替换之前刚刚升级的版本,然后再用最新的版本替换还未升级的版本。


有状态部署(StatefulSets)是用于管理有状态应用程序工作负载的一种部署方法。区别于无状态部署(Deployment),StatefulSets 可以对 Pod 副本进行排序并保证每个 Pod 的唯一性。在无状态部署中,删除一个 Pod,新建一个 Pod,对于所有 Pod 来讲都是一致的。但是在 StatefulSets 中,每个 Pod 都有唯一的持久标识符,即使在重建后也会继续保留该标识符。有状态部署适合以下场景:

● 需要独特的网络标识符。● 需要独立持久的存储。● 需要有序的部署和扩展。● 需要有序的升级。


一个 DaemonSet 确保每个节点上只运行一个副本。若有节点添加到集群中,将在新增的节点上运行唯一一个 Pod,若节点删除,则从该节点上终止 Pod。DaemonSet 适合以下场景:

● 每个节点上运行集群存储后台驻留程序,例如 glusterd、ceph。

● 每个节点上运行日志守护程序,例如 fuentd、logstash。

● 每个节点上运行 Prometheus node exporter、sisdig、collectd 等代理。


发布于: 刚刚阅读数: 3
用户头像

InfoQ签约作者 2018.11.30 加入

还未添加个人简介

评论

发布
暂无评论
021云原生之Kubernetes 部署