DevOps 基础到精通 - 浅谈虚拟化、网络与 YAML

178 阅读5分钟

1. 引言

上一篇博客 中,我们学习了每个 DevOps 工程师都需要掌握的 Linux 基础:使用 Bash 导航、管理服务,以及通过包管理器安装软件。

现在,是时候迈出下一步了。要真正理解 DevOps,你需要的不仅仅是单机上的命令 —— 还需要理解 环境是如何创建的、系统之间如何通信、以及如何保持一致地配置环境

在本文中,我们将介绍三个重要的构建模块:

  • 虚拟化 → 安全且一致地运行环境。
  • 网络 → 系统之间如何通信。
  • YAML → 将现代 DevOps 工具粘合在一起的配置语言。

2. 虚拟化基础

什么是虚拟化?

从本质上讲,虚拟化就是在“你的电脑里再运行一台电脑”。 与其需要多台物理服务器,不如通过虚拟化在同一硬件上创建多个虚拟服务器。

为什么这对 DevOps 很重要?

  • 你可以在不增加硬件的情况下快速创建 可重复的测试环境
  • 你可以进行 安全的实验 —— 在虚拟机里搞坏系统也不会影响到你的笔记本。
  • 它是 云计算 的基础,公司依靠它大规模运行成千上万台虚拟机。

入门虚拟化工具

  • VirtualBox 一个免费且流行的本地虚拟机工具。非常适合初学者练习 Linux,而无需双系统或额外硬件。

  • Vagrant 一个自动化虚拟机配置的工具。只需一个配置文件,就能快速启动带有预设环境的虚拟机 —— 让团队之间的环境保持一致性

💡 学习小贴士:VirtualBox + Vagrant 是本地练习的完美组合,特别适合刚入门时使用。


行业中的虚拟化

虽然 VirtualBox 和 Vagrant 对学习很有帮助,但在现代公司中更常见的是:

  • 云虚拟机(如 AWS EC2、Azure VMs、Google Cloud Compute Engine)。
  • 容器(Docker),用于轻量、快速、可移植的环境。

因此,可以把 VirtualBox 看作是你的 训练场,而云与容器则是虚拟化在 真实世界中的应用


虚拟机 vs 容器

  • 虚拟机 (VMs)

    • 每个虚拟机都运行完整的操作系统及其内核。
    • 隔离性更强,但资源占用更高(RAM、CPU)。
    • 示例:在笔记本上同时运行 Ubuntu 和 Windows。
  • 容器 (Docker)

    • 共享宿主机的内核。
    • 轻量、启动快、资源占用少。
    • 示例:在容器中运行一个 API,和其他应用隔离。

两者的目标都是提供 隔离环境,但它们解决的问题不同。


➡️ 更多知识:如果你关注过我的 后端编程路线图,可能记得我写过一篇关于 容器与虚拟化 的文章,从后端角度出发,主要讲容器在软件开发中的使用。


3. 网络基础

当我们从单机扩展到多系统时,关键问题是:它们如何通信? 这就是网络概念的作用所在。作为 DevOps 工程师,你不必成为网络专家,但需要掌握基础知识,以便调试和部署系统。

DNS(域名系统)

  • DNS 就像互联网的电话簿。
  • 它把人类易读的名字(如 google.com)翻译成机器能识别的 IP 地址(如 142.250.191.46)。
  • 为什么重要:如果 DNS 配置错误,即使服务器运行正常,你的服务也可能无法访问。

IP 地址

  • IP 地址 用来标识网络中的机器。
  • IPv4 基础:如 192.168.0.1
  • 私有 IP:用于内部网络(例如家庭 WiFi 或云 VPC)。
  • 公网 IP:对互联网可见。

💡 提示:在云环境中,一台虚拟机可能同时拥有私有 IP(内部通信)和公网 IP(外部访问)。

端口

  • 一台机器(IP)可以同时运行多个服务。端口用来区分它们。

  • 常见端口:

    • 80 → HTTP(网站)
    • 443 → HTTPS(安全网站)
    • 5432 → PostgreSQL
    • 6379 → Redis

示例:如果你在 8080 端口运行了一个 Web API,可以通过以下命令测试:

curl http://localhost:8080

如果有响应,说明服务在运行;如果没有,可能是网络问题(防火墙、DNS、端口错误)。


➡️ 更多知识:如果你关注过我的 后端编程路线图,可能记得我写过一篇关于 网络与互联网 的文章,更侧重讲解 Web 在协议层面的工作原理(HTTP/HTTPS、请求与响应)。


4. YAML 基础

现代 DevOps 工具大量依赖 配置文件。 相比硬编码设置或冗长脚本,我们通过配置语言定义基础设施和工作流,而 YAML 已经成为最流行的选择。

为什么是 YAML?

  • 广泛应用:Docker Compose、Kubernetes、GitHub Actions、Ansible 等等。
  • 可读性强,基于缩进,比 JSON 或 XML 更适合配置文件。

示例

杂乱的 JSON:

{"service": {"name":"api","replicas":3,"port":8080}}

简洁的 YAML:

service:
  name: api
  replicas: 3
  port: 8080

注意事项

  • YAML 对 空格敏感。缩进错误 = 配置报错。
  • 禁止使用 Tab,只能用空格。

💡 专业提示:务必使用支持 YAML 的编辑器(VS Code、IntelliJ 等),避免隐藏的格式错误。


5. 学到的经验

  • 虚拟化 让我们能在本地模拟真实服务器,并能扩展到云端。
  • 网络 是系统之间的语言 —— 即使只懂基础,也能节省大量调试时间。
  • YAML 看似无聊,却是现代 DevOps 工具的粘合剂。

这些看似小的知识点,其实是 DevOps 一切工作的地基。 没有它们,像 Docker、Kubernetes 或 Terraform 这样的工具会难以理解。


6. 下一步

在下一篇文章中,我们将在此基础上迈入 自动化 的第一步:

  • 搭建一个简单的 CI/CD 流水线,自动化构建、测试和部署。

敬请期待 —— 这将是 DevOps 真正变得神奇的地方 🚀。