首页 > 其他分享 >第 1 章 Kubernetes 介绍

第 1 章 Kubernetes 介绍

时间:2024-04-01 09:44:06浏览次数:22  
标签:node 容器 Kubernetes 介绍 集群 pod 节点

应用部署方式的演变历史

传统部署方式

  1. 概念
    1. 直接将应用程序部署在物理机上
  2. 优点
    1. 简单,不需要其它技术的参与
  3. 缺点
    1. 不能为应用程序定义资源使用边界,很难合理地计算分配资源,程序之间容易产生影响

虚拟化部署方式

  1. 概念
    1. 在一台物理机上运行多个虚拟机,每个虚拟机都是独立的环境
  2. 优点
    1. 程序环境不会相互产生影响,提供了一定程度的安全性
  3. 缺点
    1. 增加了操作系统,浪费了部分资源

容器化部署方式

  1. 概念
    1. 与虚拟化类似,但是共享操作系统
  2. 优点
    1. 可以保证每个容器拥有自己的文件系统、CPU、内存、进程空间等
    2. 运行应用程序所需的资源都被容器包装,并和底层基础架构解耦
    3. 容器化的应用程序可以跨云服务商、跨 Linux 操作系统发行版进行部署

image-20200505183738289.png

Kubernetes 概述

背景

  1. 容器化部署方式导致了一系列容器编排问题的产生,例如:
    1. 一个容器故障停机了,怎样让另一个容器立刻启动去替补停机的容器
    2. 当并发访问量变大时,怎样进行横向扩充容器数量
    3. ...

  1. 为了解决容器编排问题,产生了一些容器编排软件:
    1. Swarm:Docker 自己的容器编排工具
    2. Mesos:Apache 的一个资源统一管控的工具,需要和 Marathon 结合使用
    3. Kubernetes:Google 开源的容器编排工具
    4. ...

定义

  1. Kubernetes 的本质是一组服务器集群,它可以在集群的每个节点上运行特定的程序,来对节点中的容器进行管理

功能

Kubernetes 的目的是实现资源管理的自动化,主要提供如下功能:

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

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

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

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

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

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

组件

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

控制节点

  1. 控制节点是集群的控制平面,负责集群的决策(管理)
  2. 控制节点的组件
    1. ApiServer
      1. 资源操作的唯一入口
        1. 接收用户输入的命令,提供认证、授权、Api 注册和发现等机制

  1. Scheduler
    1. 负责集群资源调度
      1. 按照预定的调度策略将 pod 调度到相应的 node 节点

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

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

工作节点

  1. 工作节点是集群的数据平面,负责为容器提供运行环境(干活)
  2. 工作节点的组件
    1. Kubelet
      1. 负责维护容器的声明周期
        1. 即通过控制 docker,来创建、更新、销毁容器

  1. KubeProxy
    1. 服务提供容器内部的服务发现和负载均衡

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

举例

Nginx 部署

  1. 一旦 kubernetes 环境启动之后,master 和 node 都会将自身的信息存储到 etcd 数据库中
  2. 服务的安装请求发送到 master 节点的 apiServer 组件
  3. apiServer 组件会调用 scheduler 组件决定将服务安装到哪个 node 节点上
  4. scheduler会从 etcd 中读取各个 node 节点的信息,按照一定的算法进行选择,并将结果告知 apiServer
  5. apiServer 调用 controllerManager 调用 Node 节点安装服务
  6. kubelet 接收到指令后,会通知 docker
  7. docker 启动一个 nginx 的 pod
  8. 如果需要访问 nginx,需要通过 kubeProxy 来对 pod 产生访问的代理

image-20200406184656917.png

概念

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

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

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

  1. Controller
    1. 控制器,通过它来实现对 pod 的管理
      1. 比如
        1. 启动 pod
        2. 停止 pod
        3. 伸缩 pod 的数量
        4. ...

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

  1. Label
    1. 标签,用于对 pod 进行分类
      1. 同一类 pod 会拥有相同的标签

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

image-20200403224313355.png

标签:node,容器,Kubernetes,介绍,集群,pod,节点
From: https://www.cnblogs.com/wndexx/p/18107784

相关文章

  • Redission分布式锁介绍和配置引入
        本人在实际项目用于确保Key一致性经常使用的一种加锁方式,帮助分布式环境中互斥访问。很多人问不用锁不是一样完成目标吗?但需要清楚的是这是在高并发的场景下,多节点同时访问缓存的场景,是一般单体项目所无法比拟的,使用锁方式可以控制并发访问,避免缓存击穿和雪崩等问......
  • Java方法介绍及使用
    目录一方法概念及简单使用1.什么是方法2.方法的定义3.注意事项4.方法调用的执行过程5.实参和形参的关系(重要)6.没有返回值的方法二方法重载关于方法签名三方法递归(注意效率问题)递归的概念递归执行过程分析一方法概念及简单使用1.什么是方法是能够模块化的组......
  • @rollup/plugin-url 使用及原理介绍
    @rollup/plugin-url使用及原理介绍一款用于将导入的文件转换成data-uri或者es模块的插件。安装npminstall@rollup/plugin-url-D使用在rollup.config.js文件中引入插件并进行简单配置。importurlfrom'@rollup/plugin-url';exportdefault{input:'......
  • Base64编码的全面介绍
    1.Base64的定义和作用Base64是一种用64个字符表示二进制数据的编码方式,通常用于在网络传输中将二进制数据转换为可打印字符的形式。Base64编码后的数据由大小写字母、数字和特殊字符组成,可以安全地在文本协议中传输,同时保留数据的完整性。Base64编码解码|一个覆盖广泛主......
  • 【C语言基础篇】字符串处理函数(四)strcmp的介绍及模拟实现
    目录 一、strcmp函数介绍函数原型函数参数功能描述返回值使用示例二、strcmp函数模拟实现思路代码测试         个人主页:    倔强的石头的博客        系列专栏 :C语言指南         C语言刷题系列  系列文章【C语言基础篇......
  • 爬虫介绍
    Python爬虫(1)介绍Python爬虫是一种自动化获取互联网数据的技术,它通过编写程序实现自动访问网站并抓取所需的数据。爬虫是一种自动化获取互联网数据的技术,通过模拟浏览器行为,向目标网站发送请求并获取响应,然后解析响应中的数据。(2)爬虫的常用库(1)requests用于发送HTTP请......
  • STM32之HAL开发——Keil调试工具介绍
    Debug介绍 在Keil工具中有许多常用的小工具,下面将会依次为大家介绍每个工具的用途。命令行窗口 在窗口内可以输入一些指令,来进行断点设置以及删除,一般不常用反汇编窗口可以查看当前C代码的汇编指令标志窗口寄存器窗口可以用来查看......
  • C++—vector的介绍及使用 && vector的模拟实现
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档目录文章目录前言一、vector的介绍及使用1.1vector的介绍1.2vector的使用1.2.1vector的定义1.2.2vectoriterator的使用1.2.3vector空间增长问题1.2.4 vector增删查改1.2.5 vector迭代器......
  • 文件系统 FTP Ubuntu 安装入门介绍
    FTP环境:Ubuntu14.04blogzh_CNubuntu14.04Install全新安装:apt-getinstallvsftpd重新安装:apt-get--reinstallinstallvsftpd卸载并清除配置文件:apt-get--purgeremovevsftpdStart&Restart$servicevsftpdstart$servicevsftpdrestart注意......
  • 嵌入式系统开发专业名词介绍
    原文地址:嵌入式系统开发专业名词介绍-Pleasure的博客下面是正文内容:前言这是一篇笔记,主要用于帮助刚入门嵌入式系统开发的(我)记录分类查阅一些陌生的英文缩写以及专业名词。由于全篇为个人所见及归纳整理,肯定不会入专业书那么全面。希望对大家能有所帮助。点个关注,谢......