kubernetes核心概念
所属分类 k8s
浏览量 1313
API对象 集群管理操作单元
例如副本集Replica Set对应的API对象是RS。
API对象 3大类属性:元数据metadata 规范spec和状态status
元数据用来标识API对象,每个对象至少有3个元数据:namespace,name和uid
标签labels用来标识和匹配不同的对象,
标签env 标识区分不同的服务部署环境,分别用env=dev、env=testing、env=production来标识开发、测试、生产的不同服务。
规范描述 集群分布式系统的理想状态(Desired State),
复本控制器Replication Controller设置期望的Pod副本数为3;
status 系统实际当前状态(Status),例如系统当前实际的Pod副本数为2;
API对象spec设置
操作都是声明式(Declarative)的而不是命令式(Imperative)的。
设置副本数为3的操作运行多次结果一样,而给副本数加1的操作就不是声明式的
Pod
Pod 部署应用或服务的最小单元,支持多容器。
支持多个容器在一个Pod中共享网络地址和文件系统,通过进程间通信和文件共享 组合完成服务。
Pod 所有业务类型的基础,
业务主要可以分为长期伺服型(long-running)、批处理型(batch)、节点后台支撑型(node-daemon)和有状态应用型(stateful application);
Deployment、Job、DaemonSet和PetSet
副本控制器(Replication Controller,RC)
保证Pod高可用。
监控运行中的Pod数
指定的数目可以是多个也可以是1个;少于指定数目,RC会启动运行新的Pod副本;多于指定数目,RC杀死多余的Pod副本。
副本集(Replica Set,RS)
RS是新一代RC,提供同样的高可用能力,能支持更多种类的匹配模式。
部署(Deployment)
集群的一次更新操作。
滚动升级一个服务,实际是创建一个新的RS,然后逐渐将新RS中副本数增加到理想状态,将旧RS中的副本数减小到0的复合操作;
该复合操 用Deployment来描述。
服务(Service)
每个Service会对应一个集群内部有效的虚拟IP,集群内部通过虚拟IP访问一个服务。
微服务的负载均衡 Kube-proxy
任务(Job)
控制批处理型任务。批处理业务 vs 长期伺服业务 。
任务成功完成后自动退出。
spec.completions策略
后台支撑服务集(DaemonSet)
有状态服务集(PetSet)
1.3版本发布了Alpha版的PetSet功能。
云原生应用的体系
无状态(stateless)、牲畜(cattle)、无名(nameless)、可丢弃(disposable)
有状态(stateful)、宠物(pet)、有名(having name)、不可丢弃(non-disposable)。
RC和RS主要是控制 无状态服务
PetSet控制有状态服务,PetSet中的每个Pod的名字都是事先确定的,不能更改。
RC和RS中的Pod,一般不挂载存储或者挂载共享存储,Pod像牲畜一样没有分别;
PetSet中的Pod,每个Pod挂载自己独立的存储,如果一个Pod出现故障,从其他节点启动一个同样名字的Pod,要挂在上原来Pod的存储继续以它的状态提供服务。
适合于PetSet的业务包括数据库服务MySQL和PostgreSQL,集群化管理服务Zookeeper、etcd等有状态服务。
PetSet 将确定的Pod与确定的存储关联起来保证状态的连续性。
集群联邦(Federation)
1.3版本发布beta版的Federation功能。
云计算环境,服务的作用距离范围从近到远:
同主机(Host,Node)、跨主机同可用区(Available Zone)、跨可用区同地区(Region)、跨地区同服务商(Cloud Service Provider)、跨云平台。
存储卷(Volume)
Docker存储卷作用范围为一个容器,
Kubernetes存储卷的生命周期和作用范围是一个Pod。每个Pod中声明的存储卷由Pod中的所有容器共享。
存储卷类型,公有云平台的存储,AWS,Google和Azure;
分布式存储包括GlusterFS和Ceph;
主机本地目录hostPath和NFS。
Persistent Volume Claim PVC 逻辑存储,忽略后台的实际存储技术(例如AWS,Google或GlusterFS和Ceph),
持久存储卷(Persistent Volume,PV)和持久存储卷声明(Persistent Volume Claim,PVC)
节点(Node)
计算能力由Node提供,最初Node称为服务节点Minion,后来改名为Node。
Kubernetes集群中的Node等同于Mesos集群中的Slave节点,是所有Pod运行所在的工作主机,物理机或虚拟机。
工作主机 运行 kubelet管理节点上运行的容器。
密钥对象(Secret)
保存和传递密码、密钥、认证凭证等敏感信息的对象。
避免把敏感信息明文写在配置文件里。
用户帐户(User Account)和服务帐户(Service Account)
用户帐户为人提供账户标识,服务账户为计算机进程和运行的Pod提供账户标识。
用户帐户和服务帐户的一个区别是作用范围;用户帐户对应的是人的身份,人的身份与服务的namespace无关,所以用户账户是跨namespace的;
而服务帐户对应的是一个运行中程序的身份,与特定namespace相关。
命名空间(Namespace)
虚拟隔离作用,初始有两个命名空间,分别是默认命名空间default和系统命名空间kube-system,
管理员可以可以创建新的命名空间满足需要。
RBAC访问授权
1.3版本发布alpha版的基于角色的访问控制(Role-based Access Control,RBAC)
相对于基于属性的访问控制(Attribute-based Access Control,ABAC),RBAC主要是引入了角色(Role)和角色绑定(RoleBinding)的抽象概念。
ABAC中,访问策略只能跟用户直接关联;而在RBAC中,访问策略可以跟某个角色关联,具体的用户在跟一个或多个角色相关联。
上一篇
下一篇
linux网络测速iperf
应用部署策略
aerospike write-block-size 参数说明
为何Hashtable ConcurrentHashmap不允许key 和 value为null
prometheus VS influxdb
go语言历程