老男孩教育专注IT教育10余年,只培养IT技术精英

全国免费咨询电话(渠道合作):400-609-2893

【LinuxSRE工程师培训】kubernetes集群部署!

老男孩IT教育

技术博客

2022年8月29日 16:44

Kubernetes是Google 2014年创建管理的,是Google 10多年大规模容器管理技术Borg的开源版本。它是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。

  Kubernetes是Google 2014年创建管理的,是Google 10多年大规模容器管理技术Borg的开源版本。它是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。

  通过Kubernetes你可以:

  •   快速部署应用
  •   快速扩展应用
  •   无缝对接新的应用功能
  •   节省资源,优化硬件资源的使用

  Kubernetes 特点:

  •   可移植: 支持公有云,私有云,混合云,多重云(multi-cloud)
  •   可扩展: 模块化, 插件化, 可挂载, 可组合
  •   自动化: 自动部署,自动重启,自动复制,自动伸缩/扩展

LinuxSRE运维云计算课程

  k8s有什么功能

  | 自动化上线和回滚

  •   Kubernetes会分步骤地将针对应用或其配置的更改上线,同时监视应用程序运行状况确保你不会同时终止所有实例
  •   如果出现问题,Kubernetes 会为你回滚所作更改。你应该充分利用不断成长的部署方案生态系统

  | 服务发现与负载均衡

  •   无需修改你的应用程序即可使用陌生的服务发现机制
  •   Kubernetes为容器提供了自己的IP地址和一个DNS名称,并且可以在它们之间实现负载均衡

  | 存储编排

  •   自动挂载所选存储系统,包括本地存储、诸如GCP或AWS之类公有云提供商所提供的存储
  •   或者诸如NFS、iSCSI、Gluster、Ceph、Cinder 或 Flocker 这类网络存储系统

  | Secret和配置管理

  •   部署和更新Secrets和应用程序的配置而不必重新构建容器镜像,且不必将软件堆栈配置中的秘密信息暴露出来

  | 自动装箱

  •   根据资源需求和其他约束自动放置容器,同时避免影响可用性
  •   将关键性工作负载和尽力而为性质的服务工作负载进行混合放置,以提高资源利用率并节省更多资源

  | 批量执行

  •   除了服务之外,Kubernetes 还可以管理你的批处理和 CI 工作负载,在期望时替换掉失效的容器

  | IPv4/IPv6 双协议栈

  •   为Pod和Service分配IPv4和IPv6地址

  | 水平扩缩

  •   使用一个简单的命令、一个UI或基于CPU使用情况自动对应用程序进行扩缩

  | 自我修复

  •   重新启动失败的容器,在节点死亡时替换并重新调度容器,杀死不响应用户定义的健康检查的容器
  •   并且在它们准备好服务之前不会将它们公布给客户端

  | 为扩展性设计

  •   无需更改上游源码即可扩展你的 Kubernetes 集群

  kubernetes 集群架构图

  kubernetes 组件

  | Control Plane组成部分

  Scheduler:

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

  Controller Manager:

  •   Kube-controller-manager,处理集群中常规后台任务,一个资源对应一个控制器,而ControllerManager就是负责管理这些控制器的

  Cloud Controller Manager:

  •   用在云平台上的Kube-controller-manager组件
  •   如果我们直接在物理机上部署的话,可以不使用该组件

  API Server:

  •   kube-apiserver,集群的统一入口,各组件协调者,以RESTFUL API提供接口服务
  •   所有对象资源的增删改查和监听操作都交给APIServer处理后再提交给etcd存储

  Etcd:

  •   分布式键值存储系统,用于保存集群状态元数据信息,比如Pod,Service等对象信息
  •   这个数据库是可以单独拿出来部署,只需要API server可以连接到该分布式数据库集群即可

  | Node组成部分

  kubelet:

  •   可以理解为Master在工作节点上的Agent,管理本机运行容器的生命周期
  •   比如创建容器,Pod挂载数据卷,下载secret,获取容器的节点状态等工作
  •   kubelet将每一个Pod转换成一组容器

  kube-proxy:

  •   在工作节点上实现Pod网络代理,维护网络规则和四层负载均衡工作
  •   换句话说,就是用于负责Pod网络路由,用于对外提供访问的实现
  •   可以找到你关心的项目所在的pod节点

  POD:

  •   用户划分容器的最小单位,一个POD可以存在多个容器

  docker/rocket(rkt,已停止支持):

  •   容器引擎,用于运行容器

  | 附加组件(Add-ons)

  除了上面提到的核心组件,还有一些推荐的附加组件(Add-ons)

  •   kube-dns: 负责为整个集群提供DNS服务
  •   Ingress Controller: 为服务提供外网入口
  •   Heapster: 提供资源监控
  •   Dashboard: 提供GUI
  •   Federation: 提供跨可用区的集群
  •   Fluentd-elasticsearch: 提供集群日志采集、存储与查询

  由于内容篇幅过长,分两篇文章进行发布,其余内容见链接:kubernetes集群部署(二)!Linux运维培训班

  为了让学员学以致用,老男孩教育不断更新Linux培训教学大纲,与一众讲师精心打造Linux云计算SRE课程体系。老男孩教育Linux云计算SRE运维课程,从零基础开始授课,适合零基础且对Linux感兴趣的学员学习。课程的主要目的就是培养出专业的Linux系统工程师,名师授课全程面授教学,边讲边练帮助学员高效掌握Linux技术。

本文经授权发布,不代表老男孩教育立场。如若转载请联系原作者。