扬中市做网站,百度知道免费提问,网站建设ppt演示文档,东莞优化seo网站关键词优化应用部署演进过程 我们从上图可以看到#xff0c;应用越来越看重应用本身了#xff0c;慢慢的不受物理机的差异#xff0c;不受操作系统的差异#xff0c;开发者可以花更多精力去到应用本身。
k8s概念
简单理解#xff0c;k8s就是传统的云平台上的linux。
kubernetes是…应用部署演进过程 我们从上图可以看到应用越来越看重应用本身了慢慢的不受物理机的差异不受操作系统的差异开发者可以花更多精力去到应用本身。
k8s概念
简单理解k8s就是传统的云平台上的linux。
kubernetes是一个以Google Borggoogle内部容器管理平台为原型重新设计和实现的容器管理和调度编排工具。 2014年由谷歌开源。 同样功能的工具还有docker公司的Swarm和apache的Mesos但目前kubernetes好像笑到了最后。
容器编排管理平台
k8s可以以容器组pod为基本编排和调度单位 k8s提供资源分配管理功能 k8s提供健康检查伸缩滚动升级功能 k8s提供声明式的对象配置模型
微服务架构平台
k8s提供服务发现与内部路由 k8s提供对服务的快速部署和自动的负载均衡
可移植云平台
k8s被各大云厂商承认并支持在各个云平台之上又搞了一层通用平台即可实现跨云移植
k8s架构 k8s集群是由一群节点node组成这些节点可能部署在物理服务器或云服务器上。 每个节点都安装了node组件node组件是真正运行负载的组件 另外有个特殊节点上安装了master组件那这个节点也就是master节点
master组件
集群的控制中心每个集群至少一个master组件 高可用就多个master节点装多个master组件
master组件包含apiserveretcd数据库controller managerscheduler apiserver是master组件的核心提供各种api接口是整个集群的唯一入口其他master组件都通过调用api接口实现各自的功能 scheduler通过apiserver接口监听新建pod副本信息通过调度算法为该pod选择一个最合适的node节点调度算法包括先预选出一批预选节点再优选处一个积分最高的节点调度算法也可自定义配置 controller manager是集群内各种controller资源的核心管理者controller资源有集群内的nodepod副本服务端点命名空间服务账号资源配额等。当某个node宕机时controller manager就会及时发现并执行修复流程保证集群始终可用。 etcd数据库是一个高效的k-v数据库存储着集群中所有的对象和状态。一般和master组件安装在同一个node上高可用模式需要部署数据量集群
node组件
通过code controller可以动态的在集群中添加或删除node资源 node组件包含kubeletkube-proxy kubelet组件是node中唯一一个以非容器形式进程组件节点启动就被自动拉起常驻节点中也称节点管家管理节点使用状况定期向master汇报是master node和worker node连接的桥梁。 kube-proxy组件就是个代理主要是负责将到达的请求负载均衡的转发到后端的多个pod实例上。 一个node组件管着一批pod在执行任务
pod
pod是集群的调度基本单元。 是一个有特定关系的容器的集合。 一个pod就代表集群中的一个进程。 pod一般不由用户创建pod的ip也是不稳定的。
kubectl工具
最左边的kubectl是一个k8s的命令行工具用户使用命令行的方式与集群交互
k8s概念
k8s对象
一种持久化用于表示集群状态的实体一般使用yaml文件描述对象对象信息包括有哪些容器在运行运行在哪个node上有哪些可用资源应用的各种策略重启策略容错策略等。 所有k8s对象状态的集合就是整个k8s集群的状态。 通过kubectl工具或者api可以直接管理k8s对象。
可以类比java中的对象的概念k8s对象也有属性方法另外还有状态信息
class k8s{// 对象的类型包括Pod,ServiceDeployment等Kind kind;//对象的元数据包括name,namespace,labels,annotationsMetadata metadata;//对象的规格信息比如replicas(表示副本信息)selector(标签匹配)等Spec spec;//增删改查等方法public Return method(){...}//对象状态保存在etcd数据库中Status status;
}Name和UID
集群中的所有k8s对象都是由name和UID明确标识。 不同类型对象的name可以是一样的。 UID是每个实例化的对象唯一一个而且是整个集群的生命周期内唯一。 可以用api通过对象的name访问到该对象 /api/{version}/namespaces/{namespace}/{kind}/name
namespace
namespace不仅仅是个属性本身也是一个对象 作用是将物理集群划分为多个虚拟集群 namespace直接完全隔离常用作隔离不同的用户权限 k8s集群内置3个namespacedefaultkube-systemkube-public。
label
label标签是用于建立集群对象直接的灵活的松耦合的多维关联关系。 本质上就是k-v键值对。 一个对象上可以有多个标签 不同类型的对象可以通过相同的标签建立关联关系 作用为了标识对象选择出对象
annotations
annotations注解可以将任意非标识性元数据附加到对象上 annotations本质也是k-v键值对 一般存对象的版本信息时间戳等。