用kubernetes实现couchdb 2.0的自动发现和聚类

couchdiscover的Python项目详细描述


#couchdiscover
[![构建状态](https://travis-ci.org/joeblackwaslike/couchdiscover.svg?branch=master)(https://travis-ci.org/joeblackwaslike/couchdiscover)[![Github回购](https://img.shields.io/badge/contributions-welcome-brightgreen.svg?style=flat)(https://github.com/joeblackwaslike/couchdiscover)[![pypi版本](https://img.shields.io/pypi/v/couchdiscover.svg)(https://pypi.python.org/pypi/couchdiscover)[![PYPI许可证](https://img.shields.io/pypi/l/couchdiscover.svg)](https://pypi.python.org/pypi/couchdiscover)[![Pypi控制盘](https://img.shields.io/pypi/wheel/couchdiscover.svg)(https://pypi.python.org/pypi/couchdiscover)[![PYPI版本](https://img.shields.io/pypi/pyversions/couchdiscover.svg)(https://pypi.python.org/pypi/couchdiscover)[!【Docker拉拽】(https://img.shields.io/docker/docker/拉拽/joeblackwakwaslike/couchdiscover.svg)(https://hub.docker.com/r/joeblackwakwaslike/couchdiscover/)

























利用kubernetes和couchdb 2.0集群api用于自动创建couchdb 2.0集群的过程。与先前的bigcooch相比,这里的要求有很大的不同。

此模块有一个名为“couchdiscover”的入口点存根,将在安装setuptools时创建。

couchdiscover:
` couchdb`容器:
*`couchdb_admin_user`:启用节点时要使用的用户名,必需。
*`couchdb_admin_pass`:启用节点时要使用的密码,必需。
*`erlang_cookie`:用作`.erlang.cookie`的cookie值,不需要,未设置时故障恢复到不安全的cookie值。
*`couchdb_cluster_size`:不需要,重写statefulset中的'spec.replicas'值,应该很少需要设置。除非你知道自己在做什么,否则不要设置。


\couchdiscover`容器:
*`logu level`:输出容器日志的日志级别。默认为“info”,大多数日志要么是info要么是warning level.



\最初,通过获取作为statefulset一部分的容器的主机名并对其进行解析,可以获得大量信息。这就是如何确定名称空间、以后如何计算主机名、要在api中查找的statefulset的名称、headless服务的名称、节点名、索引、节点是否为master等等。kubernetes api用于获取statefulset和entrypoint对象。分析entrypoint对象以获取“hosts”列表。然后为端口解析statefulset,然后解析环境,获取任何必要的外部引用的configmap或secret。通过查找环境中的密钥来解析凭据:`couchdb_admin_user`,`couchdb_admin_pass`。最后,预期的集群大小被设置为获取的statefulset中的副本数。您可以按照上述注释部分中的详细说明覆盖此项,但在大多数情况下应该是完全不必要的。



\main logic
main logic在“manage”模块的“clustermanager”对象的“run”方法中执行。我认为大部分都是相对严格的前卫。

`` python
couchdiscover.manage.clustermanager
def run(self):
“这里的主要逻辑是,一旦检索到所有环境信息,我们就从这里开始。”“
log.info('starting couchdiscover:%s',self.couch)
如果self.couch.disabled:
log.info('cluster disabled,enabling')
self.couch.enable()
elif self.couch.finished:
log.info('cluster already finished')
self.sleep_forever()


if self.env.first_node:
log.info(“看起来我是第一个节点”)
if self.env.single_node_cluster:
log.info('single node cluster detected')
self.couch.finish()
否则:
log.info(“看起来我不是第一个节点”)
self.couch.add_to_master()
如果self.env.last_节点:
log.info(“看起来我是最后一个节点”)
self.couch.finish()
否则:
log.info(“看起来我不是最后一个节点”)
self.sleep_forever()
```

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何禁用ch.qos。在“mvn清理安装”期间运行SpringBootTest时的logback自己的信息消息   java用xstream解析谷歌地理代码   java操作ArrayList中包含的对象   java无法连接到jsp中的数据库   java JavaFx将字段设置为int   Java中在不同类之间传递数组元素   基于AStar算法的java15拼图   java Spring筛选器在init函数之后丢失设置变量   java文件定位器可以指向不同文件服务器上的目录吗?   java调用抛出FileNotFoundException的方法   java滑入(覆盖)活动   java如何在for的每个循环中重置arrylist?   java在eclipse中为postgres db获取正确的驱动程序时遇到问题   java在wordnet中查找语法集之间的距离   java创建基于角色的web应用程序的最佳方法是什么?   gwt使用java创建web应用程序   java打印结果集值作为html页面中的文本   java使方法实现的返回类型比抽象方法更具体   java:检查服务器是否有特定的文件?   java在JTable中两次选择单行不会调用ListSelectionListener。valueChanged()是第二次