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

【Kubernetes】K8S到底是什么,最近怎么这么火

在这里插入图片描述
前言

kubernetes,简称K8s,是用8代替名字中间的8个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。


📕作者简介:热爱跑步的恒川,致力于C/C++、Java、Python等多编程语言,热爱跑步,喜爱音乐的一位博主。
📗本文收录于恒川的日常汇报系列,大家有兴趣的可以看一看
📘相关专栏C语言初阶、C语言进阶系列等,大家有兴趣的可以看一看
📙Python零基础入门系列,Java入门篇系列正在发展中,喜欢Python、Java的朋友们可以关注一下哦!

1. 内容简介

在这里插入图片描述

Kubernetes是Google开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。在生产环境中部署一个应用程序时,通常要部署该应用的多个实例以便对应用请求进行负载均衡。

  在Kubernetes中,我们可以创建多个容器,每个容器里面运行一个应用实例,然后通过内置的负载均衡策略,实现对这一组应用实例的管理、发现、访问,而这些细节都不需要运维人员去进行复杂的手工配置和处理。

  传统的应用部署方式是通过插件或脚本来安装应用。这样做的缺点是应用的运行、配置、管理、所有生存周期将与当前操作系统绑定,这样做并不利于应用的升级更新/回滚等操作,当然也可以通过创建虚拟机的方式来实现某些功能,但是虚拟机非常重,并不利于可移植性。
  新的方式是通过部署容器方式实现,每个容器之间互相隔离,每个容器有自己的文件系统 ,容器之间进程不会相互影响,能区分计算资源。相对于虚拟机,容器能快速部署,由于容器与底层设施、机器文件系统解耦的,所以它能在不同云、不同版本操作系统间进行迁移

  容器占用资源少、部署快,每个应用可以被打包成一个容器镜像,每个应用与容器间成一对一关系也使容器有更大优势,使用容器可以在build或release 的阶段,为应用创建容器镜像,因为每个应用不需要与其余的应用堆栈组合,也不依赖于生产环境基础结构,这使得从研发到测试、生产能提供一致环境。类似地,容器比虚拟机轻量、更“透明”,这更便于监控和管理。


  Kuberentes 是基于容器的集群管理平台,它的简称,是K8S。
K8s是Go语言开发,是Docker的上层架构,就好像Java与J2EE的关系一样。K8s是一个开放的开发平台,不局限于任何语言。其主要功能:

  • k8s能方便地管理跨机器运行容器化的应用
  • 提供应用部署、维护、扩展机制
  • 集群管理、安全防护、准入机制、多应用支撑、服务注册、服务发现、智能负载均衡、故障发现、自我修复、服务滚动升级、在线扩容、资源配额管理
  • 使用Docker对应用程序包装、实例化、运行
  • 以集群的方式运行、管理跨机器的容器
  • 解决Docker跨机器容器之间的通讯问题
  • k8s的自我修复机制使得容器集群总是运行在用户期望的状态

2. 特点

  • 可移植: 支持公有云,私有云,混合云,多重云(multi-cloud)
  • 可扩展: 模块化,插件化,可挂载,可组合
  • 自动化: 自动部署,自动重启,自动复制,自动伸缩/扩展

3. 组件

在这里插入图片描述

本文介绍了Kubernetes集群所需的各种二进制组件。

3.1 Master 组件

在这里插入图片描述
  Master组件提供集群的管理控制中心。
  Master组件可以在集群中任何节点上运行。但是为了简单起见,通常在一台VM/机器上启动所有Master组件,并且不会在此VM/机器上运行用户容器。请参考构建高可用群集以来构建multi-master-VM。

3.2 kube-apiserver

  kube-apiserver用于暴露Kubernetes API。任何的资源请求/调用操作都是通过kube-apiserver提供的接口进行。请参阅构建高可用集群。

3.3 ETCD

  etcd是Kubernetes提供默认的存储系统,保存所有集群数据,使用时需要为etcd数据提供备份计划。

