federation--kubernetes集群联邦的实现
kubernetes默认的模式,是以处于同zone同cloud provider的单cluster形式,对外提供服务。
但是,有一些场景不是单一cluster模式适用的,比如提供全球服务时的低延迟、故障隔离(避免单节点故障)、高扩容(单节点内有一定限制)、以及为了数据安全而采用的混合云部署策略。这个时候,就需要用到federation了。
federation在 https://github.com/kubernetes/federation可以查看,属于一个独立于kubernetes的项目。从架构上来看,它属于kubernetes的上面一层。启用kubefed不会影响和改变cluster内部的任何工作。
单一的cluster对外提供服务的entrypoint是唯一的,所有的服务请求都由api server进来。然后,才有api server同controller manager交互、并与worker node通信等一系列后续操作。那么,federation这一层,所采用的结构其实是类似的。首先,有一个fcp的概念。fcp, federation control panel,它由三部分构成:federation api server、federation control manager和kubefed(CLI工具)。
// cmd / kubefed / app / kubefed.go
这里指定了两个镜像,etcd和fcp
// cmd / genfeddocs
针对不同的对象生成文档,对象类型包括:federation api server、federation control manager和kubefed。目前作用没有细究。
// cmd / fcp
server.go里面定义一个server的标准类型,api server、control manager server都基于这个类型来实例化。
type HyperKubestruct {
Name string// The executable name, used for help and soft-link invocation
Long string// A long description of the binary.It will be world wrapped before output.
servers[]Server
baseFlags*pflag.FlagSet
outio.Writer
helpFlagValbool
makeSymlinksFlagVal bool
}
基于HyperKube类型实例化fcp,再把api server和control manager server都添加到fcp.servers 里,同时把fcp添加到该server的hk里。这样,fcp和server的关系就是双向的,通过一个都能找到另一个。
【federation--kubernetes集群联邦的实现】dns server目前只支持coredns、azuredns和aws route53。
推荐阅读
- (1)redis集群原理及搭建与使用(1)
- 联邦学习|【阅读笔记】Towards Efficient and Privacy-preserving Federated Deep Learning
- k8s|k8s(六)(配置管理与集群安全机制)
- 啥是负载均衡、高并发、分布式、集群()
- 三十一、|三十一、 Elasticsearch集群搭建部署及配置
- springBoot2.*使用redis集群/单机方法
- centos7|centos7 redis安装/集群部署/slots迁移
- CentOS|CentOS 7.2搭建FastDFS 分布式文件系统,实现高可用集群
- 利用Centos7|利用Centos7 YUM 快速搭建Kubernetes集群
- 阿里云上实战openshift2-openshift集群配置