K8S是用来解决什么问题的?

K8S是什么?

K8S是单词Kubernetes的缩写,是用于自动部署、扩缩和管理容器化应用程序的开源系统,K8S源自Google 15年生产环境的运维经验,同时凝聚了社区的最佳创意和实践。

K8S是用来解决什么问题的?

K8S在基于容器部署的方式上,提供了一个弹性分布式的框架,支持服务发现与负载均衡、存储、自动部署回滚、自动计算与调度、自动扩缩容等等一系列操作,目的是方便开发者不再需要关注服务运行细节,K8S能够自动进行容器与Pod调度、扩缩容、自动重建等等操作,保证服务尽可能健康的运行。

这样可能不够直观,问大家几个问题就知道K8S是用来干什么的了?

  • 某个容器发生故障,这个时候我们是不是该启动另一个容器?
  • 某台机器负载过高,那么我们之后的容器是不是不能部署在这台机器上?
  • 某个服务请求量突增,我们是不是应该多部署几个运行该服务的容器?
  • 如果某些容器之间需要互相配合怎么办?比如容器A需要容器B的资源,所以容器A一定要在容器B之后运行。
  • 运行多个容器时,我怎么做到它们的运行结果是原子性的?即要么全部成功,或者全部失败。亦或者如果某一个容器失败,我能够不断重启这个容器以达到我的预期状态。

以上问题,都可以交给K8S来解决,它提供了一系列的功能来帮助我们轻松管理和编排容器 ,以达到我们的预期状态,简单来说,K8S解放了开发者的双手,能够最大程度的让部署的服务健康运行,同时能够接入很多第三方工具(如服务监控、数据采集等等),满足开发者的定制化需求。

K8S的工作原理

一个kubernetes集群主要是由控制节点master 、工作节点node构成,每个节点上都会安装不同的组件。

master:集群的控制平面,负责集群的决策(管理)

Master节点上会安装四个重要组件,分别如下:

  • ApiServer:资源操作的唯一入口,接收用户输入的命令,提供认证、授权、API注册和发现等机制
  • Scheduler:负责集群资源调度,按照预定的调度策略将Pod调度到相应的node节点上
  • ControllerManager:负责维护集群的状态,比如程序部署安排、故障检测、自动扩展、滚动更新等
  • Etcd:负责存储集群中各种资源对象的信息,相当于K8S的数据库

Node:集群的数据平面,负责为容器提供运行环境(干活)

Node节点上会安装三个重要组件,分别如下:

  • Kubelet:负责维护容器的生命周期,即通过控制docker,来创建、更新、销毁容器
  • KubeProxy:负责提供集群内部的服务发现和负载均衡
  • Docker:负责节点上容器的各种操作

Pod

  • Pod是最小调度单元
  • Pod里面会包含一个或多个容器(Container)
  • Pod内的容器共享存储及网络,可通过localhost通信
相关推荐
weirong11 小时前
图解 client-go Informer:手写一个 mini-Informer 才敢说懂
kubernetes
.冰块.11 小时前
流量大了自动加 Pod!K8s HPA 扩缩容与 ResourceQuota/LimitRange 资源管控实战
linux·云原生·容器·kubernetes·hpa·quota·limitrange
方便面不加香菜12 小时前
Docker Container -- 容器命令详解
运维·docker·容器
Z21-X13 小时前
云原生运维实战笔记:企业网站综合上云部署与云运维服务全景解析
运维·笔记·学习·云原生
qq_4523962314 小时前
第三篇:《从 ZooKeeper 到 KRaft 的迁移实战:前置条件、三阶段流程与回滚策略》
分布式·zookeeper·云原生
分布式存储与RustFS14 小时前
Longhorn 的卷备份别堆本地盘:用 RustFS 给它当 S3 备份目标
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
工业一体机老司机1 天前
Docker部署工控机采集服务 Compose编排与开机自启
运维·docker·容器
DolitD1 天前
UE像素流与云渲染技术方案对比分析
3d·云原生·ue5·云计算·图形渲染
这个DBA有点耶1 天前
云数据库半夜卡顿,CPU才30%?深挖云盘IOPS突发限制与内核挂起机制
数据库·mysql·云原生
miaobinfei1 天前
docker拉取dify镜像,执行docker compose up -d 报错
运维·docker·容器