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.mzph.cn/news/789014.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Django详细教程(二) - 部门用户管理案例

文章目录 前言一、新建项目二、新建app三、设计表结构四、新建数据库五、新建静态文件六、部门管理1.部门展示2.部门添加3.部门删除4.部门编辑 七、模板继承八、用户管理1.辨析三种方法方法一&#xff1a;原始方法方法二&#xff1a;Form组件(简便)方法三&#xff1a;ModelForm…

Python | Leetcode Python题解之第8题字符串转换整数atoi

题目&#xff1a; 题解&#xff1a; INT_MAX 2 ** 31 - 1 INT_MIN -2 ** 31class Automaton:def __init__(self):self.state startself.sign 1self.ans 0self.table {start: [start, signed, in_number, end],signed: [end, end, in_number, end],in_number: [end, end,…

git源码泄露

Git 源码泄露 开发人员会使用 git 进行版本控制&#xff0c;对站点自动部署。但如果配置不当&#xff0c;可能会将 .git 文件夹直接部署到线上环境&#xff0c;这就引起了 git 泄露漏洞&#xff0c;我们可以利用这个漏洞直接获得网页源码。 确定是否存在泄漏 &#xff08;1&…

C++相关概念和易错语法(2)(引用、内联函数、auto类型)

1.引用和指针的关系 引用在语法层面上不开辟新的空间&#xff0c;是对变量或别名取别名&#xff0c;我们对别名进行的任何操作也会同样作用于变量本身&#xff0c;这和形参有本质的区别&#xff0c;它的功能更像是指针。事实上&#xff0c;引用底层的实现就是指针&#xff0c;…

毅力流体设备现已加入2024年第13届生物发酵展

参展企业介绍 温州毅力流体设备有限公司位于浙江温州&#xff0c;这里海、陆、空交通网发达&#xff0c;地理位置优越。是一家经浙江-其他工商机关注册、依法经营的法人机构。 温州毅力流体设备有限公司所生产产品包括交通运输,船舶救生设备,空气呼吸器,等等&#xff0c;所生产…

【JS】监听元素重叠

常见场景&#xff1a; 滚动条滚动到底部时加载数据&#xff0c;如果监听滚动事件&#xff0c;会造成不必要的浪费。如频繁滚动但未达底部。可以建立观察者&#xff0c;监听loading标识元素到达视口某位置后再加载数据。 步骤 创建一个新的 IntersectionObserver 对象&#xf…

JavaScript中什么叫深拷贝?

在 JavaScript 中&#xff0c;深拷贝指的是创建一个新的对象&#xff0c;这个新的对象与原始对象完全独立&#xff0c;没有任何共享的属性或者数据&#xff0c;它们不共享同一块内存地址。深拷贝会复制原始对象的所有属性和嵌套对象的所有属性&#xff0c;包括嵌套对象中的属性…

C#,简单,精巧,实用的文件夹时间整理工具FolderTime

点击下载本文软件&#xff08;5积分&#xff09;&#xff1a; https://download.csdn.net/download/beijinghorn/89071073https://download.csdn.net/download/beijinghorn/89071073 百度网盘&#xff08;不需积分&#xff09;&#xff1a; https://pan.baidu.com/s/1FwCsSz…

数字乡村创新之路:科技引领农村实现高质量发展

随着信息技术的快速发展&#xff0c;数字乡村建设已成为推动农村高质量发展的重要引擎。数字乡村通过科技创新&#xff0c;不仅改变了传统农业生产方式&#xff0c;也提升了乡村治理水平&#xff0c;为农民带来了更加便捷的生活。本文将从数字乡村的内涵、科技引领农村高质量发…

HCIP综合实验

