Kubernetes原理详解

一、Kubernetes是什么?

        Kubernetes是一个完备的分布式系统支撑平台。Kubernetes具有完备的集群管理能力,包括多层次的安全防护和准入机制、多租户应用支撑能力、透明的服务注册和服务发现机制、内建智能负载均衡器、强大的故障发现和自我修复能力、服务滚动升级和在线扩容能力、可扩展的资源自动调度机制,以及多粒度的资源配额管理能力。

二、Kubernetes集群架构

Master组件

  • kube-apiserver

        Kube-apiserver的核心功能是提供了Kubernetes各类资源对象(如Pod、RC、Service等)的增删改查及Watch等HTTPRest接口,成为集群内各个功能模块之间数据交互和通信的中心枢纽,是整个系统的数据总线和数据中心。除此以为,它还有以下一些功能特性:

  1. 是集群管理的API入口。
  2. 是资源配额控制入口。
  3. 提供了完整的集群安全机制。
  • kube-controller-manager

        ControllerManager作为集群内部的管理控制中心,负责集群内的Node、Pod副本、服务端点(EndPoint)、命名空间(NameSpace)、服务账号(ServiceAccount)、资源定额(ResourceQuota)等的管理,当某个Node意外宕机,ControllerManager会及时发现此故障并执行自动化修复流程,确保集群始终处于预期的工作状态

  • kube-scheduler

        根据调度算法为新创建的Pod选择一个Node节点,可以任意部署,可以部署在同一个节点上,也可以部署在不同的节点上。

  • etcd

      分布式,可靠的键值存储,可用于分布式系统中存储关键核心数据。从简单的应用程序到 Kubernetes 再到任何复杂性的应用程序都可以从 etcd 中读写数据。此处专用于保存集群相关的数据。

Node组件

  • kubelet

       kubelet是Master在Node节点上的agent,管理本机运行容器的生命周期,比如创建容器、Pod挂载数据卷、下载secret、获取容器和节点状态等工作。kubelet将每个Pod转换成一组容器。

  • kube-proxy

       在Node节点上实现Pod网络代理,维护网络规则和四层负载均衡工作。

  • docker或rocker

       容器引擎,运行容器

  • Pod

       kubernetes 中最小的部署单元;是一组容器的集合,每一个 pod 中的容器都是共享网络的;pod 的生命周期是短暂的,并非一直存在,会随着服务器的重新启动或者重新部署而更新。

三、Kubernetes的特点

  • 自动装箱

      这是 Kubernetes 最显着的特性之一,Kubernetes 根据所需资源和其他限制条件智能地定位容器,而不会影响可用性。

      Kubernetes 提供资源管理,它可以自动指定 Pod 中的每个容器如何消耗 CPU 和 RAM 等资源。

  • 负载发现和负载均衡

        服务发现和负载均衡在 Kubernetes 中作为服务提供,服务以一致的方式跨集群将 Pod 连接到网络。确定如何连接到服务的过程称为服务发现。

        容器的集合是 POD,具有相同功能集的 POD 被组合成一个集合,称为服务。每个 POD 将被分配一个 IP 地址和单个 DNS 名称用于服务(POD 集),借助这种架构,Kubernetes 将对 POD 之间的网络和通信进行明确定义的控制,并且可以实现负载平衡。

       在组成单个服务的实例集合前放置负载均衡器(反向代理,如 Nginx 或 HAProxy)是解决服务发现问题的常用技术。

        负载平衡器的地址(DNS 名称,或者通常情况下是 IP)是一个相当可靠的数据,它可以在开发或配置阶段提供给客户端,并且可以在单个客户端的生命周期中保持不变。之后,从客户端的角度来看,联系多实例服务与访问单个网络端点没有什么不同,换句话说,服务发现完全发生在服务器端。

  • 存储编排

     自动实现存储系统挂载及应用,对有状态的应用实现数据持久化,存储系统可以来自于本地目录、网络存储(NFS、ceph、Gluster 等)。

  • 自愈

       当容器启动失败时自动重启容器;当部署的 Node 节点出现问题时,会对容器进行重新部署和调度;当容器未通过监控检查时,会关闭此容器,直到容器正常运行才会对外提供服务。

  • 自动推出和回滚    

       自动推出:       

       应用程序的更新称为rollout,这是在 Kubernetes 中使用滚动升级完成的。通过使用新的 Pod 实例逐步升级,滚动更新允许在零停机时间的情况下更新部署,新的 Pod 将被安排在有可用资源的节点上。

       回滚:  

       当 Deployment 不稳定时,例如当它循环崩溃时,您可能需要回滚 Deployment。默认情况下,系统会保存所有 Deployment 的 rollout 历史,以便您可以随时回滚。

  • Secret和配置映射

       Secret:

       Secret是一小段机密数据,例如密码、令牌或密钥。或者,此类信息可能包含在 Pod 规范或容器映像中。必须首先创建Secret,然后才能将其引入到 Pod 中,与其将机密数据放在容器图片或 Pod 定义中,不如将其保密更安全、更具适应性。

      配置映射:

     ConfigMap 是一个键值对存储,它是一个用于存储非机密数据的 API 对象,Pod 可以将 ConfigMap 用作环境变量、命令行参数或卷配置文件。它允许您将特定于环境的配置与容器映像分离,从而允许您简单地移植应用程序。ConfigMaps 的配置分为两个阶段,第一步是制作 ConfigMap,然后将它们注入到 pod 中。

  • 水平缩放

       伸缩性强,通过简单的命令、用户 UI 界面或 CPU 等资源使用情况,对应用容器进行规模扩大或缩减。

  • 批处理

      可提供一次性任务、定时任务,满足批量数据处理和分析。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT运维先森

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值