先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前在阿里

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以点击这里获取!

现在知道了,我把应用程序和它依赖的运行环境打包成镜像,就可以在任何安装了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

最后的话

最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!

资料预览

给大家整理的视频资料:

给大家整理的电子书资料:

如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

https://bbs.csdn.net/topics/618542503)**

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