k8s中,为什么把pod的服务以deployment的形式通过nodeport对外发布,以及容器和虚拟机的一些区别
deployment是个控制器
主要负责管理pod,来代表k8s集群向外提供稳定的服务。
说,k8s有很多优点。
说k8s的优点,可能先需要说容器提供的便利。
同样的硬件资源
跑几个虚拟机,每个虚拟机上跑几个服务。
就挺重了。风扇呼呼叫
cpu温度嘎嘎上
这,大家叫资源消耗太高
那么提供同样量级的算力、存储等服务
容器化应用需要的资源少很多
服务器感觉也比较轻松
同样
同样的资源供给,容器化应用提供的服务量级更高,可以响应更多的服务
为数据服务的提供方,比如企业,提供更高的服务处理能力。
容器的底层技术来自于镜像
镜像由一层层的只读文件组成
这些只读文件,提供的是容器运行的环境。
比如,跑一个nginx容器,容器里面是nginx进程
跑这个容器,需要一个nginx镜像
镜像里面有多个只读层。
这些只读层,都需要linux操作系统的什么
总不至于需要整个linux操作系统吧
整个linux操作系统包含几乎跑所有服务的所有系统级别的环境
而nginx只需要linux操作系统的操作系统级别的操作系统的一部分资源
把这些资源,做成只读文件,这个只读文件,在容器镜像的角度来讲
就是容器镜像的一个基础层
在这个基础层上,跑nginx进程还需要什么,比如说,
有了操作系统,起码得有nginx软件包的那些东西吧
对,把软件包的那些东西作用一个只读文件,算容器的镜像的一个层
放到基础层上面去
然后还需要什么
需要环境变量,跑nginx时,环境变量需要怎样
弄个文件,弄个只读层
放上去
还需要什么
nginx的配置文件,和调用配置文件,是实现nginx功能的
一个配置的重点
也写成文件,做成只读层。
总的来说,容器镜像。就是多个只读的文件。
是容器运行的环境以及配置。
当用docker run或者写dockerfile,启动容器的时候
那么docker程序就会通过cpu的计算
来读取容器镜像的这些只读文件
来跑一起来一个里面运行着nginx进程的容器
这个怎么听起来像是和虚拟机区别也不是很大。
那么容器和虚拟机有几个比较大的区别:
1.如何调用硬件资源
容器直接找操作系统,让操作系统找cpu进行工作
虚拟机里面的进程,需要找虚拟机的操作系统,然后虚拟机的操作系统需要找虚拟化技术做出来的虚拟化层qemu,qemu负责把虚拟机内操作系统的请求,转发给cpu。
相对比,虚拟化技术比容器化技术,对于从进程的请求达到cpu,的这个链路上,多了一个虚拟机的操作系统,和虚拟化层的qemu
qemu是个仿真器,可以给虚拟机提供虚拟硬盘,虚拟内存,虚拟网卡等
kvm是个支持虚拟化的内核模块,qemu仿真器和kvm内核模块,一起工作,可以做出来比较不错的虚拟机。而虚拟机不仅需要虚拟化的计算存储网络硬件资源,还需要虚拟的操作系统内核,每一个虚拟机需要,相当于复制一份操作系统内核。
那么从数据链路上来讲,容器里的进程和虚拟机里的进程,都找物理cpu工作
虚拟机比容器多了两个较明显的步骤
一个是进程的请求先要打到虚拟机操作系统上,第二个是虚拟机操作系统的请求要打到虚拟化层qemu这里,然后qemu把这个请求给物理操作系统的内核模块kvm,kvm把这个请求发给cpu。
而容器里面进程的请求链路是这样的,容器里面的进程请求直接找物理操作系统的内核,然后物理操作系统的内核,把请求发给cpu
对比之下,容器的链路就少了虚拟操作系统,和qemu,这两个层。
请求的链路是这样的。那么响应的链路,也是多了这两个层。
所以虚拟机的数据链路就要比容器长一些。
从资源消耗角度来看,多的这两个层,一个是虚拟机的操作系统,需要复制物理机上的操作系统,一个是qemu要模拟出来的虚拟硬件软件等资源。
应该都需要占用一些计算和存储的资源。
加上通信链路的长度。
容器比虚拟机占用的资源更少,响应速度更快。
而虚拟机比容器隔离性可能更好,因为每个虚拟机有一个自己的操作系统。
这样的特点,可能就比较能够了解了。
那么k8s在容器的基础上
有一个比较受欢迎的地方
是,k8s的自动化部署、管理、编排容器的能力比较不错。
那么k8s实现这样的功能,是需要比较多的组件。
部署、管理、编排,这些功能,在不容器化的时候
在物理机和虚拟机上,也讲究部署管理编排。
那么k8s这里,除了操作对象的是容器,
还有什么特别的呢
这个就跟控制器deployment有关系
deployment控制器,管理的资源对象是pod
pod里面是数个容器,容器里面是进程,进程可以有一个,也可以有多个
一般情况下一个容器主要跑一个进程
deployment控制器是k8s控制器里面比较常用的
它通过replicaset管理pod
一条命令,kubectl scale deployment xxx replicas=number
number是数字,写几,deployment控制器就会让replicaset把pod的的数量调整到几
而不用手工增加pod
如果有的pod不在运行状态了
deployment可以自动维护pod的数量,自动创建
比如,replicas设置的是9个pod,其中的3个被删除,那么deployment控制器会让replicas自动再创建3个新的pod,而这个过程不用管理人员去管。
是deployment控制器自动去操作的。
这个就体现了自动化运维。
那么为什么对外发布服务的时候要用deployment结合nodeport进行发布呢
而不是直接用pod和nodeport发布
是因为deployment相当于一个pod的总管理
外面服务要访问pod进程提供的服务,找deployment就行了。
pod部署在哪个节点上,
pod的迁移,
pod的重启,
pod的数量扩展
pod的滚动更新
这些操作,对于k8s集群外部来的访问,都不用太关心。
外部的访问只用到达deployment这一层就行了
deployment负责提供服务。
pod的滚动更新的意思是
新的pod产生了,而且running比较ok
才会逐步删除旧的pod
这样就会实现服务的不停机更新。
比如deployment管的这些pod提供的是nginx服务
里面nginx的版本要从一个旧的更新成新的。
那么新版本的pod会逐步生成
旧版本的pod会逐步删除
在服务的使用的那一方
体验是平稳的。
所以,应该可以这样认为
nodeport转发进来的服务
给到deployment,是更符合实践需要的。
相关文章:
k8s中,为什么把pod的服务以deployment的形式通过nodeport对外发布,以及容器和虚拟机的一些区别
deployment是个控制器 主要负责管理pod,来代表k8s集群向外提供稳定的服务。 说,k8s有很多优点。 说k8s的优点,可能先需要说容器提供的便利。 同样的硬件资源 跑几个虚拟机,每个虚拟机上跑几个服务。 就挺重了。风扇呼呼叫 …...

