我想知道 Kubernetes 是如何执行更新的。假设两个实体同时执行更新。如何应用配置?在 K8S API 上应用/删除配置和一般执行突变是原子操作吗?是否可以根据条件执行突变?
我们以这个简单的 ConfigMap 为例:
apiVersion: v1
kind: ConfigMap
metadata:
name: testmap
data:
foo: "1"
我想通过设置更新此配置,foo: "2"
但foo: "1"
前提是 ConfigMap 中存在。这样的原子性特征可以在MongoDB(例如findAndModify)、Redis等数据库中找到。如何在K8S中实现原子性?
在 Kubernetes 中,您需要与kube-apiserver通信以查看资源或对其进行更改。
kube-apiserver
etcd
用作存储 Kubernetes 所需数据的地方。您可以在官方网站上阅读
etcd
:正如您在上面所读到的,
etcd
保证是一致的。有关资源操作的更多信息可以在此博客文章中找到:
你可以在那里阅读(博客文章很长但解释性很强):
其他资源:
我在 Stackoverflow 上发现了类似的案例,它也在处理类似的问题: