Kubernetes结构设计理念

来源:互联网 发布:贵阳大数据交易所 地址 编辑:程序博客网 时间:2024/06/05 05:19
Pod:
最基础的是微服务Pod。Pod是在K8s集群中运行部署应用或服务的最小单元,它是可以支持多容器的。
设计理念:支持多个容器在一个Pod中共享网络地址和文件系统,可以通过进程间通信和文件共享这种简单高效的方式组合完成服务。
Pod是K8s集群中所有业务类型的基础,可以看作运行在K8s集群中的小机器人,不同类型的业务就需要不同类型的小机器人去执行。




复制控制器(Replication Controller,RC):
RC是K8s集群中最早的保证Pod高可用的API对象。
通过监控运行中的Pod来保证集群中运行指定数目的Pod副本。指定的数目可以是多个也可以是1个;少于指定数目,RC就会启动运行新的Pod副本;多于指定数目,RC就会杀死多余的Pod副本。
适用于长期伺服型的业务类型,比如控制小机器人提供高可用的Web服务。




副本集(Replica Set,RS):
RS是新一代RC,提供同样的高可用能力。能支持更多种类的匹配模式。副本集对象一般不单独使用,而是作为Deployment的理想状态参数使用。




部署(Deployment):
用户对K8s集群的一次更新操作。比RS应用模式更广的API对象。
未来对所有长期伺服型的的业务的管理,都会通过Deployment来管理。




服务(Service);
要稳定地提供服务需要服务发现和负载均衡能力。服务发现完成的工作,是针对客户端访问的服务,找到对应的的后端服务实例。
客户端需要访问的服务就是Service对象。每个Service会对应一个集群内部有效的虚拟IP,集群内部通过虚拟IP访问一个服务。




任务(Job):
Job是K8s用来控制批处理型任务的API对象。




后台支撑服务集(DaemonSet):
核心关注K8s集群中的节点,要保证每个节点上都有一个此类Pod运行。




有状态服务集(PetSet):
PetSet是用来控制有状态服务,PetSet中的每个Pod的名字都是事先确定的,不能更改。PetSet中Pod的名字的作用是关联与该Pod对应的状态。
PetSet中的Pod,每个Pod挂载自己独立的存储,如果一个Pod出现故障,从其他节点启动一个同样名字的Pod,要挂载上原来Pod的存储继续以它的状态提供服务。
RC和RS主要是控制提供无状态服务的,其所控制的Pod的名字是随机设置的,一个Pod出故障了就被丢弃掉,在另一个地方重启一个新的Pod。
适合于PetSet的业务包括数据库服务MySQL和PostgreSQL,集群化管理服务Zookeeper、etcd等有状态服务。




集群联合(Federation):
在云计算环境中,服务的作用距离范围从近到远一般可以有:同主机(Host,Node)、跨主机同可用区(Available Zone)、跨可用区同地区(Region)、跨地区同服务商(Cloud Service Provider)、跨云平台。
K8s的设计定位是单一集群在同一个地域内,因为同一个地区的网络性能才能满足K8s的调度和计算存储连接要求。
联合集群服务就是为提供跨Region跨服务商K8s集群服务而设计的。




存储卷(Volume):
K8s的存储卷的生命周期和作用范围是一个Pod。每个Pod中声明的存储卷由Pod中的所有容器共享。
K8s还支持使用Persistent Volume Claim即PVC这种逻辑存储,使用这种存储,使得存储的使用者可以忽略后台的实际存储技术




持久存储卷(Persistent Volume,PV):
PV和Node是资源的提供者,根据集群的基础设施变化而变化,由K8s集群管理员配置。




持久存储卷声明(Persistent Volume Claim,PVC):
PVC和Pod是资源的使用者,根据业务服务的需求变化而变化。




节点(Node):
计算能力由Node提供,最初Node称为服务节点Minion,后来改名为Node。
K8s集群中的Node也就等同于Mesos集群中的Slave节点,是所有Pod运行所在的工作主机,可以是物理机也可以是虚拟机。




密钥对象(Secret):
Secret是用来保存和传递密码、密钥、认证凭证这些敏感信息的对象。
可以避免把敏感信息明文写在配置文件里。




用户帐户(User Account):
用户帐户为人提供账户标识
用户帐户对应的是人的身份,人的身份与服务的namespace无关,所以用户账户是跨namespace的


服务帐户(Service Account):
服务账户为计算机进程和K8s集群中运行的Pod提供账户标识。
服务帐户对应的是一个运行中程序的身份,与特定namespace是相关的。




名字空间(Namespace):
名字空间为K8s集群提供虚拟的隔离作用。




RBAC访问授权:

相对于基于属性的访问控制(Attribute-based Access Control,ABAC),RBAC主要是引入了角色(Role)和角色绑定(RoleBinding)的抽象概念。




参考Kubernetes中文社区。

URL:http://docs.kubernetes.org.cn/249.html

原创粉丝点击