运维体系概览
一、程序是怎么跑起来的
展示部分
网页端
桌面端
移动端
小程序
逻辑部分
后端语言,用来实现具体的逻辑功能
网络架构部分
这个部分就是运维做的工作,主要是让程序跑起来并符合互联网网络的基本规则
二、主流Linux发行版


Red Hat Enterprise Linux(缩写为RHEL,Red Hat的企业版Linux)。Red Hat现在主要做服务器版的Linux开发,在版本上注重了性能和稳定性,以及对硬件的支持。企业版操作系统的开发周期较长,注重性能、稳定性和服务端软件支持。

CentOS,它是来自于RHEL依照开放源代码规定发布的源代码所编译而成,两者的不同在于,CentOS并不包含封闭源代码软件。 不过现在CentOS已经不再维护了
所以就出现了两个其他的系统来替代CentOS,AlmaLinux和Rocky Linux

Debian Linux是一个真正开源、免费的社区操作系统,并将始终保持 100% 自由,完全有开源社区运作,使用范围包括笔记本、台式机和服务器。

Ubuntu(中文谐音为友帮拓、优般图、乌班图),基于Debian Linux,也是一款流行的开源操作系统,由商业公司运作,具有庞大的社区力量,活跃度很高,最初做桌面版Linux,现在具有桌面版本、服务器版本、基础云版本等多个应用场景。
三、虚拟化技术
VMware就是运用的虚拟化技术,还有一个是Windows的Linux子系统WSL
云计算的底层基石就是虚拟化技术,云计算厂商买回来一堆硬件搭建好数据中心后使用虚拟机技术就可以将硬件资源进行切分了,比如可以切分出100台虚拟机,这样一份硬件资源就可以卖给100个用户。
四、容器技术
相比起简单的应用程序操作系统是非常笨重的。
操作系统本身就会占用一部分的存储和内存,容器技术就是为了简化笨重的操作系统从而诞生的,既可以获得程序运行所需要的基础环境又可以避免直接运行过于笨重的操作系统。
容器技术只隔离应用程序的运行时环境但容器之间可以共享同一个操作系统,这里的运行时环境指的是程序运行依赖的各种库以及配置。
下面几个只是容器技术的实现
OCI 标准是指 Open Container Initiative(开放容器倡议)制定的一套规范,旨在为容器镜像和运行时提供统一的标准。
docker
docker是一个用Go语言实现的开源项目,可以让我们方便的创建和使用容器,docker将程序以及程序所有的依赖都打包到docker container,这样你的程序可以在任何环境都会有一致的表现。
docker可以屏蔽环境差异,也就是说,只要你的程序打包到了docker中,那么无论运行在什么环境下程序的行为都是一致的。
docker的另一个好处就是快速部署,这是当前互联网公司最常见的一个应用场景,一个原因在于容器启动速度非常快,另一个原因在于只要确保一个容器中的程序正确运行,那么你就能确信无论在生产环境部署多少都能正确运行。
docker中有这样几个概念:
- dockerfile
- image
- container
实际上你可以简单的把image理解为可执行程序,container就是运行起来的进程。
那么写程序需要源代码,那么“写”image就需要dockerfile,dockerfile就是image的源代码,docker就是"编译器"。
docker使用了常见的CS架构,也就是client-server模式,docker client负责处理用户输入的各种命令,比如docker build、docker run,真正工作的其实是server,也就是docker daemon,值得注意的是,docker client和docker daemon可以运行在同一台机器上。
docker的底层实现
docker基于Linux内核提供这样几项功能实现的:
-
NameSpace
我们知道Linux中的PID、IPC、网络等资源是全局的,而NameSpace机制是一种资源隔离方案,在该机制下这些资源就不再是全局的了,而是属于某个特定的NameSpace,各个NameSpace下的资源互不干扰,这就使得每个NameSpace看上去就像一个独立的操作系统一样,但是只有NameSpace是不够。
-
Control groups 虽然有了NameSpace技术可以实现资源隔离,但进程还是可以不受控的访问系统资源,比如CPU、内存、磁盘、网络等,为了控制容器中进程对资源的访问,Docker采用control groups技术(也就是cgroup),有了cgroup就可以控制容器中进程对系统资源的消耗了,比如你可以限制某个容器使用内存的上限、可以在哪些CPU上运行等等。
podman
Podman(POD Manager)是一个开源的无守护进程(daemonless)容器引擎,用于管理容器、容器镜像、容器卷和网络。
它兼容 OCI 标准,可以运行 Docker 镜像,并且设计上与 Docker CLI 命令高度兼容。
Podman采用无守护进程架构:
- 每个Podman命令直接创建容器进程
- 容器作为调用用户的子进程运行
- 无需后台常驻服务
这带来了显著优势:
1.更自然的进程管理:容器成为普通的Linux进程,可以通过标准Linux工具(如systemd、ps等)直接管理
2.更高的安全性:无需特权守护进程,降低攻击面
3.更好的资源利用:没有额外的守护进程消耗资源
4.无根容器:Podman原生支持以非root用户身份运行容器
containerd
containerd 是一个来自 Docker 的高级容器运行时,并实现了 CRI 规范。它是从 Docker 项目中分离出来,之后 containerd 被捐赠给云原生计算基金会(CNCF)为容器社区提供创建新容器解决方案的基础。
所以 Docker 自己在内部使用 containerd,当你安装 Docker 时也会安装 containerd。
containerd 通过其 CRI 插件实现了 Kubernetes 容器运行时接口(CRI),它可以管理容器的整个生命周期,包括从镜像的传输、存储到容器的执行、监控再到网络。
五、Kubernetes
Kubernetes,简称 k8s(k,8 个字符,s——明白了?)或者 “kube”,是一个开源的 Linux 容器自动化运维平台,它消除了容器化应用程序在部署、伸缩时涉及到的许多手动操作。换句话说,你可以将多台主机组合成集群来运行 Linux 容器,而 Kubernetes 可以帮助你简单高效地管理那些集群。
Kubernetes 最开始是由 Google 的工程师设计开发的。Google 作为 Linux 容器技术的早期贡献者之一,曾公开演讲介绍 Google 如何将一切都运行于容器之中(这是 Google 的云服务背后的技术)。Google 一周内的容器部署超过 20 亿次,全部的工作都由内部平台 Borg 支撑。Borg 是 Kubernetes 的前身,几年来开发 Borg 的经验教训也成了影响 Kubernetes 中许多技术的主要因素。
Google 在 2015 年把 Kubernetes 项目捐献给了新成立的 云计算基金会 - Cloud Native Computing Foundation(CNCF)