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…...

Kamailio-基于Homer与heplify的SIP信令监控-2
接上篇,我们已经顺利地完成了服务的安装,下面就来看看如何配置并启动。 跟着我,你将学会: 下载并安装 踩坑:按照官方步骤来,可是网络条件不允许 获取YUM源下载RPM包手动解压安装避坑 配置并启动…...

unity3d入门教程四
unity3d入门教程四 10.1坐标与旋转10.2物体的运动10.3(练习)掉头飞行11.1向量11.2向量间运算11.3向量夹角11.4物体的指向11.5(练习)飞向目标12.1屏幕坐标12.2屏幕的边界 10.1坐标与旋转 比如,节点的坐标用 Vector3 类型…...

无人机飞控的原理!!!
一、传感器系统 陀螺仪:用于检测无人机的角速度和角度,帮助确定无人机的姿态。 加速度计:用于检测无人机的加速度和倾斜角度,进一步辅助姿态判断。 磁力计(或罗盘):用于检测无人机的方向&…...

深入解析代理模式:静态代理、JDK 动态代理和 CGLIB 的全方位对比!
代理模式(Proxy Pattern)是一种结构型设计模式,它提供了对象的替身,即代理对象来控制对实际对象的访问。通过代理对象,可以在不修改目标对象的情况下,扩展或控制其功能。例如,代理模式可以用于延…...

51单片机快速入门之独立按键
51单片机快速入门之独立按键 这里我们需要用上一个仿真软件,只因不想硬件焊接:PROTEUS DESIGN SUITE PROTEUS DESIGN SUITE: PROTEUS DESIGN SUITE是一款由LabCenter Electronics开发的电子设计自动化(EDA)软件,广泛应用于电气工程和电子工…...

设计模式之工厂模式(通俗易懂--代码辅助理解【Java版】)
文章目录 设计模式概述1、工厂模式概述1)特点:2)主要角色:3)工作流程:4)优点5)缺点6)适用场景 2、简单工厂模式(静态工厂模式)1) 在简单工厂模式中,有三个主要…...

速盾:高防 cdn 分布式防御攻击?
在当今数字化时代,网络安全问题日益凸显,各种网络攻击手段层出不穷。为了保护企业和个人的网络资产安全,高防 CDN(Content Delivery Network,内容分发网络)成为了一种重要的防御手段。其中,分布…...

Unity3D类似于桌面精灵的功能实现
前言: 由于最近在做游戏魔改,很多功能在游戏里面没法实现(没错,说的就是排行榜),所以准备用Unity3D开发一个类似于桌面精灵的功能部件,实现效果如下: PS:有需要定制的老…...

Audio Over IP的PTP时钟初探
Audio Over IP的PTP时钟初探 这几天参加省局举办的技术能手比赛,第一次接触并了解AOIP(Audio Over IP)相关的理论和实践相关的知识。其中AoIP的时钟同步采用的是IEEE 1588 标准的PTP(Precision Time Protocol)基于网络…...

【加密社】深入理解TON智能合约 (FunC语法)
king: 摘要:在TON(TheOpenNetwork)区块链平台中,智能合约扮演着举足轻重的角色。本文将通过分析一段TON智能合约代码 带领读者学习dict(字典)和list(列表)在FunC语言中的用法&#x…...