Kubernetes 中状态管理、准入控制与授权的深入解析
1. 有状态应用与 Operator
在 Kubernetes 环境中,有状态应用的管理一直是一个具有挑战性的任务。传统上,大多数组织会选择将无状态应用容器化,而保留有状态应用原状。然而,随着越来越多的云原生应用在云提供商的 Kubernetes 服务中运行,数据引力成为了一个问题。
1.1 StatefulSets 与 Operator 的引入
StatefulSets 无疑是将复杂的有状态数据系统引入 Kubernetes 作为可行工作负载的一个重要因素。它允许应用拥有稳定的网络标识和持久存储,使得有状态应用在集群中的运行成为可能。但 Kubernetes 本身并不能很好地理解 StatefulSet 中运行的工作负载。例如,备份、故障转移、领导者注册、新副本注册和升级等复杂操作,在作为 StatefulSet 运行时需要仔细考虑。
为了解决这些问题,CoreOS 的站点可靠性工程师(SREs)创建了一种名为 Operator 的云原生软件。Operator 的初衷是将运行特定应用的领域知识封装到一个扩展 Kubernetes 的特定控制器中。例如,基于 StatefulSet 控制器,Operator 可以对 Cassandra 或 Kafka 进行部署、扩展、升级、备份和执行常规维护操作。最早创建的一些 Operator 是针对 etcd 和 Prometheus 的,它们可以处理 Prometheus 或 etcd 实例的正确创建、备份和恢复配置,就像管理 Pod 或 Deployment 一样,成为 Kubernetes 管理的新对象。
以下