1、kubernets的工作流程

(1)开始部署新的应用程序,使用kubectl客户端工具和一个准备好的包含应用程序的Deployment的yaml文件;用户通过kubectl命令将文件的内容发送给API Server。

(2)API Server接收到客户端的请求并将资源内容存储到数据库中;在本实例中,存储的数据库使用的是etcd(目前在kubernets最常用的数据库就是etcd。可以根据需要使用其他的数据库)。

(3)controller组件一直在监控系统中的变化;
这些组件包含有:调度器(Scheduler)、replication controllers(用于伸缩副本数量)、endpoint controller(用于管理网络请求等)

(4)ReplicaSet的概念:它作为一个“副本集”对象用于分装对Pod的弹性伸缩,它可以告知Kubernets有一个Pod需要在Kubernets中运行,并且需要根据伸缩pod的实例数量;
        例如,通过ReplicaSet可以在Kubernets中部署一个Pod并在集群中始终维持5个Pod的实例。 ReplicaSet Controller监控数据库中的数据变化,包括新创建的实例定义或者对已有ReplicaSet定义的修改,然后根据在数据库中所观察到的变化,检查实际环境中的该ReplicaSet所拥有的实例数量,如果实例数量超过了5个,则controller会杀掉富余的pod;如果实例的数量不足,则会立即创建新的pod补充;

(5)Scheduler controller会再次检查数据库,并发现在数据库中存在一批尚未被分配到具体执行节点(Node)的pod,这时Scheduler会根据一组相关规则将这些pod分配到可以允许它们的节点上去,并更新数据库,记录这些pod被分配到哪些节点上。

(6)kubelet运行在kubernets集群的每一个执行节点上,kubelet监控数据库中的数据从而发现那些被分配到他所在节点上运行的那些pod,如果发现有新分配到的pod,kubelet将在本节点上运行这个新的pod;所以kubelet会根据它在数据库中看到的数据创建运行pod所需要的容器。这个就是kubernets管理应用程序的基本过程和步骤

  docker engine、kubernets自己并不直接创建容器,它可以通过一个可插拔的层来实现容器的创建,在这一层中可以使用docker或者其他容器引擎,kubernets实现了各种容器引擎的结合。

  图上标识出了容器镜像缓存,在缓存中会存放那些已经下载了的保函应用程序代码的容器镜像;

(7)Kubeproxy运行在集群中的各个主机上负责管理网络通信;当有数据包发送到主机上时,Kubeproxy可以将其路由到正确的pod或者容器,对于从主机发出的数据,Kubeproxy也会通过类似的流程处理,他可以基于请求地址发现远程服务器,并将数据正确路由;在某些情况下,会使用round-robin算法将请求发送给集群中的多个实例。

2、kubernets的一些新特性

(1)Customer Resource Defines(自定义资源类型),代替了 Third Party Resources;CRD是一种可在数据库中存储的用户自定义资源,用户可以运行自己的controller组件来监控这些自定义资源并执行后续的操作,这样一来,用户就可以扩展Kubernets的资源模型而不必为了扩展功能而修改kubernets代码了;
(2)NetworkPolicy:它负责配置Pod组如何与彼此和其他网络端点进行通信。换句话说,它在运行于Kubernetes集群上的Pod间创建防火墙。
(3)Encryption for data at rest in Secrets
(4)"Local Storage" persistent volume type was add -> pod communication
(5)API Aggregation:它可以设置API Server让其成为其他一个或者多个API Server的代理,同样的,这项功能运行用户扩展Kubernets模型定义新的资源类型,这些功能可以被隐藏在主Kubernets API Server之后实现,从而方便用户扩展资源模型;
(6)External admission Controller
(7)Role Based Access Controller(RBAC)is in beta
(8)Kubeadm (tool for deploying kube) is in beta
(9)Node affinity/anti-affinity, taints, tolerations for scheduling

最新文章

  1. JS调用Android、Ios原生控件
  2. JS中的属性和变量的区别
  3. 用这个插件jquery.raty.js————用于星星评价(这个案例用于后台传数据给我,前台显示星星个数)
  4. 电脑不能浏览网页but能登录qq,解决方案总结
  5. DedeCMS Error: (PHP 5.3 and above) Please set request_order
  6. storyboard自动布局时,代码修改 constraint 的值,没有反应
  7. Application.Exit()结束程序,但线程还在的解决方法。
  8. HDU1667 : The Rotation Game
  9. sql语句操作集锦
  10. Java编程思想(1)
  11. Swift中FDMB的使用(增、删、改、查)
  12. RMAN备份之丢失数据文件及控制文件的恢复
  13. AngularJS的初始化
  14. String字符串截取跟替换经典案例
  15. CI框架剖析一
  16. (转载)VB 查询Oracle中blob类型字段,并且把blob中的图片以流的方式显示在Image上
  17. 微服务与Spring Cloud资料
  18. JavaScript黑客是这样窃取比特币的,Vue开发者不用担心!
  19. vue表單
  20. 序列化与Json

热门文章

  1. C# DataTable To Entities
  2. spring .cloud ------------java.lang.RuntimeException: com.netflix.client.ClientException,Caused by: java.lang.IllegalArgumentException: MIME type may not contain reserved characters
  3. 面向对象程序设计(Java)本学期课程改革说明
  4. python 规范
  5. 微信文档采用第三方方式打开选择qq
  6. 1.3.5、CDH 搭建Hadoop在安装之前(端口---Cloudera Search使用的端口)
  7. Template literals
  8. Swagger2
  9. Appium 1.6安装步骤
  10. PHPActiveRecord 学习二