kubernetes(k8s)介绍

2023-11-05

记录自己的学习历程

应用部署方式演变

在部署应用程序的方式上,主要经历了三个时代:

  • 传统部署:互联网早期,会直接将应用程序部署在物理机上

    优点:简单,不需要其它技术的参与

    缺点:不能为应用程序定义资源使用边界,很难合理地分配计算资源,而且程序之间容易产生影响

  • 虚拟化部署:可以在一台物理机上运行多个虚拟机,每个虚拟机都是独立的一个环境

    优点:程序环境不会相互产生影响,提供了一定程度的安全性

    缺点:增加了操作系统,浪费了部分资源

  • 容器化部署:与虚拟化类似,但是共享了操作系统

    优点:

    可以保证每个容器拥有自己的文件系统、CPU、内存、进程空间等

    运行应用程序所需要的资源都被容器包装,并和底层基础架构解耦

    容器化的应用程序可以跨云服务商、跨Linux操作系统发行版进行部署

容器化部署方式给带来很多的便利,但是也会出现一些问题,比如说:

  • 一个容器故障停机了,怎么样让另外一个容器立刻启动去替补停机的容器

  • 当并发访问量变大的时候,怎么样做到横向扩展容器数量

这些容器管理的问题统称为容器编排问题,为了解决这些容器编排问题,就产生了一些容器编排的软件:

  • Swarm:Docker自己的容器编排工具

  • Mesos:Apache的一个资源统一管控的工具,需要和Marathon结合使用

  • Kubernetes:Google开源的的容器编排工具

 

kubernetes简介

kubernetes,是一个全新的基于容器技术的分布式架构领先方案,是谷歌严格保密十几年的秘密武器----Borg系统的一个开源版本,于2014年9月发布第一个版本,2015年7月发布第一个正式版本。

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

  • 自我修复:一旦某一个容器崩溃,能够在1秒中左右迅速启动新的容器

  • 弹性伸缩:可以根据需要,自动对集群中正在运行的容器数量进行调整

  • 服务发现:服务可以通过自动发现的形式找到它所依赖的服务

  • 负载均衡:如果一个服务起动了多个容器,能够自动实现请求的负载均衡

  • 版本回退:如果发现新发布的程序版本有问题,可以立即回退到原来的版本

  • 存储编排:可以根据容器自身的需求自动创建存储卷

kubernetes组件

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

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

ApiServer : 资源操作的唯一入口,接收用户输入的命令,提供认证、授权、API注册和发现等机制

Scheduler : 负责集群资源调度,按照预定的调度策略将Pod调度到相应的node节点上

ControllerManager : 负责维护集群的状态,比如程序部署安排、故障检测、自动扩展、滚动更新等

Etcd :负责存储集群中各种资源对象的信息

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

Kubelet : 负责维护容器的生命周期,即通过控制docker,来创建、更新、销毁容器

KubeProxy : 负责提供集群内部的服务发现和负载均衡

Docker : 负责节点上容器的各种操作

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

  1. 首先要明确,一旦kubernetes环境启动之后,master和node都会将自身的信息存储到etcd数据库中

  2. 一个nginx服务的安装请求会首先被发送到master节点的apiServer组件

  3. apiServer组件会调用scheduler组件来决定到底应该把这个服务安装到哪个node节点上

    在此时,它会从etcd中读取各个node节点的信息,然后按照一定的算法进行选择,并将结果告知apiServer

  4. apiServer调用controller-manager去调度Node节点安装nginx服务

  5. kubelet接收到指令后,会通知docker,然后由docker来启动一个nginx的pod

    pod是kubernetes的最小操作单元,容器必须跑在pod中至此,

  6. 一个nginx服务就运行了,如果需要访问nginx,就需要通过kube-proxy来对pod产生访问的代理

这样,外界用户就可以访问集群中的nginx服务了

kubernetes概念

Master:集群控制节点,每个集群需要至少一个master节点负责集群的管控

Node:工作负载节点,由master分配容器到这些node工作节点上,然后node节点上的docker负责容器的运行

Pod:kubernetes的最小控制单元,容器都是运行在pod中的,一个pod中可以有1个或者多个容器

Controller:(狭隘概念)控制器,通过它来实现对pod的管理,比如启动pod、停止pod、伸缩pod的数量等等

Service:pod对外服务的统一入口,下面可以维护者同一类的多个pod

Label:(狭隘概念)标签,用于对pod进行分类,同一类pod会拥有相同的标签

NameSpace:命名空间,用来隔离pod的运行环境

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

kubernetes(k8s)介绍 的相关文章

