认识K8s

嚴華  论坛元老 | 2024-7-31 12:31:34 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1017|帖子 1017|积分 3051

1.K8S 根本概念

K8s的全称为 Kubernetes (K12345678S)
作用


  • 用于主动部署、扩展和管理“容器化(containerized)应用程序”的开源系统。
  • 可以明白成 K8S 是负责主动化运维管理多个容器化程序(比如 Docker)的集群,是一个生态极其丰富的容器编排框架工具。
K8S是一款强盛的容器编排平台,可以帮助企业实现容器化的业务部署和管理,提升效率和可靠性。
K8S是一个容器集群管理系统,在Docker等容器技术的根本上,为容器化的应用提供部署运行、资源调理、服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性。
2.K8s的特点 

   主动化管理:大大减少了人工干预,提高了应用部署和管理的效率。
弹性伸缩:能够根据负载主动调解容器的副本数量,实现资源的高效利用。
高可用性:通过副本和故障转移机制,确保应用的持续可用。
负载平衡:可以在多个节点上主动分配负载,实现负载平衡。
跨平台支持:可以在不同的根本设施上运行,包罗物理机、虚拟机和云平台。
  3.核心组件 

K8S有 masterworker node 两类节点
master节点(负责K8S集群的管理和资源调理等运维工作)


  • apiserver:是全部服务请求的同一访问入口,负责接收、验证和转发请求
  • controller-manager:控制器管理器,负责管理K8S各种资源对象的控制器;并通过apiserver监控整个K8S集群的资源状态,并确保资源始终处于预期的工作状态
  • scheduler:资源调理器,负责Pod资源的调理,通过调理算法(预选/优选策略)为待部署的Pod选择最适合的node节点
  • etcd:K8S集群的数据库,是一种键值对存储布局的分布式数据库,负责存储K8S集群全部配置和状态信息,仅apiserver拥有访问和读写权限
worker node节点(负责运行工作负载,即容器应用)


  • kubelet:接收apiserver的指令,创建和管理Pod及其容器的生命周期;定期网络节点的资源利用情况,并上报给apiserver
  • kube-proxy:负责实现Pod网络署理,维护网络规则和四层负载平衡
  • 容器运行时/容器引擎:运行容器
4.K8S创建Pod资源对象的工作流程


   1)用户通过客户端发送创建Pod的请求给apiserver
2)apiserver接收到请求并进行认证后,将请求信息存储到etcd中
3)controller-manager通过list-watch监听到apiserver的指令后,会根据请求信息中的资料配置模板创建Pod资源
4)scheduler也通过list-watch监听到apiserver的指令后,开始调理新创建的Pod,会根据调理算法的预选策略和优选策略选择出最适合的node节点来部署Pod
5)node节点上的kubelet通过list-watch监听到apiserver的指令后,会在指定的节点上创建Pod,并管理其容器的生命周期
6)用户还可以通过apiserver在kube-proxy上配置相应的网络规则,实现Pod网络署理和负载平衡
  5.K8S资源对象 

Pod:是K8S能够创建和管理的最小单元。一个Pod里可以包含一个或多个应用容器,同一个Pod里的容器之间共享网络、存储等资源(容器之间可以通过localhost相互访问,还可以共享Pod的存储卷)
Pod控制器

  • deployment:部署无状态应用(没有实时数据需要存储);同时也负责管理replicaset(维持Pod副本数量始终符合预期状态)和Pod(容器化的应用程序)
  • statefulset:部署有状态应用(有实时数据需要存储)
  • daemonset:在每个node节点上都部署一个Pod副本
  • job:一次性的部署短期任务的Pod(执行完任务后会主动退出)
  • cronjob:周期性的部署短期任务的Pod(执行完任务后会主动退出)
service:在K8S集群内部,为通过标签选择器相关联的一组Pod提供一个同一的访问入口(clusterIP)和负载平衡(只支持四层);
        service 通过标签选择器关联Pod的标签,从而主动发现相关联Pod的端点(Pod的IP和端口)
ingress:作为K8S集群外部的访问入口,可界说ingress规则根据不同的域名或URL路径绑定并转发请求给指定的service,支持七层负载平衡
volume:Pod中容器可以访问的文件系统
6.K8S资源配置信息

   apiversion:   指定资源对象利用的api接口版本
kind:         指定资源对象的类型
metadata:     指定资源对象的元数据信息,比如name(资源名称)、namespace(命名空间)、annotation(注释)、label(标签)
spec:         指定资源对象的配置属性,比如副本数、镜像、网络模式、存储卷
status:       资源对象在当前的运行状态信息 
  
label:标签,将一个或多个键值对标识关联到某个资源对象,用于对资源对象进行分组
label selector:标签选择器,用于查询和筛选拥有指定标签的资源对象
annotation:注释,用于资源对象的注释信息;还可以用于开启一些特殊资源对象的功能特性
name:资源名称
namespace:命名空间,用于隔离资源名称的。在同一个命名空间中,同类型的资源名称是唯一的
  7.k8s集群外部访问的过程 


    集群外部访问需要用ingress作为集群外部入口访问入口,ingress根据不同的域名或者url路径绑定不同的servers,根据外部的路径,转发给相应的servers,再通过servers想关联的pod进行转发。 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

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

本版积分规则

嚴華

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表