我有一个应用程序在使用复制控制器复制的Kubernetes群中运行。不过,我需要一次完成一个应用程序(一次复制)完成的关键任务。以前我使用zookeeper来获取群集锁来完成这项任务。 Kubernetes有没有办法为特定的复制控制器获取群集锁定?Kubernetes通过复制获取群集锁
2
A
回答
2
Kubernetes没有群集锁对象,但可以在复制控制器上使用annotation指定锁持有者和TTL。
例如,每个吊舱都可以读取注释码"lock"
,如果为空(或者如果TTL已过期),请尝试写入"lock": "pod-xyz: 2015-12-22T18:39:12+00:00"
。如果尝试多次写入,kubernetes将接受一个写入,并拒绝其他的写入,因为资源版本不正确。然后锁持有者将继续更新注释以刷新TTL。
如果您有与此复制控制器相对应的服务,则可以将锁注释放在服务而不是RC上。然后,锁定语义将在软件升级(例如,滚动更新)之后存活。注释可以放在任何对象上,因此可以灵活地找出最适合您的对象。
podmaster.go有一个很好的例子可以用来实现这个逻辑。它直接运行在etcd上,如果你不介意引入另一个组件,你也可以这样做。
相关问题
- 1. 获取kubernetes集群IP
- 2. 无法获取在书的“Kubernetes食谱”的kubernetes集群
- 3. Kubernetes集群大小
- 4. Kubernetes群集APP DNS
- 5. 如何修复kubernetes集群的calico.yaml?
- 6. kubernetes集群内服务通信
- 7. 强制删除IBM Bluemix Kubernetes群集
- 8. 如何获得kubernetes集群视图?
- 9. 群集与复制
- 10. 集群VS复制
- 11. ElasticSearch群集复制
- 12. 无法通过Docker设置Kubernetes本地集群
- 13. 通过静态IP代理Kubernetes集群的传出流量
- 14. Kubernetes Redis集群问题
- 15. kubernetes上的Redis集群
- 16. DNS Addon Kubernetes CentOS 7群集
- 17. 使用minikube kubernetes集群
- 18. 如何停止kubernetes群集?
- 19. Kubernetes - Akka集群部署
- 20. Gitlab CI上Kubernetes集群(OPENSTACK)
- 21. Kubernetes集群最佳实践
- 22. 通过SOM集群
- 23. Kubernetes 1.6+ RBAC:通过kubectl获得角色集群管理员的访问权限
- 24. 如何从K8s获取Kubernetes集群名称API
- 25. 通过编号定制群集
- 26. 群集文件系统或通过网络复制?
- 27. 如何通过node.js集群复制数据?
- 28. 获取markerclusterer群集
- 29. Jboss群集复制时间
- 30. HSQLDB集群/复制支持?
pod中的应用程序应该如何向服务写入/读取注释?它是否通过REST API? – Dimuthu
是的。客户端库应该有你需要的东西,如果你不想制作原始请求。通过kubectl也是可能的。我不确定。 –
使用etcd本地群集锁支持并通过kubernetes API公开它不是一个好主意吗? https://coreos.com/etcd/docs/0.4.7/etcd-api/#lock – Dimuthu