乐闻世界logo
搜索文章和话题

Linux 虚拟化技术(KVM、Docker、Kubernetes)的特点和使用场景有哪些?

2月17日 23:34

Linux 虚拟化技术是现代云计算和容器化部署的基础,掌握虚拟化技术对于系统架构和运维至关重要。

虚拟化类型:

  • 全虚拟化(Full Virtualization):通过 hypervisor 模拟完整的硬件环境,客户操作系统无需修改
  • 半虚拟化(Para-virtualization):客户操作系统需要修改以配合 hypervisor
  • 操作系统级虚拟化(OS-level Virtualization):在同一个操作系统内核上运行多个隔离的用户空间实例

KVM(Kernel-based Virtual Machine):

  • Linux 内核的虚拟化模块
  • 将 Linux 内核转变为 hypervisor
  • 需要 CPU 支持硬件虚拟化(Intel VT-x 或 AMD-V)
  • 使用 QEMU 作为设备模拟器
  • 命令示例:
    • 安装 KVM:apt install qemu-kvm libvirt-daemon-system libvirt-clients
    • 检查 KVM 支持:kvm-ok 或 lsmod | grep kvm
    • 创建虚拟机:virt-install --name vm1 --ram 2048 --vcpus 2 --disk path=/var/lib/libvirt/images/vm1.qcow2,size=20 --cdrom /path/to/iso

Xen:

  • 开源 hypervisor
  • 支持 paravirtualization 和 full virtualization
  • Domain 0(Dom0):特权域,负责硬件访问和管理
  • Domain U(DomU):非特权域,运行客户操作系统
  • 命令示例:xl create vm.cfg、xl list

VMware:

  • 商业虚拟化解决方案
  • VMware ESXi:企业级 hypervisor
  • VMware Workstation:桌面虚拟化软件
  • VMware vSphere:虚拟化管理平台

Docker 容器:

  • 轻量级虚拟化技术
  • 共享主机内核,隔离用户空间
  • 镜像(Image):只读的文件系统模板
  • 容器(Container):镜像的运行实例
  • 常用命令:
    • docker run:运行容器
    • docker ps:查看运行中的容器
    • docker images:查看镜像
    • docker build:构建镜像
    • docker exec:在容器中执行命令
    • docker logs:查看容器日志
    • docker stop/start:停止/启动容器

Kubernetes(K8s):

  • 容器编排平台
  • 管理容器化应用的部署、扩展和管理
  • 核心概念:
    • Pod:最小的部署单元
    • Service:为 Pod 提供稳定的网络访问
    • Deployment:管理 Pod 的副本和更新
    • ConfigMap:配置数据
    • Secret:敏感数据
  • 常用命令:
    • kubectl get pods:查看 Pod
    • kubectl get services:查看服务
    • kubectl apply -f yaml:应用配置
    • kubectl logs pod:查看日志

LXC(Linux Containers):

  • 操作系统级虚拟化
  • 共享内核,隔离进程和网络
  • 比 Docker 更接近传统虚拟机
  • 命令示例:
    • lxc-create:创建容器
    • lxc-start:启动容器
    • lxc-stop:停止容器
    • lxc-ls:列出容器

libvirt:

  • 虚拟化管理 API 和工具集
  • 支持 KVM、QEMU、Xen、LXC 等多种虚拟化技术
  • 提供统一的虚拟化管理接口
  • 命令示例:
    • virsh list:列出虚拟机
    • virsh start vm:启动虚拟机
    • virsh shutdown vm:关闭虚拟机
    • virsh dumpxml vm:查看虚拟机配置

虚拟化网络:

  • Bridge(网桥):将虚拟机连接到物理网络
  • NAT(网络地址转换):虚拟机通过主机访问外部网络
  • Host-only:仅主机和虚拟机之间的网络
  • VLAN:虚拟局域网

虚拟化存储:

  • 镜像格式:qcow2、raw、vmdk、vdi
  • 存储池:libvirt 存储池管理
  • 共享存储:NFS、iSCSI、Ceph

性能优化:

  • CPU 亲和性:绑定虚拟机到特定 CPU 核心
  • 内存 ballooning:动态调整虚拟机内存
  • 巨页(Huge Pages):提高内存性能
  • virtio:半虚拟化 I/O 驱动

虚拟化安全:

  • SELinux/AppArmor:强制访问控制
  • 资源限制:cgroups 限制 CPU、内存、磁盘 I/O
  • 网络隔离:VLAN、防火墙规则
  • 镜像安全:定期更新、扫描漏洞
标签:Linux