Cockpit?是一個非常出色的開源項目,是一款強大的基于?Web?的圖形界面管理工具,旨在讓系統管理員能夠通過網頁瀏覽器遠程管理?Linux?服務器。它提供了一個用戶友好的界面,用于執行多種系統管理任務,包括但不限于用戶和組管理、網絡設置、防火墻配置、服務管理、日志查看等,它還可以用于監視系統資源使用情況,例如?CPU、內存、磁盤空間等。Cockpit?兼容多個?Linux?發行版,包括?Red Hat、Fedora、CentOS、Ubuntu?等。,并且其安裝和配置過程十分簡便。
與此同時,Cockpit?通過插件機制提供了強大的擴展能力,可以方便地管理虛擬機、?Kubernetes?集群和?Docker?容器。通過安裝?cockpit-machines、?cockpit-kubernetes?和?cockpit-docker?插件,你可以輕松地在?Cockpit?的?Web?界面中創建、管理虛擬機,管理和監控?kubernetes?集群和容器化環境。
本文將主要介紹如何使用?Cockpit?來圖形化管理?KVM?虛擬機,并通過實際案例展示其優勢。
Cockpit?通過集成?libvirt?和?QEMU-KVM?提供了強大的?KVM?虛擬機管理功能。其底層原理包括以下幾個方面:
libvirt: 提供了一組?API?和守護進程,用于管理和控制虛擬化平臺。
QEMU-KVM: 結合了?KVM?內核模塊和?QEMU?用戶空間模擬器,提供了完整的虛擬化解決方案。
Cockpit 插件: 特別是?cockpit-machines?插件,擴展了?Cockpit?的功能,使其能夠管理?KVM?虛擬機。
WebSockets 和 REST API: 用于在瀏覽器和服務器之間進行實時通信。
通過這種架構,Cockpit?提供了一個直觀且高效的?Web?界面,使管理員能夠輕松地管理和監控?KVM?虛擬機。
?【拓展】
libvirt?
libvirt?是一個強大的庫,提供了一組?API?來管理和控制虛擬化平臺。它支持多種虛擬化技術,包括?KVM、Xen、LXC?等。libvirt?包括以下主要組件:
Cockpit?通過調用?libvirt API?來執行虛擬機管理任務,例如創建、啟動、停止、暫停和恢復虛擬機,以及管理磁盤、網絡和其他資源。
libvirtd: 一個守護進程,負責處理來自客戶端的請求,并與虛擬機管理程序(如?
KVM)進行交互。
libvirt API: 一組?C?語言?API,用于與?libvirtd?進行通信。其他編程語言也可以通過綁定庫使用這些?API。命令行工具: 如?
virsh,允許用戶通過命令行接口管理虛擬機。QEMU-KVM?
QEMU-KVM?是一個用戶空間模擬器,結合了?KVM?內核模塊,提供了完整的虛擬化解決方案。KVM?內核模塊負責硬件輔助虛擬化,而?QEMU?則提供了設備模擬和用戶空間管理功能。
Cockpit?通過?libvirt?與?QEMU-KVM?進行交互,從而實現對虛擬機的全面管理。
KVM?內核模塊: 通過硬件輔助虛擬化(如?Intel VT-x?或?AMD-V)提供高性能的虛擬化支持。
QEMU: 提供設備模擬(如網卡、磁盤控制器等),并管理虛擬機的生命周期。Cockpit?插件?
Cockpit?通過插件機制來擴展其功能。cockpit-machines?插件是專門用于管理?KVM?虛擬機的插件。該插件通過以下方式實現其功能:
集成?
libvirt API:?cockpit-machines?插件通過調用?libvirt API?來執行虛擬機管理任務。
WebSockets?和?REST API:?Cockpit?使用?WebSockets?和?REST API?在瀏覽器和服務器之間進行實時通信。這使得管理員可以通過瀏覽器界面實時查看和管理虛擬機的狀態。前端?
UI: 提供了一個直觀的?Web?界面,使管理員能夠輕松地執行各種管理任務,如創建、啟動、停止虛擬機,配置網絡和存儲,以及查看日志和性能指標。
在開始之前,確保你的服務器上已經安裝了?KVM?和?Cockpit?相關的軟件包并進行相關配置。以下是在?CentOS/RHEL?和?Ubuntu/Debian?上的安裝和配置步驟:
sudo yum install -y qemu-kvm libvirt virt-install libguestfs-tools cockpit cockpit-machines
sudo systemctl start cockpit # 啟動 cockpit 服務
sudo systemctl enable cockpit # 設置 cockpit 服務開機自啟
sudo systemctl start libvirtd # 啟動 libvirtd 服務
sudo systemctl enable libvirtd # 設置 libvirtd 服務開機自啟
sudo apt-get update
sudo apt-get install cockpit cockpit-machines virt-manager libvirt-daemon-system
sudo systemctl start cockpit # 啟動 cockpit 服務
sudo systemctl enable cockpit # 設置 cockpit 服務開機自啟
sudo systemctl start libvirtd # 啟動 libvirtd 服務
sudo systemctl enable libvirtd # 設置 libvirtd 服務開機自啟
安裝完畢后,需要驗證相關模塊和服務是否成功安裝或開啟,相關檢查如下:
KVM?模塊是否加載:lsmod | grep kvm
你應該能看到?kvm?和?kvm_intel?或?kvm_amd?模塊(取決于你的?CPU?類型)。
KVM?是否支持硬件虛擬化確保你的?CPU?支持硬件虛擬化技術(如?Intel VT-x?或?AMD-V)。你可以使用?lscpu?命令來檢查:
lscpu | grep -E 'Virtualization|vt-x|amd-v'
你應該能看到類似于以下的輸出:
Virtualization: VT-x
或
Virtualization: AMD-V
QEMU-KVM?是否安裝確保?qemu-kvm?包已經安裝。你可以使用包管理器來檢查:
CentOS/RHEL:
rpm -q qemu-kvm
Ubuntu/Debian:
dpkg -l | grep qemu-kvm
如果?qemu-kvm?已經安裝,你會看到包名和版本信息。
libvirtd?服務是否開啟:systemctl status libvirtd
如果?libvirtd?服務正在運行,你會看到類似以下的輸出:
● libvirtd.service - Virtualization daemon
Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2024-10-31 02:21:20 SAST; 7h ago
Docs: man:libvirtd(8)
https://libvirt.org
Main PID: 745818 (libvirtd)
Tasks: 21 (limit: 32768)
Memory: 116.7M
CGroup: /system.slice/libvirtd.service
├─ 2962 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/libexec/libvirt_leaseshelper
├─ 2963 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/libexec/libvirt_leaseshelper
└─745818 /usr/sbin/libvirtd --timeout 120
cockpit?服務是否開啟:systemctl status cockpit.socket
如果?cockpit?服務正在運行,你會看到類似以下的輸出:
cockpit.socket - Cockpit Web Service Socket
Loaded: loaded (/usr/lib/systemd/system/cockpit.socket; enabled; vendor preset: disabled)
Active: active (listening) since Thu 2024-10-31 02:21:42 SAST; 19s ago
Docs: man:cockpit-ws(8)
Listen: [::]:9090 (Stream)
Tasks: 0 (limit: 409648)
Memory: 32.0K
CGroup: /system.slice/cockpit.socket
CentOS?使用?firewalld?作為默認的防火墻管理工具。
firewalld:sudo systemctl stop firewalld && sudo systemctl disable firewalld
firewalld?是否已停止:sudo systemctl status firewalld
如果你不想完全關閉防火墻,而是希望放行?Cockpit?服務,可以執行以下命令:
Cockpit?服務通過防火墻:sudo firewall-cmd --add-service=cockpit --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --list-all
Ubuntu?使用?ufw(Uncomplicated Firewall)作為默認的防火墻管理工具。
ufw:sudo ufw disabled
ufw?是否已停止:sudo ufw status
如果你不想完全關閉防火墻,而是希望放行?Cockpit?服務,可以執行以下命令:
Cockpit?服務通過防火墻:Cockpit?默認使用?TCP?端口?9090。你可以通過以下命令允許該端口:
sudo ufw allow 9090/tcp
ufw(如果它當前是禁用狀態):sudo ufw enable
sudo ufw status
打開網絡瀏覽器并從地址欄導航至如下所示地址登錄?Cockpit?控制臺。
https://<您的服務器IP>:9090

