k8s小白的学习初体验

前言

有些时候的巧合让人匪夷所思,前两周刚刚尝试了一遍Docker操作,紧接着就收到好朋友说要学习k8s容器部署的建议,最近两周抽空看了一些关于k8s的知识,相关概念真的是太多了,概念本身是枯燥的,但是当概念运行起来就有意思多了,这时候取出费曼学习大法,尝试着用自己的话来描述这些概念,看看自己是不是真的学会了。本文k8s相关概念均来自个人理解,后续随着学习深入可能会有改正,勿喷。

学习资料

找到一些官方文档和一些写的比较通俗的教程,再有疑问直接去官网查吧

  • 学习 Kubernetes 基础知识
  • 什么是 Rancher?
  • Kubernetes(K8S)简介
  • K8S学习教程

学到了什么

我就尝试用直白的语言来描述一下,不一定准确,听听看

ks8是Kubernetes的简称,Rancher是一个管理k8s的工具,可以操作k8s定义 DeploymentNode 上创建一系列包含若干 ContainerPod,也可以操作k8定义 Service 在指定 Pod 上建立统一对外的服务,DeploymentServiceNodePod 这些在k8s中被称为资源,为了便于管理可以划分到不同的 Namespace 中。

单单就这两句话包含了7、8个名词概念,要是把他们的定义列出来,保准得晕晕乎乎的,并且有些名词在不同的语境下有不同的含义,比如Docker是一个工具、是一个运行时、是一个平台等等,所以有些概念不结合具体的情景还真是说不清楚,我们还是来想想为什么出现这些东西吧。

当项目规模还小的时候,我们把程序放到服务器上运行起来就行了,简单方便,后来随着规模的扩大,部署的机器越来越多,发现机器资源分配不好控制,可能机器的大部分资源被某个应用占用,导致其他应用无法正常运行,无法做到应用隔离。

后来引入了虚拟机,虽然解决了资源控制问题,但在单个物理机上运行多个虚拟机,每个虚拟机都是完整独立的系统,性能损耗大,还有一个之前遗留的问题,就是运行环境的差异引发的问题常常使人焦头烂额,所以容器部署应运而生。

将运行程序和所依赖的环境打包成镜像,放到容器运行时上运行,可以保证所有程序的运行环境都一样,容器相比虚拟机性能损耗小,可实现资源隔离,CPU和内存可按需分配,所有容器共享主机的系统,最有名的要数Docker了

从这个角度来看docker或者容器运行时很像JVM,当年Java号称一次编写处处运行,靠的就是Java虚拟机,所有的Java源码会被编译成字节码,在不同平台上的JVM中被翻译中对应平台的指令,而Docker的身份和地位很像这个JVM,容器运行时可以在运行之前打包好的镜像,并且在不同的系统平台上模拟出目标平台的环境,来保证“一次打包处处运行”

现在知道了,我把应用程序和它依赖的运行环境打包成镜像,就可以在任何安装了Docker的机器上运行,不管这台机器是什么系统,这样就可以快速扩展程序规模了,但是新的问题还是会出现的

因为程序员太懒了,让他部署几个服务器还没啥问题,要是成百上千台服务器,每次扩展或更新都需要逐个拉取镜像、版本回滚、逐个启动,简直痛不欲生,在半夜被薅起来更新维护时还容易出错,所以这时候 Kubernetes 就诞生了,因其K和s中间有8个字母简称为k8s,它可以让你管理让你轻松管理成千上万台机器的集群,这些机器上的容器都归它管,一个命令就可以搞定版本升级、版本回滚等操作,还可以不停机的灰度更新,确保高可用、高性能、高扩展。

我的天,k8s都这么牛了,那 Rancher 又是啥?难道他比 k8s 还厉害,人类的懒惰是无极限的,k8s 虽然一个命令可以完成很多需求,但有些人就是一个命令也不想输啊,哈哈!

尽管 k8s 是一个强大的容器编排平台,可以同时管理集群中数以万计的机器,但人们为了方便还是开发了Rancher吗,它提供了用户友好的图形用户界面、RBAC(基于角色的访问控制)、日志和监控、多集群管理等,同时它还提供了一个集成的应用商店,其中包含了许多常用的容器化应用程序和工具,如数据库、监控、日志、CI/CD 等,通过 Rancher 的界面轻松部署这些应用程序,并与 Kubernetes 集群集成。