PMP--一模--解题--41-50
文章目录 14.敏捷--方法--回顾--回顾是最重要的一个实践,原因是它能让团队学习、改进和调整其过程。41、 [单选] 新项目中的所有团队成员都希望通过尽快交付价值来获得客户的信任。项目经理了解到一个资源已经在其他项目中与发起人一起工作。某资源似乎在使用个人影…...
Kafka启动关闭及其相关命令kafka启动、状态监控、日常操作
开启zookeeper命令(备注:先进入zookeeper的bin目录) ./zkServer.sh start 关闭zookeeper命令(备注:先进入zookeeper的bin目录) ./zkServer.sh stop Kafka启动命令(备注:先进入kafka目录) 常规模式启动kafka bin/kafka-server-start.sh config/server.properties 进程守…...
CentOS 系统设置与维护教程
CentOS 系统设置与维护教程 在这篇博客中,我们将介绍在 CentOS 系统上进行的一些常见操作,包括停止和禁用防火墙服务、配置 SELinux。我们还将展示如何切换到 root 用户以执行这些操作。通过这些操作,你可以更好地管理和配置你的 CentOS 环境…...
流量牵引技术与传统防火墙的区别
在网络安全领域,流量牵引技术和传统防火墙都起着重要的作用,但它们在很多方面存在着明显的区别。 一、工作原理不同 传统防火墙主要是通过设置访问控制规则来过滤网络流量。它基于预先设定的策略,对进入和离开网络的数据包进行检查…...

