请选择 进入手机版 | 继续访问电脑版

Kubernetes基础概念介绍

[复制链接]
丁翼 发表于 2021-1-2 18:59:40 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
Kubernetes底子概念先容



Kubernetes集群根本构成




  • Master: 管理和调理集群资源的。
  • Worker Node: 资源的提供者。Worker提供的资源单位是pod,可以简单明白为K8S平台提供的虚拟机,pod内里是应用容器,容器的CPU和Memory的资源隔离单位,大部门场景,一个pod内里只住一个应用容器,有个别一些场景,一个pod内里住多个容器,此中一个是主容器,其他是辅助容器。同一个pod内里的容器,共享pod的网络和存储资源。
高可用的K8S集群中,Master节点,worker节点都是由多节点构成。可以是物理机,也可以是虚拟机。K8S平台主要是管理集群资源调理问题。简单来讲,就是当有应用发布请求过来的时候,K8S需要根据集群资源的空闲状况,将应用的pod公道的分配到空闲的worker node上。同时K8S需要时刻监督集群,如果有节点大概pod挂了,它需要协调去启动这个pod,包管应用的高可用(自愈self-healing)。别的K8S还需要管理集群的网络,包管pod服务之间可以互通互联。
Master节点的组件




  • etcd: key-value数据库,用来存储集群状态数据,设置,pod信息等等。
  • API Server:作为K8S的接口和通讯总线,集群内部组件也是通过API server和集群举行交互的。API server也可以认为是etcd的署理。API server是唯一可以访问和操纵etcd数据库的组件。
  • Scheduler:是K8S集群中负责调理决定的组件,掌握当前集群资源的使用情况,当有新的应用发出请求被提交到K8S集群,scheduler负责盘算pod是应该分布到哪些work node上面去。
  • Controller Manager: 是包管集群状态最终一致的组件,通过API server监控这个集群的状态,确保实际状态和最终状态保持一致,e.g. 如果一个应用要求发布10个Pods,如果一个POD挂了,controller manager负责重启这个Pod。如果pod起多了,controller manager会关闭多余的Pods。
Worker节点的组件




  • Kubelet:worker node的资源管理者。监听API server上的一些事件,根据master节点上的指示,做一些相关的动作。比方说启动大概关闭pod. 也会想本节点的状态数据陈诉给master节点。Master节点是K8S集群的大脑,kubelet是worker节点上的一个小脑。
  • Container Runtime: 是节点上容器资源的管理者。如果是用docker容器,那container runtime就是docker engine。Kubelet并不直接受理容器上的节点资源,它委托给container runtime举行管理,好比启动大概关闭容器,收集容器的状态等等。Container runtime启动镜像的时候,如果本地没有镜像缓存,就会到Docker Registry/Hub上拉去镜像,然后缓存到本地。
  • Kube-proxy: 用来管理K8S中服务网络。Pod在K8S中是不固定的,pod的IP会变,为了屏蔽Pod IP的厘革,引入了service的抽象概念,service可以屏蔽应用的pod IP,而且在调用的时候举行负载平衡,kube-proxy是负责K8S服务网络的机制,当需要把K8S服务袒露给外网的时候,也需要通过kube-proxy举行转发。
Kubernetes 容器发布流程样例



  • Kubectl下令行工具,向API Server发送一个创建一个新的replicaSet(副本级,规范Pod副本数量)的请求。API server会将该资源请求先存储到etcd当中。
  • Controller manager会监听replicaSet的创建或修改等相关的事件,对于上一步ReplicaSet的创建,controller manager会接到一个通知。
  • Controller manager会比力当前的集群状态和预期的集群状态,会发现不一致,所以需要创建新的pods。会通过第一部kubectl提交的发布模板,在API server当中创建预期的pod资源。
  • Scheduler会监听到需要创建新的pod,会运行调理算法,选择空闲的worker节点,然后通过API Server更新pod的界说,把这些pod指派到详细的worker节点上。至此,Controller Manager + Scheduler 只是通过API Server更新了盼望的集群状态。
  • API Server通知相应的worker节点上的kubelet。
  • Kubelet吸收到通知以后,会指示节点上的container runtime(docker engine)去运行对应的容器。
  • Container runtime会开始下载镜像,启动容器。同时kubelet开始监控容器的运行。至此,容器开始正式运行起来。
Kubernetes 总体架构


Overlay Network(覆盖网络): K8S集群中一般尚有一个网络组件,集群中的pods通过覆盖网络可以实现相互的IP寻址和通讯。实现覆盖网络的技能有Flannel/VxLan/Calico/Weave-Net。
外部的流量如果要访问K8S内部的服务的话,一般要走负载平衡,然后通过kube-proxy间接的转发到pod上。
除了上面讲到的组件,K8S外围尚有存储,监控,日志,分析等配套服务。
小结

参考资料: https://www.bilibili.com/video/BV1Ja4y1x748?p=1


来源:https://blog.csdn.net/ryanlll3/article/details/112063414
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )