当前位置: 首页 > news >正文

[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中左右启动容器。
  • 弹性伸缩:可以根据需要,自动对集群中正在运行容器数量进行调整。
  • 服务发现:服务可通过自动发现的形式找到其所依赖的服务。
  • 负载均衡:若一个服务启动多个容器,能自动实现负载均衡。
  • 版本回退:若发现新发布的程序版本有问题,可立即回退到原来版本。
  • 存储编排:根据容器自身需求自动创建存储卷。
    在这里插入图片描述

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中。

相关文章:

  • C++中 this指针、构造函数、析构函数
  • 数据结构系统刷题
  • 【vue】图片加载骨架
  • 如何做好一份全面的市场调查报告?
  • 2024年数学建模美赛 分析与编程
  • USB-C显示器:未来显示技术的革新者
  • 【Docker】linux、nginx、容器镜像三者基本概念
  • Windows系统安装OpenSSH+VS Code结合内网穿透实现远程开发
  • 【论文阅读】Long-Tailed Recognition via Weight Balancing(CVPR2022)附MaxNorm的代码
  • Android Handler完全解读
  • C语言 | 求最大/小值小技巧:fmax、fmin函数
  • 正则表达式 文本三剑客
  • 2024 年, Web 前端开发趋势
  • JAVA项目扩展-多数据库连接(实现一个简单的数据库jdbc连接池)
  • 第十章 单调栈part02(● 503.下一个更大元素II ● 42. 接雨水 )
  • java第三方包学习之lombok
  • Java读取Properties文件的六种方法
  • JDK9: 集成 Jshell 和 Maven 项目.
  • Linux gpio口使用方法
  • Redis在Web项目中的应用与实践
  • uva 10370 Above Average
  • vue学习系列(二)vue-cli
  • 搞机器学习要哪些技能
  • 官方解决所有 npm 全局安装权限问题
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 聊聊flink的BlobWriter
  • 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • 主流的CSS水平和垂直居中技术大全
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • (附源码)基于ssm的模具配件账单管理系统 毕业设计 081848
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • (原創) 是否该学PetShop将Model和BLL分开? (.NET) (N-Tier) (PetShop) (OO)
  • (转)关于pipe()的详细解析
  • (转)甲方乙方——赵民谈找工作
  • (转载)PyTorch代码规范最佳实践和样式指南
  • *p=a是把a的值赋给p,p=a是把a的地址赋给p。
  • .“空心村”成因分析及解决对策122344
  • .Net - 类的介绍
  • .NET WebClient 类下载部分文件会错误?可能是解压缩的锅
  • .NET 解决重复提交问题
  • .Net7 环境安装配置
  • .netcore如何运行环境安装到Linux服务器
  • .Net程序帮助文档制作
  • .NET开源项目介绍及资源推荐:数据持久层 (微软MVP写作)
  • @KafkaListener注解详解(一)| 常用参数详解
  • [ vulhub漏洞复现篇 ] ECShop 2.x / 3.x SQL注入/远程执行代码漏洞 xianzhi-2017-02-82239600
  • []指针
  • [AIGC] Kong:一个强大的 API 网关和服务平台
  • [Android]如何调试Native memory crash issue
  • [AutoSar]BSW_Memory_Stack_003 NVM与APP的显式和隐式同步
  • [halcon案例2] 足球场的提取和射影变换
  • [HarekazeCTF2019]encode_and_encode 不会编程的崽