3.4 kube-controller-manager

  kube-controller-manager运行管理控制器,它们是集群中处理常规任务的后台线程。逻辑上,每个控制器是一个单独的进程,但为了降低复杂性,它们都被编译成单个二进制文件,并在单个进程中运行。
这些控制器包括:

  • 节点(Node)控制器。
  • 副本(Replication)控制器:负责维护系统中每个副本中的pod。
  • 端点(Endpoints)控制器:填充Endpoints对象(即连接Services&Pods)。
  • Service Account和Token控制器:为新的Namespace创建默认帐户访问API Token。

3.5 cloud-controller-manager

  云控制器管理器负责与底层云提供商的平台交互。云控制器管理器是Kubernetes版本1.6中引入的,还是Alpha的功能
  云控制器管理器仅运行云提供商特定的(controller loops)控制器循环。可以通过将–cloud-providerflag设置为external启动kube-controller-manager ,来禁用控制器循环。
cloud-controller-manager 具体功能:

  • 节点(Node)控制器
  • 路由(Route)控制器
  • Service控制器
  • 卷(Volume)控制器

3.6 kube-scheduler

  kube-scheduler监视新创建没有分配到Node的Pod,为Pod选择一个Node。

3.7 插件 addons

  插件(addon)是实现集群pod和Services功能的。Pod由Deployments,ReplicationController等进行管理。Namespace 插件对象是在kube-system Namespace中创建。

3.8 DNS

  虽然不严格要求使用插件,但Kubernetes集群都应该具有集群 DNS。
群集 DNS是一个DNS服务器,能够为 Kubernetes services提供 DNS记录。
  由Kubernetes启动的容器自动将这个DNS服务器包含在他们的DNS searches中。
用户界面
kube-ui提供集群状态基础信息查看。
容器资源监测
容器资源监控提供一个UI浏览监控数据。

3.9 Cluster-level Logging

  Cluster-level logging,负责保存容器日志,搜索/查看日志。
节点 Node 组件
节点组件运行在Node,提供Kubernetes运行时环境,以及维护Pod。

3.10 kubelet

  kubelet是主要的节点代理,它会监视已分配给节点的pod,具体功能:

  • 安装Pod所需的volume。
  • 下载Pod的Secrets。
  • Pod中运行的 docker(或experimentally,rkt)容器。
  • 定期执行容器健康检查。
  • Reports the status of the pod back to the rest of the system, by creating amirror podif necessary.
  • Reports the status of the node back to the rest of the system.

3.11 kube-proxy

  kube-proxy通过在主机上维护网络规则并执行连接转发来实现Kubernetes服务抽象
docker
docker用于运行容器。
RKT
rkt运行容器,作为docker工具的替代方案。
supervisord
supervisord是一个轻量级的监控系统,用于保障kubelet和docker运行。
fluentd
fluentd是一个守护进程,可提供cluster-level logging.。

4. 架构

在这里插入图片描述

  • Master主要包含 API Server、Scheduler、Controllers 三个组成部分, 以及用作存储的 etcd ,它用来储存整个集群的状态
  • etcd: 由CoreOS开发,是一个高可用、强一致性的键值存储,为Kubernetes集群提供储存服务,类似于zookeper。 它会存储集群的整个配置和状态。主节点通过查询 etcd 以检查节点,容器的现状。
  • API Server: kubernetes最重要的核心元件之一,提供资源操作的唯一入口(其他模块通过API Server查询或修改资源对象,只有API Server才能直接操作etcd),并提供认证、授权、访问控制、API注册和发现等机制。
  • Scheduler: 负责资源的调度,按照预定的调度策略将 Pod(k8s中调度的基本单位)调度到相应的Node上,这里说的 Node 就是Work Node,当然如果是只有一个节点的集群,Master 也会同时作为 Work Node。
  • Controllers: 通过 API Server 查询要控制的资源对象的预期状态,它检查其管控的对象的当前状态,确保它们始终处于预期的工作状态,它们的工作包括比如故障检测、自动扩充、减少、滚动更新等。

5. 数据库etcd

  etcd保存了整个集群的状态,作为一个数据库使用。主节点可以做成一个分布式的,以做到高可用。
  etcd是kubernetes集群的主数据库,存储着所有资源对象以及状态,默认与master组件部署在一个Node上。注意etcd的数据变更都是通过API server进行。