有些人用k8s为了方便部署和管理容器,而有些人只想更方便,选择了 Rancher 来管理看 k8s,之后会不会有人开发的新东西来管理 Rancher 呢,这有什么不可能的呢?

概念白话文

前面提到了很多概念,也讲了一些有关这些东西的来历,接下来让我用自己的理解来说说这些名词到底指什么。

镜像:最早听说这个词是系统镜像,将后缀为 .iso 的系统镜像文件刻录成光盘,或者烧制成U盘启动盘来安装系统,容器化中的镜像含义和系统镜像类似,就是用过用程序以及用于运行应用程序所需的所有依赖项打个包,称为镜像,它可以放到容器运行时中运行,相同的镜像可以重现相同的环境,就像相同的ISO文件会安装出相同的系统一样

Docker:往大点说这是指一个容器化平台,当然也可以是一个软件,或者是一项技术规范,用它可以开发、打包、部署和运行应用程序。通过使用 Docker,开发人员可以将应用程序及其依赖项(如库、运行时环境等)打包成一个轻量级的容器,然后在任何支持 Docker 的环境中运行这个容器,而不用担心环境的差异性。简单点说,它是一个工具,可以打包一个镜像,也可以运行一个镜像

Dockerfile:用来说明怎么打包镜像的,使用特定的描述性语言,告诉Docker怎么打包出一个镜像

容器化:将引用程序和运行环境打包成镜像,并批量运行到其他容器运行时上的过程

镜像和容器的关系:镜像是 Docker 中用于打包应用程序及其依赖项的静态文件,是只读的,一旦构建完成就不能修改,容器是镜像的一个运行时实例,它可以被启动、停止、暂停、删除等操作。可以简单类比下 class 和 object 的关系

k8s:为了管理和编排大量的容器而开发出来的工具,可以批量自动化的完成一些容器的操作,由他又引出了大量新的概念

k3s:一个轻量级的 Kubernetes 发行版,体积小、资源消耗低,采用了更少的组件和依赖项,并且对 Kubernetes 的安装和配置进行了简化,使得部署和管理更加容易

Pod:k8s调度、管理的最小单位,它包含一个或多个紧密关联的容器

Node:是集群中的计算节点,有master主节点和worker工作节点之分,负责提供计算资源、网络和存储服务,可以是真实的物理机,也可以是运行在物理机上的虚拟机。

Deployment: 是 k8s 中用于声明式管理 Pod 和 ReplicaSet 的控制器,可以认为是一个描述怎样使用 Pod 资源的规则,应用一个Deployment就是按照它的描述来组织和使用Pod

Service:是 k8s 中用于提供对一组 Pod 的网络访问的抽象,可以将一组 Pod 绑定统一对外提供服务

Namespace:k8s 中用于将资源分类的一个逻辑概念,类似于编程语言中的命名空间

Docker Compose:与k8s同类,也是用于管理容器化应用程序的工具,但规模较小适用于小型项目和开发环境

Rancher:一个开源的容器管理平台,拥有统一的可视化界面,可以同时管理多个k8s,括本地、云端或混合部署的集群

Rancher Desktop:是一款用于本地开发的工具,基于K3s构建,旨在提供轻量级的开发环境,使开发人员能够轻松地在自己的计算机上进行容器化应用的开发和测试

Workloads:工作负载,有哪些类型的活,包括Deployment(部署无状态Pod),StatefulSet(部署有状态Pod),DaemonSet(节点监控和日志收集),Job(一次性任务),CronJob(定时重复任务)

组件:每个角色要干指定活所以需要配备的一些功能模块,比如每个 Node 都有Kubelet组件,会与k8s控制平面进行通信,接收指令来管理此Node 上的 Pod

控制平面:运行在主节点上的集群的核心组件之一,负责管理集群的各种操作、监控集群状态,并确保集群的稳定运行,通常包含 kube-apiserveretcdkube-controller-managerkube-schedulercloud-controller-manager