【Python爬虫系列】_020.异步协程asyncio
课 程 推 荐我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈虚 拟 环 境 搭 建 :👉👉 Python项目虚拟环境(超详细讲解) 👈👈PyQt5 系 列 教 程:👉👉 Python GUI(PyQt5)文章合集 👈👈…...

ubuntu22安装docker
1、查看服务器系统信息 uname -a:显示内核名称、主机名、内核版本、处理器类型等信息。 lsb_release -a:显示有关 Ubuntu 发行版的详细信息,包括版本号、代号等。 free -h:查看系统内存使用情况。 df -h:查看磁盘空间使…...
【拥抱AI】如何使用Pandas进行数据分段
安装Pandas库 如果您的环境中尚未安装Pandas库,可以使用pip命令进行安装: pip install pandas导入Pandas库 在Python脚本中,导入Pandas库以便使用其数据处理功能: import pandas as pd读取文本文件 使用Pandas的read_csv函数…...
Docker Compose version v2.29.2 提示 exited with code 0 解决方案
问题描述: 使用 docker-compose up 启动容器时,老是报错exited with code 0,容器要么处于退出,要么处于重启阶段,查明原因后,是因为docker容器执行任务完成后就会处于exited状态,必须强制状态。…...
深度学习速通系列:依存分析
依存分析(Dependency Parsing)是自然语言处理(NLP)中的一项任务,目的是确定句子中单词之间的依存关系,并将这些关系表示为一个有向图,通常称为依存树。在依存树中,每个节点代表一个单…...

玩转扩展库,温湿度传感器篇!—合宙Air201资产定位模组LuatOS快速入门05
随着LuatOS快速入门系列教程的推出,小伙伴们学习热情高涨。 合宙Air201不仅支持三种定位方式,还具有丰富的扩展功能,通过外扩BTB链接方案,最多可支持21个IO接口:SPI、I2C、UART等多种接口全部支持。 本期,…...
【人工智能】人工智能领域中的线性回归算法原理、应用场景及代码示例。
🏆🏆欢迎大家来到我们的天空🏆🏆 🏆🏆如果文章内容对您有所触动,别忘了点赞、关注,收藏! 🏆 作者简介:我们的天空 🏆《头衔》&#x…...

day18JS-微任务、宏任务和node.js
1. 代码的执行流程 代码的执行流程分为同步与异步。 2. 什么样子的是宏任务? 1. setTimeout 和 setInterval 定时器: 没有写时间(传参的),代表下一帧执行,如果没有其他任务1ms后执行。 // 没有写时间(传参的),代表下…...

Mega Stamp Bundle 地形合集捆绑包峡谷沙丘山脉
终极套装,满足所有地形雕刻需求! 自2015年Gaia发布以来,我们团队就发明了印章技术,欢迎来到Mega Stamp Bundle! 本套装包含14个印章包,单次购买即可享受大幅折扣,共获得140个专业设计的印章。 这些印章可与Unity Terrain Tools、Gaia以及任何使用印章高度图图像的工具…...