如果这份博客对大家有帮助,希望各位给恒川一个免费的点赞👍作为鼓励,并评论收藏一下,谢谢大家!!!
制作不易,如果大家有什么疑问或给恒川的意见,欢迎评论区留言。

相关文章:

【Kubernetes】K8S到底是什么,最近怎么这么火

前言 kubernetes,简称K8s,是用8代替名字中间的8个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kub…...

Java爬虫下载网页图片

在Java中&#xff0c;可以使用HttpURLConnection&#xff0c;Jsoup等库来实现网页爬取和图片下载。下面是一个基本的例子&#xff1a; 首先&#xff0c;需要添加Jsoup库到你的项目中。如果你使用Maven&#xff0c;可以在你的pom.xml文件中添加以下依赖&#xff1a; xml <…...

C语言之扫雷游戏实现篇

目录 主函数test.c 菜单函数 选择循环 扫雷游戏实现分析 整体思路 问题1 问题2 问题3 问题4 游戏函数&#xff08;函数调用&#xff09; 创建游戏盘数组mine 创建游戏盘数组show 初始化游戏盘数组InitBoard 展示游戏盘DisplayBoard 游戏盘置雷SetMine 游戏…...

Python面向对象中super用法与MRO机制

Python面向对象中super用法与MRO机制 最近再看trackformer&#xff0c;里面用到了super的用法&#xff0c;记录一下super的用法 class A(object):def __init__(self):print(init A)def fun(self):print(A.fun)print(self)super(A, self).fun()class B(object):def __init__(s…...

高性能网络模式-Reactor

事实上&#xff0c;Reactor 模式也叫Dispatcher模式&#xff0c;即I/O 多路复⽤监听事件&#xff0c;收到事件后&#xff0c;根据事件类型分配&#xff08;Dispatch&#xff09;给某个进程/线程。Reactor 模式也是一种非阻塞同步网络模式。 Reactor 模式主要由 Reactor部分和处…...

gRpc的四种通信方式详细介绍

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…...

JWT令牌的介绍

目录 一、什么是JWT 二、JWT令牌和Cookie客户端、Session服务端对比 三、特点与注意事项 四、使用场景 优点&#xff1a; 五、结构组成 一、什么是JWT JWT&#xff08;JSON Web Token&#xff09;是一种用于在网络应用间传递信息的开放标准&#xff08;RFC 7519&#x…...

C语言入门 Day_9 条件判断

目录 前言&#xff1a; 1.if判断 2.else判断 3.易错点 4.思维导图 前言&#xff1a; 我们知道比较运算和逻辑运算都会得到一个布尔型的数据&#xff0c;要么为真&#xff08;true&#xff09;&#xff0c;要么为假&#xff08;false&#xff09;。 今天我们来学习真和假在…...

Nodejs-nrm:快速切换npm源 / npm官方源和其他自定义源之间切换

一、理解 Nodejs nrm Nodejs nrm 是一个管理 npm 源的工具。由于 npm 在国内的速度较慢&#xff0c;很多开发者会使用淘宝的 npm 镜像源&#xff0c;但是也会遇到一些问题&#xff0c;例如某些包在淘宝镜像源中不存在&#xff0c;或者淘宝镜像源本身也会有问题。 Nodejs nrm …...

数据驱动洞察:各种词频分析技术挖掘热点数据

一、引言 随着信息时代的发展&#xff0c;人们的关注点日益复杂多样。社交媒体、新闻网站和论坛等平台上涌现了大量的信息&#xff0c;这使得热点分析成为了解社会热点话题和舆情动向的重要手段。词频统计是热点分析的基础&#xff0c;本文将分别介绍基于ElasticSearch、基于S…...

ES6-简介、语法

ES6 ES6简介 ​ ECMAScript 6&#xff08;简称ES6&#xff09;是于2015年6月正式发布的JavaScript语言的标准&#xff0c;正式名为ECMAScript 2015&#xff08;ES2015&#xff09;。它的目标是使得JavaScript语言可以用来编写复杂的大型应用程序&#xff0c;成为企业级开发语…...

