[k8s系列]:kubernetes·概念入门

文章目录

  • 序言
  • [1 kubernetes概述](#1 kubernetes概述)
    • [1.1 kubernetes解决的问题](#1.1 kubernetes解决的问题)
      • [1.1.1 部署方式的演变](#1.1.1 部署方式的演变)
      • [1.1.2 容器化部署------容器编排问题](#1.1.2 容器化部署——容器编排问题)
    • [1.2 kubernetes组件](#1.2 kubernetes组件)
      • [1.2.1 kubernetes组件调用关系](#1.2.1 kubernetes组件调用关系)
      • [1.2.2 调用逻辑示例](#1.2.2 调用逻辑示例)

序言

序言:本文将从,第一节:kubernetes解决的问题、组件和工作原理;

1 kubernetes概述

kubernetes是谷歌Borg系统的一个开源版本,kubernetes的本质是一组服务器集群,kubernetes可以在每个节点上运行特定程序,实现对节点中容器管理,目的是,实现资源管理自动化,主要提供了如下功能:

  • 自我修复:一旦某一个容器崩溃,能够在1s中左右启动容器。
  • 弹性伸缩:可以根据需要,自动对集群中正在运行容器数量进行调整。
  • 服务发现:服务可通过自动发现的形式找到其所依赖的服务。
  • 负载均衡:若一个服务启动多个容器,能自动实现负载均衡。
  • 版本回退:若发现新发布的程序版本有问题,可立即回退到原来版本。
  • 存储编排:根据容器自身需求自动创建存储卷。

1.1 kubernetes解决的问题

1.1.1 部署方式的演变

传统部署 虚拟化部署 容器化部署
解释 早期,直接将应用程序部署在物理机上 在一台物理机上运行多个虚拟机,每个虚拟机都是一个独立环境 与虚拟化类似,但是共享了操作系统
优点 简单,不需其他技术参与 程序环境不会相互影响,每个虚拟机都是一个环境 保证每个容器拥有自己的文件系统、CPU等。实现基础架构解耦,容器化应用程序可以跨云服务器进行部署
缺点 不能为程序资源使用边界,程序间容易产生影响 增加了操作系统,浪费部分资源 ① 一个容器故障停机,如何让另一个容器启动去替补停机的容器;② 当并发访问变大时,如何横向扩展容器数量

1.1.2 容器化部署------容器编排问题

容器编排问题:针对容器化部署中所遇到的:一个容器故障停机,如何使得另一个容器去启动替补;以及当并发访问变大时,如何横向扩展容器的解决方案,产生了一些容器编排软件

  • Swarm:Docker官方容器编排工具。
  • Mesos:Apache的资源统一管理工具,需要与Marathon结合使用。
  • Kubernetes:Google开源容器编排工具。

1.2 kubernetes组件

1.2.1 kubernetes组件调用关系

组件 功能
master(控制节点) 集群的控制平面,负载集群的决策(管理)
ApiServer 资源操作的唯一入口,接收用户输入命令,提供认证、授权、API注册和发现等机制
Scheduler 负责集群资源调度,按照预定调度策略将pod调度到相应node节点
ControllerManger 负责维护集群状态,诸如程度部署安装、故障检测、自动扩展、滚动更新等
Etcd 负责存储集群中各种资源对象信息
node(工作节点) 集群的数据平面,负责为容器提供运行环境(干活)
Kubelet 负责维护容器生命周期,即通过控制docker,来创建、更新、销毁容器
KubeProxy 负责提供集群内部服务发现和负载均衡
Docker 负责节点上容器各种操作

1.2.2 调用逻辑示例

以部署nginx服务,来说明kubernetes系统各个组件调用关系:

  • ① 首先,当kubernetes环境启动后,master和node都会将自身信息存储到etcd数据库中。
  • ② 当我们发送安装nginx服务请求,首先会被发送到master节点的apiServer组件。
  • ③ apiServer组件会调用schedule组件,来决定应该把这个服务安装到哪个node节点。同时,schedule组件会从etcd中读取各个node节点信息,然后按照算法进行选择,并将结果反馈给apiServer。
  • ④ apiServer调用controller-manager去调度node节点安装nginx服务。
  • ⑤ 的pod(pod相当于一个容器)。
    pod是kubernetes的最小操作单元,容器必须跑在pod中。
相关推荐
工业一体机老司机7 小时前
Docker部署工控机采集服务 Compose编排与开机自启
运维·docker·容器
DolitD8 小时前
UE像素流与云渲染技术方案对比分析
3d·云原生·ue5·云计算·图形渲染
这个DBA有点耶10 小时前
云数据库半夜卡顿,CPU才30%?深挖云盘IOPS突发限制与内核挂起机制
数据库·mysql·云原生
miaobinfei12 小时前
docker拉取dify镜像,执行docker compose up -d 报错
运维·docker·容器
kobe_OKOK_13 小时前
docker compose命名卷 映射到宿主机的路径
运维·docker·容器
无言听风雨丶14 小时前
Linux 容器本质探秘:Cgroup 与 Namespace 深度解析与实战
linux·运维·服务器·kubernetes
分布式存储与RustFS15 小时前
JuiceFS 接 RustFS 当数据后端:把对象存储挂成本地文件系统
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
孔令飞18 小时前
很多人想学AI Infra,今天推荐一个 AI Agent / AI Infra 学习路线
云原生·go·ai编程
晨陌y18 小时前
Flare自托管导航页教程:Docker部署、多用户、API与公网访问
运维·docker·容器
无言听风雨丶18 小时前
Kubernetes GitOps 持续交付实战:用 Argo CD 让 Git 成为集群事实源
git·elasticsearch·kubernetes