使用系統的登錄賬號和密碼,訪問?cockpit?的?Web?服務,如上圖所示。
有一點需要注意,我們安裝?cockpit-machines?前后所看到的?Web?控制臺界面有所不同,所以如果要通過?Cockpit Web?控制臺圖形化界面管理虛擬機,一定要安裝?cockpit-machines?插件。讓我們通過如下兩張圖片對比一下:
cockpit-machines?之前控制臺界面
cockpit-machines?之后控制臺界面
在?Linux?系統中,創建?KVM?虛擬機可以通過多種方式實現,本文列舉兩種常見的方法:使用?virt-install?命令行工具和通過?Cockpit Web?控制臺。這兩種方法各有優缺點,適用于不同的使用場景和用戶需求。
使用?qemu-img?命令創建虛擬機的磁盤鏡像
[root@localhost tmp]# qemu-img create -f qcow2 CentOS-Stream-8.img 10G
Formatting 'CentOS-Stream-8.img', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=10737418240 lazy_refcounts=off refcount_bits=16
使用?virt-install?命令行創建虛擬機如下:
virt-install \
--virt-type kvm \
--name CentOS-Stream-8 \
--ram 4096 \
--vcpus 4 \
--cdrom=/dev/iso/CentOS-Stream-8-x86_64-20220310-dvd1.iso \
--disk path=/tmp/CentOS-Stream-8.img \
--network network=default \
--graphics vnc,listen=0.0.0.0 \
--os-type generic \
--video cirrus
下面是對?virt-install?命令及其各個參數的詳細解析:
--virt-type kvm:
KVM。KVM?內核模塊進行虛擬化。--name CentOS-Stream-8:
--ram 4096:
MB?為單位)。4096 MB(即?4 GB)內存。--vcpus 4:
CPU?核心數。CPU?資源,這里分配了?4?個虛擬?CPU?核心。--cdrom=/dev/iso/CentOS-Stream-8-x86_64-20220310-dvd1.iso:
ISO?文件)的位置。ISO?鏡像文件,這里使用的是?CentOS Stream 8?的安裝鏡像。--disk path=/tmp/CentOS-Stream-8.img:
CentOS-Stream-8.img?的磁盤文件,位于?/tmp?目錄下。--network network=default:
virbr0?橋接網絡。--graphics vnc,listen=0.0.0.0:
VNC?圖形界面,并設置?VNC?服務器監聽所有網絡接口(0.0.0.0?表示所有網絡接口)。--os-type generic:
generic?表示通用類型,適用于大多數?Linux?發行版。--video cirrus:
Cirrus?邏輯視頻設備。Cirrus?是一種常見的虛擬顯卡,適用于大多數操作系統。這條?virt-install?命令創建了一個名為?CentOS-Stream-8?的?KVM?虛擬機,分配了?4 GB?內存和?4?個虛擬?CPU?核心。虛擬機使用指定的?ISO?文件進行安裝,并創建了一個磁盤文件。網絡配置使用默認的橋接網絡,圖形界面使用?VNC,并監聽所有網絡接口。操作系統類型設置為通用類型,視頻設備使用?Cirrus?邏輯顯卡。
上述命令執行完后,會彈出圖形化安裝操作系統界面,按照指引一步一步操作即可,安裝完畢后,會出現如下界面:

安裝完成后,點擊重啟系統,該圖形化控制臺即會重新啟動,并彈出虛擬機登錄界面如圖所示。

輸入用戶面和密碼,按回車鍵即可登錄虛擬機。
使用?Cockpit Web?控制臺管理虛擬機是一種非常方便的方法。Cockpit?是一個基于?Web?的界面,可以幫助你管理和監控?Linux?服務器,包括虛擬機管理。以下是如何使用?Cockpit?來管理虛擬機的步驟。
打開瀏覽器: 打開你的瀏覽器,訪問?https://,其中??是你的服務器?IP?地址。登錄?Cockpit: 使用你的服務器用戶名和密碼登錄?Cockpit。

這里使用?Cockpit Web?控制臺可以直接查看到前面通過?virt-install?命令在服務器上創建的虛擬機。
進入虛擬機管理界面: 登錄后,點擊左側菜單中的 "虛擬機" 選項。查看虛擬機列表: 在 "虛擬機" 頁面,你可以看到所有已定義的虛擬機。你可以啟動、停止、暫停和刪除虛擬機。創建新的虛擬機: 點擊 "創建虛擬機" 按鈕。選擇虛擬機的類型(如從?ISO?文件安裝、從現有磁盤等)。配置虛擬機的資源(如?CPU、內存、磁盤大小等)。完成配置后,點擊 "創建" 按鈕創建并啟動虛擬機。

管理虛擬機控制臺: 點擊虛擬機名稱,進入虛擬機詳細頁面。在詳細頁面中,你可以查看虛擬機的狀態、資源使用情況,并可以通過?VNC?控制臺連接到虛擬機。

Cockpit?還提供了許多其他管理功能,如系統日志、網絡配置、存儲管理等。你可以通過左側菜單中的相應選項進行訪問和管理。
通過上述步驟,你可以輕松地使用?Cockpit Web?控制臺管理虛擬機。Cockpit?提供了一個直觀的界面,使得虛擬機的創建、管理和監控變得更加簡單。
Cockpit?是一個強大的基于?Web?的管理界面,專為?Linux?服務器設計,提供了豐富的功能來管理和監控系統資源,其中包括對?KVM?虛擬機的圖形化管理。通過?Cockpit,管理員可以輕松地創建、啟動、停止、暫停和刪除虛擬機,而無需復雜的命令行操作。
安裝?Cockpit?非常簡單,只需在?CentOS/RHEL?或?Debian/Ubuntu?系統上運行幾個簡單的命令即可完成。安裝完成后,通過瀏覽器訪問?https://,使用服務器的用戶名和密碼登錄即可進入?Cockpit?界面。
Cockpit?還提供了虛擬機控制臺功能,允許管理員通過?VNC?連接直接與虛擬機交互,進行操作系統安裝和日常管理任務。此外,Cockpit?還集成了系統日志、網絡配置、存儲管理等多種管理工具,使管理員能夠全面監控和管理整個系統。
總之,Cockpit?通過其簡潔易用的圖形化界面,極大地簡化了?KVM?虛擬機的管理任務,提高了管理員的工作效率和系統的管理便捷性。無論是初學者還是經驗豐富的管理員,都能從中受益。