诚迈科技子公司智达诚远与Unity中国达成合作,打造智能座舱新时代

2023 年 8 月 23 日&#xff0c;全球领先的实时 3D 引擎 Unity 在华合资公司 Unity 中国举办发布会&#xff0c;正式对外发布 Unity 引擎中国版——团结引擎&#xff0c;并带来专为次世代汽车智能座舱打造的团结引擎车机版。发布会上&#xff0c;诚迈科技副总裁、诚迈科技子公司…...

算法与数据结构(十)--图的入门

一.图的定义和分类 定义&#xff1a;图是由一组顶点和一组能够将两个顶点连接的边组成的。 特殊的图&#xff1a; 1.自环&#xff1a;即一条连接一个顶点和其自身的边; 2.平行边&#xff1a;连接同一对顶点的两条边&#xff1b; 图的分类&#xff1a; 按照连接两个顶点的边的…...

【Go 基础篇】Go语言 init函数详解:包的初始化与应用

介绍 在Go语言中&#xff0c;init() 函数是一种特殊的函数&#xff0c;用于在包被导入时执行一次性的初始化操作。init() 函数不需要手动调用&#xff0c;而是在包被导入时自动执行。这使得我们可以在包导入时完成一些必要的初始化工作&#xff0c;确保包的使用具有正确的环境…...

wazuh环境配置及漏洞复现

目录 一、wazuh配置 1进入官网下载OVA启动软件 2.虚拟机OVA安装 二、wazuh案例复现 1.wazuh初体验 2.这里我们以SQL注入为例&#xff0c;在我们的代理服务器上进行SQL注入&#xff0c;看wazuh如何检测和响应 一、wazuh配置 1进入官网下载OVA启动软件 Virtual Machine (O…...

Java接收前端请求体方式

&#x1f497;wei_shuo的个人主页 &#x1f4ab;wei_shuo的学习社区 &#x1f310;Hello World &#xff01; 文章目录 RequestBodyPathVariableRequestParamValidated方法参数校验方法返回值校验 RequestHeaderHttpServletRequest ## Java接收前端请求体的方式 请求体&#xf…...

私有化部署即时通讯平台,30分钟替换钉钉和企业微信

随着企业对即时通讯和协作工具的需求不断增长&#xff0c;私有化部署的即时通讯平台成为企业的首选。WorkPlus作为有10余年行业深耕经验与技术沉淀品牌&#xff0c;以其安全高效的私有化部署即时通讯解决方案&#xff0c;帮助企业在30分钟内替换钉钉和企业微信。本文将深入探讨…...

如何深入理解 Node.js 中的流(Streams)

Node.js是一个强大的允许开发人员构建可扩展和高效的应用程序。Node.js的一个关键特性是其内置对流的支持。流是Node.js中的一个基本概念&#xff0c;它能够实现高效的数据处理&#xff0c;特别是在处理大量信息或实时处理数据时。 在本文中&#xff0c;我们将探讨Node.js中的流…...

MSP430FR2xxx开发(一)添加driverlib

一、新建工程 根据自己手上的硬件型号新建工程&#xff0c;文中已MSP430FR2355为例。 二、添加driverlib 首先去官方下载driverlib. https://www.ti.com.cn/tool/cn/MSPDRIVERLIB?keyMatchMSP430%20DRIVERLIB#downloads 下载后的内容如下&#xff1a; 我这里就选择MSP430…...

【C++】做一个飞机空战小游戏(九)——发射子弹的编程技巧

[导读]本系列博文内容链接如下&#xff1a; 【C】做一个飞机空战小游戏(一)——使用getch()函数获得键盘码值 【C】做一个飞机空战小游戏(二)——利用getch()函数实现键盘控制单个字符移动【C】做一个飞机空战小游戏(三)——getch()函数控制任意造型飞机图标移动 【C】做一个飞…...

多目标粒子群混合储能优化配置【附算法】

