美文网首页
federation--kubernetes集群联邦的实现

federation--kubernetes集群联邦的实现

作者: April_Luv_Choco | 来源:发表于2018-07-17 17:17 被阅读0次

    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

    out                io.Writer

    helpFlagVal        bool

    makeSymlinksFlagVal bool

    }

    基于HyperKube类型实例化fcp,再把api server和control manager server都添加到fcp.servers 里,同时把fcp添加到该server的hk里。这样,fcp和server的关系就是双向的,通过一个都能找到另一个。

    dns server目前只支持coredns、azuredns和aws route53。

    相关文章

      网友评论

          本文标题:federation--kubernetes集群联邦的实现

          本文链接:https://www.haomeiwen.com/subject/hhrgpftx.html