Kubernetes

简介


k8s是google开源的容器化编排引擎,它支持自动化部署,大规模可伸缩,应用容器化管理.在生产环境中部署一个应用程序时,通常需要部署该应用程序的多个实例一遍进行均衡负载

在k8s中,我们可以创建多个容器,每个容器里面运行一个应用实例,然后通过内置的负载均衡策略,实现对这一组应用实例的管理,发现,访问,这些细节都不需要运维人员进行复杂的手工配置和处理

Kubernetes是一个轻便的可以扩展的开源平台,由于管理容器化应用和服务.通过kubernetes能够进行应用的自动化部署和扩缩容.在kubernetes中会将应用的日期组合成一个逻辑单元以更易管理和发现,kubernetes积累了作为谷歌生产环境15年的开发经验,并吸收了来自社区的最佳想法和实践

功能

自动装箱

基于容器对应用运行环境的资源配置要求自动部署应用容器

自我修复能力

当容器失败时,会对容器进行重启

当锁部署的node节点有问题时,会对容器进行重新部署和重新调度

特性

  1. 自动装箱:基于容器对用于缓解的资源配置要求自动部署应用容器
  2. 自我修复:当容器失败时,会对容器进行重启,当所部属的node节点有问题时,会对容器进行重新部署和重新调度,当容器未通过检查时,会关闭此容器知道容器正常运行时,才会对外提供服务
  3. 水平扩展:通过简单的命令,用户UI界面或基于CPU等资源的使用情况,对应用容器进行大规模剪裁
  4. 服务发现,用户不需使用额外的服务发现机制,就能够基于k8s自身能力实现服务发现和负载均衡
  5. 滚动更新:可以根据应用的变化,对容器运行的应用进行一次性或者批量更新
  6. 版本回退:根据应用的变化,对应用容器运行的应用,进行一次性或批量式更新
  7. 秘钥和配置:在不需要重新构建镜像的情况下,可以部署和更新秘钥和应用配置,类似热部署
  8. 存储编排:自动实现存储系统挂载及应用,特别对于有状态应用实现数据持久化非常重要,存储系统可以来自于本地,网络存储(NFS,Gluster,Ceph等)公共云存储
  9. 批处理:提供一次性任务,定时任务,满足批量数据处理和分析的场景

集群架构组件

master(主节点)和node(工作节点)

master组件

apiserver:集群统一入口,以restful方式提供,交给etcd存储

sheduler:节点调度,选择node节点进行应用部署

controller-manage:处理及群众常规后台任务,一个资源对应一个控制器

etcd:存储系统,用于保存集群相关数据

node组件

kubelet: master在node节点的代表,管理本机容器

kube-proxy:提供网络代理,负载均衡

核心概念

pod

  • k8s的最小部署单元是pod
  • 他是一组容器的集合
  • 一组pod是共享网络的
  • 生命周期短暂

controller

  • 确定预期的pod副本数量
  • 无状态应用部署(可以直接用)
  • 有状态应用部署(不能直接用)
  • 确保所有的node都运行同一个pod
  • 一次性任务和定时任务

service

  • 定义一组pod访问的规则
Last modification:August 12, 2022
如果觉得我的文章对你有用,请随意赞赏