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

文章目录

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

序言

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

1 kubernetes概述

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

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

1.1 kubernetes解决的问题

1.1.1 部署方式的演变

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

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

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

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

1.2 kubernetes组件

1.2.1 kubernetes组件调用关系

[k8s系列]:kubernetes·概念入门_第2张图片

组件 功能
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中。

你可能感兴趣的:(k8s,kubernetes,容器,云原生)