一些疑问

  • 容器化是不是只能用Docker?

    不是的,Docker只是实现容器化的一种可选的途径,只要实现了容器化标准的工具都可以实现容器化,作为容器运行时,比如 k8s 为了提高效率,减少不必要的开销,已经将默认的容器运行时从 Docker 改成了 containerd,其他类似于Docker的运行时还有 Podmanrkt(Rocket)LXC(Linux ContainersCRI-O

  • k8s 是唯一的容器编排工具吗?

    不是的,就像前文提到的 Docker Compose 也能管理容器的使用,只是适用规模较小,除此之外类似的工具还有 Docker SwarmApache MesosNomadOpenShift

总结

  • Docker 生成和运行镜像,k8s 管理这些被Pod包装并运行在Node上的容器,Rancher 管理 k8s 集群
  • 部署无状态Pod使用 Deployment,部署有状态Pod使用 StatefulSet,StatefulSet 会固定每个 Pod 的名字
  • k8s不会为你处理数据的存储,我们可以为运行数据库的Pod挂载一个磁盘来确保数据的安全,云存储、本地磁盘、NFS都是可以选择的对象
  • kubectl get all 可用于查看常用资源,包括Pod、Service、Deployment、ReplicaSet等
  • 也可以单独查询某项信息 kubectl get namespacekubectl get podkubectl get nodekubectl get deployment

==>> 反爬链接,请勿点击,原地爆炸,概不负责!<<==

惟愿吾儿愚且鲁,无灾无难到公卿,可能不是东坡的心里话吧,但一定是受到刺激以后才有的感想~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/498686.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Qt】:坐标

坐标 一.常用快捷键二.使用帮助文档三.Qt坐标体系1.理论2.代码 一.常用快捷键 注释&#xff1a;ctrl / • 运⾏&#xff1a;ctrl R • 编译&#xff1a;ctrl B • 字体缩放&#xff1a;ctrl ⿏标滑轮 • 查找&#xff1a;ctrl F 比特就业课 • 整⾏移动&#xff1a;ctrl …

【Linux】体验一款开源的Linux服务器运维管理工具

今天为大家介绍一款开源的 Linux 服务器运维管理工具 - 1panel。 一、安装 根据官方那个提供的在线文档&#xff0c;这款工具的安装需要执行在线安装&#xff0c; # Redhat / CentOScurl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start…

.NET CORE使用Redis分布式锁续命(续期)问题

结合上一期 .NET CORE 分布式事务(三) DTM实现Saga及高并发下的解决方案(.NET CORE 分布式事务(三) DTM实现Saga及高并发下的解决方案-CSDN博客)。有的小伙伴私信说如果锁内锁定的程序或者资源未在上锁时间内执行完&#xff0c;造成的使用资源冲突&#xff0c;需要如何解决。本…

原创度检测工具分享,文章质量检测方便又简单

文章检测有利于我们了解文章内容的质量高低&#xff0c;而在以往我们检测文章只能依靠手动去检测&#xff0c;这是相当消耗工作时间的&#xff0c;但是在原创度检测工具出来之后&#xff0c;很多人开始检测文章质量就改用原创度检测工具了&#xff0c;因为使用原创度检测工具是…

ES学习日记(三)-------第三方插件选择

前言 在学习和使用Elasticsearch的过程中&#xff0c;必不可少需要通过一些工具查看es的运行状态以及数据。如果都是通过rest请求&#xff0c;未免太过麻烦&#xff0c;而且也不够人性化。 目前我了解的比较主流的插件就三个,head,cerebor和elasticHD 1.head 老牌插件,功能…

vant checkbox 复选框 样式改写

修改前 修改后 基于 vant&#xff1a; 4.8.3 unocss: 0.53.4 <van-checkbox-group v-model"query.zczb" shape"square" class"text-16 w-100% flex flex-wrap"><template v-for"item in registerCapitalOption"><v…

伪原创文章生成软件:自媒体文章写作好神器

自媒体的红利时代&#xff0c;许多人都纷纷参于其中&#xff0c;而文章写作是做自媒体的基本技能&#xff0c;但是随着技术的发展&#xff0c;如今&#xff0c;既使不会写作能力一样可以做起自媒体&#xff0c;方法就是利用伪原创文章生成软件来做内容的输出&#xff0c;其实伪…

PowerBI和Tableau之间该怎么选择?

最近经常看到朋友询问&#xff0c;最近想学习数据分析工具&#xff0c;但是PowerBI和Tableau之间不知道怎么选择? 其实可以从下面几个方面进行参考&#xff0c;Power BI和Tableau哪个更适合你&#xff1f; 共同点&#xff1a; Power BI和Tableau都是强大的数据分析和数据可…

Node爬虫:原理简介

在数字化时代&#xff0c;网络爬虫作为一种自动化收集和分析网络数据的技术&#xff0c;得到了广泛的应用。Node.js&#xff0c;以其异步I/O模型和事件驱动的特性&#xff0c;成为实现高效爬虫的理想选择。然而&#xff0c;爬虫在收集数据时&#xff0c;往往面临着诸如反爬虫机…

QML通过鼠标拖动的位置

当通过鼠标拖动Rectangle 的位置时&#xff0c;可以使用Qt Quick的MouseArea组件来实现 Rectangle {id: rectx:0;y:0width: 200; height: 100color: "lightblue"MouseArea {id: mouseAreaanchors.fill: parentdrag.target: rect//要拖动的项目的IDdrag.axis: Drag.XA…

设计模式 —— 设计原则

在软件开发中&#xff0c;为了提高软件系统的可维护性和可复用性&#xff0c;增加软件的可扩展性和灵活性&#xff0c;程序员要尽量根据6条原则来开发程序&#xff0c;从而提高软件开发效率、节约软件开发成本和维护成本。 开闭原则 对扩展开放&#xff0c;对修改关闭。在程序需…

【Pt】马灯贴图绘制过程 03-制作油渍、积尘效果

目录 效果 一、制作油渍效果 1.1 基本油渍 1.2 流淌的油渍痕迹 二、制作浮尘效果 三、制作积尘效果 效果 一、制作油渍效果 1.1 基本油渍 将上篇制作的“锈迹_深色”和“锈迹_浅色”两个文件夹再次合并为一个文件夹 这里就命名为“锈迹” 添加一个填充图层 设置Base …

【SpringBoot从入门到精通】01_SpringBoot概述

一、Spring与SpringBoot 1.1 Spring Spring 是一款目前主流的 Java EE 轻量级开源框架&#xff0c;是 Java 世界最为成功的框架之一。Spring 由“Spring 之父”Rod Johnson(罗宾约翰逊) 提出并创立&#xff0c;其目的是用于简化 Java 企业级应用的开发难度和开发周期。 广义…

Windows下安装使用Squirrel

引言 SQuirrel SQL Client是一个用Java写的数据库客户端,用JDBC统一数据库访问接口以后,可以通过一个统一的用户界面来操作MySQL PostgreSQL MSSQL Oracle等等任何支持JDBC访问的数据库。使用起来非常方便。而且,SQuirrel SQL Client还是一个典型的Swing程序。 如果您的工作…

基于单片机锂电池电量检测数码管显示系统设计

**单片机设计介绍&#xff0c;基于单片机锂电池电量检测数码管显示系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机锂电池电量检测数码管显示系统设计的主要目标是实时、准确地检测锂电池的电量&#xff0c;并…

LDL^H分解求逆矩阵与MATLAB仿真(Right-Looking)

通过分解将对称正定厄米特矩阵分解成下三角矩阵L和对角矩阵D来求其逆矩阵 目录 前言 一、LDL^H基本算法 二、LDL^H Right-Looking算法 三、D矩阵求逆 四、L矩阵求逆 五、A矩阵求逆 六、计算量分析 七、MATLAB仿真 八、参考资料 总结 前言 在线性代数中&#xff0c;LDL…

2-HDFS常用命令及上传下载流程

HDFS NameNode 安全模式(safemode) 当NameNode被重启的时候&#xff0c;自动进入安全模式 在安全模式中&#xff0c;NameNode首先会触发edits_inprogress文件的滚动。滚动完成之后&#xff0c;更新fsimage文件 更新完成之后&#xff0c;NameNode会将fsimage文件中的元数据加…

(免费分享)基于springboot,vue付费自习室系统带论文

在当今数字化时代&#xff0c;高效、便捷的管理系统成为了各行各业不可或缺的工具。特别是在教育服务领域&#xff0c;自习室作为学生和在职人员重要的学习场所&#xff0c;其预约和管理需求日益增长。为了满足这一市场需求&#xff0c;本文开发了这款基于微信小程序的付费自习…

DC-5靶机

一.环境搭建 1.下载地址 靶机下载地址&#xff1a;https://download.vulnhub.com/dc/DC-5.zip 2.虚拟机配置 切换nat模式&#xff0c;有问题全选重试和是&#xff0c;打到这了&#xff0c;我感觉这个配置我都不用写了&#xff0c;启动靶机如下图所示即可 二.开始渗透 1.信…

设计模式 - 简单工厂模式

文章目录 前言 大家好,今天给大家介绍一下23种常见设计模式中的一种 - 工厂模式 1 . 问题引入 请用C、Java、C#或 VB.NET任意一种面向对象语言实现一个计算器控制台程序&#xff0c;要求输入两个数和运算符 号&#xff0c;得到结果。 下面的代码实现默认认为两个操作数为Inte…
最新文章