本文整理业界对于Kubernetes在扩展性方面做的一些实践,随着时间的积累,相信会有更多的人在扩展kubernetes作出实践的经验
自定义controller
Fabric8 io
Expose controller
https://github.com/fabric8io/exposecontroller/
Feture-1 auto config services with label
Kubernetes中services暴露的方式很多,包括ingress,loadbalancer,nodeport,routers(only in openshift)等等,通过在定义微服务的时候定义Label(expose=true),将会自动根据特定的场景来创建对应暴露services.
Feture-2 inject into a configmap external URLs to services
使用场景:当你运行像gog或者gitlab这样的git托管服务时,你需要告诉它服务的公共URL,以便它的web应用程序可以告诉你如何从你的笔记本电脑中输入一个git克隆。另外,想要使用OAuth登录客户端的Web控制台需要知道OAuth授权URL的位置。
Configmap controller
https://github.com/fabric8io/configmapcontroller
当configmap变化的时候,自动触发滚动升级应用.当前Kubernetes能够自动更新通过volume mounts的方式注入到pod中的配置文件,但是通过env方式注入到pod中的配置数据所对应的configmap内容改变,但是对应的pod里面的env并不会改变.通过configmap controller可以实现当configmap改变的时候,自动触发deployment的升级
Git controller
https://github.com/fabric8io/gitcontroller
git控制器就像configmap控制器,但是当您的Deployment将一个git版本库修改为一个卷时 配置文件或CMS网页内容。 git控制器的想法是,它将监视所有部署使用的所有git存储库的git存储库,并且如果git提交发生在repo分支中,它将通过指向git存储库在部署上执行滚动升级 卷到新的提交版本。
所以它非常像configmap控制器,但具有更改审计日志,历史记录和恢复更改的简单方法的额外好处。
Operator
coreos提出的,针对有状态应用
“operator”提出的宗旨:将管理分布式应用的操作信息进行编码,让kubernetes管理更加简单.etcd Operator 为集群性能提供新分布式系统的主机,也有管理他们的能力。所以,比如,用户能够为特定集群指定一个设计好的状态, Operator 会过度到最安全状态。
至于, Prometheus Operator ,则负责帮助用户管理、监控他们的 Kubernetes 资源。它跟创建、配置和管理 Prometheus 实例同步运行。 Prometheus 是一款监控、软件度量和报警工具,是 CNCF ( Cloud Native Computing Foundation )旗下的项目。
Etcd-operator
https://github.com/coreos/etcd-operator/tree/master/example
https://github.com/kubernetes/charts/tree/master/stable/etcd-operator
增加etcd实验教程的详细内容
History:
2017/12/30
Link:
https://blog.fabric8.io/additional-kubernetes-controllers-from-fabric8-you-can-use-with-your-microservice-3126a2c4c132
https://coreos.com/blog/introducing-operators.html
https://coreos.com/blog/prometheus-and-kubernetes-up-and-running.html