✨ 长期致力于混合储能、优化配置、风光互补微电网、多目标粒子群算法、CRITIC-TOPSIS研究工作&#xff0c;擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流&#xff0c;点击《获取方式》 &#xff08;1&#xff09;风光-负荷多场景…...

如何在30秒内获取国家中小学智慧教育平台电子课本:终极解析工具指南

如何在30秒内获取国家中小学智慧教育平台电子课本&#xff1a;终极解析工具指南 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具&#xff0c;帮助您从智慧教育平台中获取电子课本的 PDF 文件网址并进行下载&#xff0c;让您更方便地获取课本内容…...

EmbBERT架构解析:面向TinyML的革新设计与优化

1. EmbBERT架构解析&#xff1a;面向TinyML的革新设计在边缘计算设备上部署自然语言处理模型一直面临内存和计算资源的双重限制。传统BERT模型即使经过压缩&#xff0c;其2MB版本在TinyNLP基准测试中平均准确率仅为83.93%&#xff0c;且激活内存占用高达1.5MB。EmbBERT通过三大…...

信息学奥赛刷题必备:最长平台问题三种解法详解(附C++代码)

信息学奥赛刷题进阶&#xff1a;最长平台问题的多维解法与竞赛实战 在信息学奥赛的备战过程中&#xff0c;"最长平台"问题作为数组统计类题目的经典代表&#xff0c;频繁出现在各大OJ平台的题库中。这道题目看似简单&#xff0c;却蕴含着丰富的解题思路和优化技巧。对…...

LightGBM参数太多不会调?一份针对分类问题的‘避坑’指南与核心参数详解

LightGBM分类任务调参实战&#xff1a;从参数误区到精准优化 第一次接触LightGBM时&#xff0c;我被它琳琅满目的参数列表吓到了——光是官方文档列出的就有80多个可调参数。记得当时为了预测用户流失率&#xff0c;我直接把XGBoost的代码换成LightGBM&#xff0c;结果AUC反而下…...

终极大脑训练指南:5个简单步骤用BrainWorkshop提升你的认知能力

终极大脑训练指南&#xff1a;5个简单步骤用BrainWorkshop提升你的认知能力 【免费下载链接】brainworkshop Continued development of the popular brainworkshop game 项目地址: https://gitcode.com/gh_mirrors/br/brainworkshop BrainWorkshop是一款专业的免费开源大…...

ROS2导航SLAM建图实战:从Gazebo仿真到真实地图构建

1. 环境准备与基础配置 第一次接触ROS2导航和SLAM建图的朋友可能会觉得配置环境很复杂&#xff0c;其实只要跟着步骤一步步来&#xff0c;半小时就能搞定。我用的是一台装了Ubuntu 20.04的笔记本&#xff0c;ROS2版本选择Foxy&#xff0c;这个组合最稳定。记得先更新系统&#…...

用o1-preview构建端到端水质分类系统

1. 项目概述&#xff1a;用 o1-preview 构建端到端水质分类系统的真实复现手记 我做机器学习项目快十年了&#xff0c;从最早手动调参、写 Makefile 编译模型&#xff0c;到后来用 MLflow 跟踪实验、用 Flask 封装 API&#xff0c;再到如今用 Docker 打包上云——整个流程早已刻…...

Unity游戏马赛克移除终极指南:如何轻松解锁隐藏内容?

Unity游戏马赛克移除终极指南&#xff1a;如何轻松解锁隐藏内容&#xff1f; 【免费下载链接】UniversalUnityDemosaics A collection of universal demosaic BepInEx plugins for games made in Unity3D engine 项目地址: https://gitcode.com/gh_mirrors/un/UniversalUnity…...

神经进化算法实战:从零构建AI Flappy Bird游戏智能体

1. 项目概述&#xff1a;当AI学会玩像素小鸟如果你玩过那个让人又爱又恨的《Flappy Bird》&#xff0c;一定对那只在绿色水管间反复横跳的小鸟记忆犹新。但你想过吗&#xff0c;如果让一群“数字小鸟”自己学会玩这个游戏&#xff0c;会是什么景象&#xff1f;这正是“AI Flapp…...