认识K8s

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控制器

  1. deployment:部署无状态应用(没有实时数据需要存储);同时也负责管理replicaset(维持Pod副本数量始终符合预期状态)和Pod(容器化的应用程序)
  2. statefulset:部署有状态应用(有实时数据需要存储)
  3. daemonset:在每个node节点上都部署一个Pod副本
  4. job:一次性的部署短期任务的Pod(执行完任务后会自动退出)
  5. 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进行转发。 

  • 15
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值