各个路由器配置 R1 配置IP [R1-GigabitEthernet0/0/0]ip add 192.168.1.2 24 [R1-Serial4/0/0]ip add 15.1.1.1 24 配置缺省 [R1]ip route-static 0.0.0.0 0 15.1.1.2 接受认证 [R1-Serial4/0/1]ppp pap local-user tao password cipher tao 配置隧道地址 [R1-Tunnel…

QImage加载opencv读取的图片出错

今天写opencv的时候&#xff0c; 突然发现一件很奇怪的事情&#xff0c; 用摄像头读取的图片&#xff0c; 用QImage加载的时候传入img.data&#xff0c; 一切都很正常&#xff0c; 但是如果我是从保存的图片读取灰度图&#xff0c; 传入img.data&#xff0c; 它会告诉我QImage不…

微信怎么恢复好友?7个方法助你轻松寻回失联好友

在数字化社交日益盛行的今天&#xff0c;微信作为我们日常生活中不可或缺的沟通工具&#xff0c;承载着与亲朋好友、同事伙伴之间的深厚情谊。然而&#xff0c;有时由于误操作或其他原因&#xff0c;我们可能会不小心删除了某些重要的微信好友&#xff0c;这时&#xff0c;如何…

python file怎么打开

Python open() 方法用于打开一个文件&#xff0c;并返回文件对象&#xff0c;在对文件进行处理过程都需要使用到这个函数&#xff0c;如果该文件无法被打开&#xff0c;会抛出 OSError。 注意&#xff1a;使用 open() 方法一定要保证关闭文件对象&#xff0c;即调用 close() 方…

管理科学笔记

1.线性规划 画出区域&#xff0c;代入点计算最大最小值 2.最小生成树 a.断线法&#xff0c;从大的开始断 b.选择法&#xff0c;从小的开始选 3.匈牙利法 维度数量直线覆盖所有的0 4.一直选最当前路线最短路径 5.线性规划 6.决策论

OSError: Can‘t load tokenizer for ‘bert-base-chinese‘

文章目录 OSError: Cant load tokenizer for bert-base-chinese1.问题描述2.解决办法 OSError: Can’t load tokenizer for ‘bert-base-chinese’ 1.问题描述 使用from_pretrained()函数从预训练的权重中加载模型时报错&#xff1a; OSError: Can’t load tokenizer for ‘…

「绩效管理」某开发区基层干部绩效管理体系完善项目纪实

【客户背景】如今随着经济发展&#xff0c;很多地区ZF的基层组织承担了比以往更多的职责&#xff0c;对他们的工作评价方法成为了相应的难点。类似的&#xff0c;在大量企业中也存在这样的情况&#xff0c;集团化的公司下有大量的分、子公司&#xff1b;许多公司在不同区域开设…

剑指Offer题目笔记24(集合的组合、排序)

面试题79&#xff1a; 问题&#xff1a; ​ 输入一个不含重复数字的数据集合&#xff0c;找出它的所有子集。 解决方案&#xff1a; ​ 使用回溯法。子集就是从一个集合中选出若干元素。如果集合中包含n个元素&#xff0c;那么生成子集可以分为n步&#xff0c;每一步从集合中…

大语言模型中常见小模型LLM垂直领域应用微调数据集

文章目录 大语言模型中常见小模型LLM垂直领域应用微调数据集网友对于微调的看法本文内容参考、汇总了以下开源LLMAdvertiseGen广告LLM数据数据集结构ChatGLM3-6B对于微调数据结构的定义原始数据预处理代码 通用医学LLM数据集Chinese-medical-dialogue-data原始数据集微调数据格…

tomcat配置web项目

文章目录 目录结构I server.xml1.1 contex标签1.2 server.xml端口说明II 其他方式部署2.1 IDE部署2.2 配置Tomcat服务III 清空大日志文件内容see also项目的一般结构目录结构 /bin:脚本文件目录。/common/lib:存放所有web项目都可以访问的公共jar包(使用Common类加载器加载)…

Python控制浏览器——selenium模块

Python控制浏览器——selenium模块 目录 Python控制浏览器——selenium模块准备工作【1】安装selenium【2】安装浏览器驱动【3】测试驱动&#xff08;作者是Edge&#xff09; 导航和操作窗口导航返回前进刷新最大化窗口切换选项卡 查找和操作元素8种基本By定位方式[1]ID[2]Name…