k8s---什么是k8s?各组件的作用

文章目录

  • 一:k8s概念
    • 1.1:公有云的类型
    • 1.2:资源管理器的诞生
    • 1.3:k8s的优势
  • 二:k8s的特性
    • 2.1:自我修复
    • 2.2:弹性伸缩
    • 2.3:自动部署和回滚
    • 2.4:服务发现于负载均衡
    • 2.5:机密和配置管理
    • 2.6:存储编排
    • 2.7:批处理
  • 三:kubernetes集群
    • 3.1:集群架构
    • 3.2:组件介绍
    • 3.3:kubernetes核心概念

一:k8s概念

1.1:公有云的类型

  1. IAAS:基础设施即服务
  • Infrastructure-as-a-Service(IAAS),国内做的中最好是的就是阿里云
  • 还有其他的大的IAAS公司,包括Amazon、Microsoft、VMWare、Rackspace和Red Hat。
  • 但是这些公司都有自己的专长,比如Amazon和微软提供的不只是IAAS,他们还会将其计算能力出租给你来host你的网站
  1. PAAS:平台即服务
  • Platfrom-as-a-Service(PAAS),某些时候也叫中间件,PAAS公司在网上提供各种开发和分发应用的解决方案,比如虚拟服务和操作系统
  • 一些大的PAAS提供者有Google App Engine、Microsoft Azure、Force.com、Heroku、Engine Yard等,国内做的最好的就是新浪云
  1. SAAS:软件即服务
  • Software-as-a-Service(SAAS),比如:Google Apps、Dropbox、Salesforce、Cisco WebEx、Concur和Go ToMeeting,做的最好的是Microsoft Office 365

1.2:资源管理器的诞生

  • 有了以上这些公有云之后,我们需要对其进行资源管理,那么此时就诞生了资源管理器:MESOS-Docker Swarm-Kubernetes
  • MESOS:Mesos是Apache旗下的开源分布式资源管理框架,它被称为是分布式系统的内核,后来在twitter得到广泛使用
  • Twitter也是mesos的最大客户,但是大概在2019年5月份,Twitter宣布不再使用MESOS,而改用kubernetes,至此,Mesos已经是慢慢的被淘汰了
  • Docker Swarm也是一个非常轻量的群集管理工具,只有十几MB大小
  • Swarm是Docker官方提供的一款集群管理工具,其主要工作是把若干台Docker主机抽象为一个整体,并且通过一个入口统一管理这些Docker主机上的各种Docker资源,但是Swarm和Kubernetes比较类似,因为更加轻,所以具有的功能较kubernetes更少一些
  • 大概在2009年7月份的时候,阿里云宣布将Docker Swarm从选项列表中剔除,这也意味着在不久的将来Docker Swarm也会像Mesos一样慢慢被淘汰掉
  • Kubernetes,作为亚洲的选手,起成为主流已是必然,Kubernetes是容器集群管理新系统,是一个开源的平台,可以实现容器集群的自动化部署、自动扩缩容、维护功能
  • Kubernetes是Google 2014年创建管理的,是Goole 10多年来大规模容器管理技术Borg的开源版本
  • Kubernetes的名字来自希腊语,意为“舵手”或“领航员”
  • Kubernetes也叫k8s,8是中间的8个字母

1.3:k8s的优势

  • 轻量级:消耗资源小,开源,弹性伸缩,负载均衡:IPVS
  • 可移植:支持公有云、私有云、混合云、多重云(multi-cloud)
  • 可扩展:模块化,插件化,可挂载,可组合
  • 自动化:自动部署,自动重启,自动复制,自动伸缩/扩展

二:k8s的特性

2.1:自我修复

  • 在节点故障时可以删除失效容器,可以创建新的容器,替换和重新部署,保证预期的副本数量,kill掉健康检查失败的容器,并且在容器未准备好之前不会处理客户端情况,确保线上服务不会中断

2.2:弹性伸缩

  • 使用命令、UI或者k8s基于cpu使用情况自动快速扩容和缩容应用程序实例,保证应用业务高峰并发时的高可用性,业务低峰时回收资源,以最小的成本运行

2.3:自动部署和回滚

  • k8s采用滚动更新策略更新应用,一次更新一个pod,而不是同时删除所有pod,如果更新过程中出现问题,将回滚恢复,确保升级不影响业务

2.4:服务发现于负载均衡

  • k8s为多个容器提供一个统一的访问入口(内部IP地址和一个dns名称)并且负载均衡关联所有的容器,使得用户无需考虑容器IP问题