随机推荐

  • java x86 x64_jdk x86与jdk x64 有什么区别

    展开全部 1 jdk x86与jdk x64版本不同 jdk x86 32位版e68a843231313335323631343130323136353331333431366239 jdk x64 64位版 2 jdk x86与jdk x
  • c++ enable_shared_from_this

    std enable shared from this 是一个类模板 那它是用来干嘛的呢 光看它的名字可能可以猜出它是 返回指向当前对象的shared ptr智能指针 在说明它的作用前我们可以看一下如下代码 include
  • ceph分布式文件存储性能调优

    ceph分布式文件存储性能调优 一 硬件调优 二 BIOS配置 三 网络配置 四 OS配置 五 硬盘调度算法 六 软件层面 七 ceph参数调优 一 硬件调优 1 NVMe SSD 调优 目的 为减少数据跨片开销 方法 将NVMe SSD与
  • 彩笔的第一个模型:DOTA数据集YOLOv5目标检测

    目录 前言 一 下载数据集DOTA和源码 下载YOLOv5模型 切割图片并转化label为YOLO格式 2 DOTA数据集的label格式不能在YOLO模型 里直接使用 需要转化 3 需要做成coco数据集的文件结构 包括文件夹名称 二 修
  • 技术科普丨信噪比

    概念简介 信噪比 英文名称叫做SNR或S N SIGNAL NOISE RATIO 又称为讯噪比 是指一个电子设备或者电子系统中信号与噪声的比例 信噪比的计量单位是dB 对于一张图像来说 计算信噪比可以按照 20lg 信号 噪声 这个公式来
  • Andriod getContext和getActivity

    原创文章 如有转载 请注明出处 http blog csdn net myth13141314 article details 62045162 MainActivity this 表示MainActivity对象 一般用在内部类中指示外面
  • STM32+FATFS文件系统连续在同一个txt文件里写入内容

    移植好fatfs文件系统之后 我们经常要在一个txt文件下写入数据 但是这些数据可能需要多次写入 那怎么办呢 通过这几天的学习 有以下函数可以帮助我们进行多次写入数据 1 打开文件 f open filescr2 0 201711022 t
  • CAN资料整理(三):CAN的位时间、同步、位定时

    目录 一 位时间 二 同步 1 硬同步 2 重新同步 三 位定时 1 传播段延迟时间的确定 2 位定时参数确定 由于CAN属于异步通讯 没有时钟信号线 连接在同一个总线网络中的各个节点会像串口异步通讯那样 节点间会使用约定好的波特率进行通讯
  • ROS+UR机械臂系列-1- 虚拟机及ROS安装

    ROS UR机械臂系列 1 虚拟机及ROS安装 小白 刚开始使用ROS系统 希望可以成一个系列 方便大家参考 避过大坑 最开始使用的是Ubuntu20 04 ROS noetic 遇到问题时 发现很多都在用Ubuntu18 04 ROS m
  • 解决pip安装包时出现 WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None))

    错误描述 anaconda使用pip安装包时会出现无法下载的问题 或者pip直接无反应 可能会出现如下错误提示 WARNING Retrying Retry total 4 connect None read None redirect N
  • 微服务内部服务调用@Inner

    1 外部从Gateway访问 需要鉴权 eg CURD操作 这种是最常使 的 户登录后正常访问接 不需要我们做什么处理 可能有的接 需要加权限字段 2 外部从Gateway访问 不需要鉴权 eg 短信验证码 需要我们将uri加 到secur
  • SLF4J分析

    slf4j Simple Logging Facade for Java 为java提供的简单日志Facade Facade 门面 更底层一点说就是接口 他允许用户以自己的喜好 在工程中通过slf4j接入不同的日志系统 更直观一点 slf4
  • 基于matlab实现平均移动法

    平均移动法 基于matlab实现 代码如下 示例 clc clear load xy mat x y m length y n 4 5 6 7 10 20 n 为移动平均的项数 l length n for i 1 length n 由于
  • 阿里云服务器更换操作系统流程(新版教程)

    阿里云服务器操作系统选择后还可以更改吗 可以的 重装操作系统是免费的 但是需要注意中国大陆地域可以随意更换 中国香港 新加坡等非中国大陆地域的云服务器不支持Windows和Linux操作系统之间变换 阿里云百科来详细说下阿里云服务器重装操作
  • CentOS8、Ubuntu安装mysql5.7,修改密码、配置远程访问、开机自启、创建开发者账户(超级详细)

    下载MYSQL wget http dev mysql com get mysql80 community release el7 3 noarch rpm 安装MYSQL RPM 模块 rpm ivh mysql80 community
  • m3u8文件

    EXTM3U m3u文件头 必须放在第一行 起标示作用 EXT X VERSION 播放列表文件的兼容版本 若不存在此标记 则默认为协议的第一个版本 EXT X MEDIA SEQUENCE 播放列表中的每个媒体 URI 都有一个唯一的整数
  • docker容器内修改配置文件

    一 vim修改 1 进入容器内部 docker exec it id bin bash 2 安装vim 输入命令 apt get update apt get install vim 二 替换配置文件 1 替换配置文件 docker cp
  • 最火前端Web组态软件(可视化)

    前言 随着物联网 大数据等技术高速发展 我们逐步向数字化 可视化的人工智能 AI 时代的方向不断迈进 智能时代是工业 4 0 时代 我国工业领域正努力从 制造 迈向 智造 的新跨越 正文 1 mxgraph 介绍 开源免费 但是需要解决的问
  • CososCreator (Android)-AppLovin MAX 广告聚合平台接入+Firebase统计

    CososCreator 2 4 4 Android Studio 4 2 1 接入SDK有 接max聚合及中介平台 Admob FB applovin pangle mintegral vungle unity 和Firebase 统计
  • kubernetes(k8s)介绍

    记录自己的学习历程 应用部署方式演变 在部署应用程序的方式上 主要经历了三个时代 传统部署 互联网早期 会直接将应用程序部署在物理机上 优点 简单 不需要其它技术的参与 缺点 不能为应用程序定义资源使用边界 很难合理地分配计算资源 而且程序