基于SpringBoot+Vue+MySQL的明星周边产品销售网站系统
系统展示 用户前台界面 管理员后台界面 系统背景 在当今数字化消费时代,粉丝经济蓬勃发展,明星周边产品作为连接明星与粉丝的重要纽带,市场需求日益增长。为了满足广大粉丝对明星周边产品的热情追求,并提升购物体验,我…...
websocket 和sip 在协议层面有哪些区别,为什么要各自这样设置协议
WebSocket 和 SIP(Session Initiation Protocol)在协议层面有显著区别,因为它们各自的设计目标和用途不同。让我们从协议的定义、工作方式和用途来讨论这些区别: 1. 协议定义与用途 WebSocket: WebSocket 是一种通信协议,旨在通过单个 TCP 连接实现全双工通信。它用于在客…...

Miracast/WifiDisplay开发相关的深入调研分析-android投屏实战开发
Miracast/WifiDisplay概念介绍 Miracast Miracast是由Wi-Fi联盟于2012年所制定,以Wi-Fi直连(Wi-Fi Direct)为基础的无线显示标准。支持此标准的消费性电子产品(又称3C设备)可透过无线方式分享视频画面,例如…...

linux入门到实操-4 linux系统网络配置、连接测试、网络连接模式、修改静态IP、配置主机名
教程来源:B站视频BV1WY4y1H7d3 3天搞定Linux,1天搞定Shell,清华学神带你通关_哔哩哔哩_bilibili 整理汇总的课程内容笔记和课程资料(包含课程同版本linux系统文件等内容),供大家学习交流下载:…...

【kubernetes】Ingress和Ingress-Controller介绍,高可用应用案例
一,Ingress介绍 Ingress是k8s中一种重要的资源对象,它主要用于定义从集群外部到集群内部服务的HTTP(S)路由规则。用于管理代理 Ingress-Controller的配置文件。 kubectl explain ingress二,Ingress-Controller介绍 Ingress Controller 是 …...

C# 使用Socket通信,新建WinForm服务端、客户端程序
一、新建WinForm Socket服务端程序 注:rtbReceviceMsg为RichTextBox控件 服务端程序、界面 服务端代码 public partial class Form1 : Form {public Form1(){InitializeComponent();}public virtual void TriggerOnUpdateUI(string message){if (this.InvokeRequir…...
【Go】3、Go语言进阶与依赖管理
前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes࿰…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面
代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...

12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...
代理篇12|深入理解 Vite中的Proxy接口代理配置
在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...
基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解
JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用,结合SQLite数据库实现联系人管理功能,并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能,同时可以最小化到系统…...

DingDing机器人群消息推送
文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人,点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置,详见说明文档 成功后,记录Webhook 2 API文档说明 点击设置说明 查看自…...

Chrome 浏览器前端与客户端双向通信实战
Chrome 前端(即页面 JS / Web UI)与客户端(C 后端)的交互机制,是 Chromium 架构中非常核心的一环。下面我将按常见场景,从通道、流程、技术栈几个角度做一套完整的分析,特别适合你这种在分析和改…...
深入浅出Diffusion模型:从原理到实践的全方位教程
I. 引言:生成式AI的黎明 – Diffusion模型是什么? 近年来,生成式人工智能(Generative AI)领域取得了爆炸性的进展,模型能够根据简单的文本提示创作出逼真的图像、连贯的文本,乃至更多令人惊叹的…...

消防一体化安全管控平台:构建消防“一张图”和APP统一管理
在城市的某个角落,一场突如其来的火灾打破了平静。熊熊烈火迅速蔓延,滚滚浓烟弥漫开来,周围群众的生命财产安全受到严重威胁。就在这千钧一发之际,消防救援队伍迅速行动,而豪越科技消防一体化安全管控平台构建的消防“…...

五子棋测试用例
一.项目背景 1.1 项目简介 传统棋类文化的推广 五子棋是一种古老的棋类游戏,有着深厚的文化底蕴。通过将五子棋制作成网页游戏,可以让更多的人了解和接触到这一传统棋类文化。无论是国内还是国外的玩家,都可以通过网页五子棋感受到东方棋类…...