2.5:机密和配置管理

  • 管理机密数据和应用程序配置,而不需要把敏感数据暴露在径向力,提高敏感数据安全性,并可以将一些常用的配置存储在k8s中,方便应用程序调用

2.6:存储编排

  • 挂在外部存储系统,无论是来自本地存储、公有云(aws)、还是网络存储(nfs、GFS、ceph),都作为集群资源的一部分使用,极大提高存储使用灵活性

2.7:批处理

  • 提供一次性任务、定时任务:满足批量数据处理和分析的场景

三:kubernetes集群

3.1:集群架构

  • node:业务节点
  • master:主控节点
  1. 主控节点的API server是其中唯一入口
  2. apiserver管理所有的事务,并把信息记录到etcd数据库中
  3. etcd有一个自动服务发现的特性机制,etcd会搭建有三个节点的集群,实现三副本
  4. scheduler调度器用来调度资源,查看业务节点的资源情况,确定在哪个node上创建pod,把指令告知API server
  5. 控制管理器controller-manager管理pod
  6. pod可以分为有状态和无状态的pod,一个pod里最好只放一个容器
  7. api server把任务下发给业务节点的kubelete去执行
  8. 客户访问通过kube-proxy去访问pod
  9. pod下面的不一定是docker,还有别的容器
  10. 一般pod中包含一个容器,但有个别情况,比如elk日志分析系统,elk会在pod内多放一个logstash收集日志

3.2:组件介绍

  1. master组件
  • kube-apiserver:集群的统一入口,各组件之间的协调者,以restful api提供接口服务,所有对象资源的增删改查和监听操作都交给apiserver处理后再交给etcd存储记录
  • kube-controller-manager:处理集群中常规的后台任务,一种资源对应一个控制器,controller-manager就是负责这些控制器的
  • kube-scheduler:根据调度算法为新创建的pod选择一个node节点,可以任意指定部署,可以部署在同一个节点上,也可以部署在不同节点上
  • etcd:分布式键值存储系统,用户保存集群状态数据,比如pod、service等对象信息
  1. node组件
  • kubelet:kubelet是master在node节点上的代理agent,管理本node运行容器的生命周期。比如:创建容器、pod挂载数据卷、下载serect、获取容器和节点状态等工作,kubelet将每个pod转换成一组容器
  • kube-proxy:在node节点上实现pod的网络代理,维护网络规则和四层的负载均衡工作
  • docker或rockert:容器引擎,运行容器

3.3:kubernetes核心概念

  1. pod
  • 最小部署单元
  • 一组容器的集合
  • 一个pod中的容器共享网络命名空间
  • pod是短暂的
  1. controllers:
  • replicaset:确保预期的pod副本数量
  • deployment:无状态应用部署,比如nginx、apache,一定程度上的增减不会影响客户体验
  • statefulset:有状态应用部署,是独一无二型的,会影响到客户的体验
  • daemonset:确保所有node运行同一个pod,确保pod在统一命名空间
  • job:一次性任务
  • cronjob:定时任务
  • 更高级层次对象:部署和管理pod
  1. service:
  • 防止pod失联
  • 定义一组pod的访问策略
  • 确保了每个pod的独立性和安全性
  1. other:
  • label:标签,附加到某个资源上,用户关联对象、查询和筛选
  • namespaces:命名空间,将对象从逻辑上隔离
  • annotations:注释
  • 核心层:是Kubernetes最核心的层面,对外提供API构建高层的应用,对内提供插件式应用执行环境;
  • 应用层:部署(无状态应用、有状态应用、批处理任务、集群应用等)和路由(服务发现、DNS解析等);
  • 管理层:系统度量(如基础设施、容器和网络的度量),自动化(如自动扩展、动态Provision等)以及策略管理(RBAC、Quota、PAP、NetworkPolicy等);
  • 接口层:kubectl命令行工具、客户端SDK以及集群联邦;
  • 生态系统:在接口层之上的庞大容器集群管理调度的生态系统,可以划分为两个范畴;
  • Kubernetes外部:日志、监控、配置管理、CI、Workflow、FaaS、OTS应用、Chat Ops等;
  • Kubernetes内部:CRI、CNI、CVI、镜像仓库、Cloud Provider、集群自身的配置和管理等。

你可能感兴趣的:(Kubernetes/k8s,kubernetes,k8s,组件管理分析)