kcli-vm-operations

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

kcli VM Operations

kcli 虚拟机操作

VM Lifecycle Commands

虚拟机生命周期命令

Create VM

创建虚拟机

bash
undefined
bash
undefined

From image

From image

kcli create vm -i fedora40 myvm
kcli create vm -i fedora40 myvm

With parameters

With parameters

kcli create vm -i centos9stream -P memory=4096 -P numcpus=4 -P disks=[20,50] myvm
kcli create vm -i centos9stream -P memory=4096 -P numcpus=4 -P disks=[20,50] myvm

From profile

From profile

kcli create vm -p myprofile myvm
undefined
kcli create vm -p myprofile myvm
undefined

List VMs

列出虚拟机

bash
kcli list vm                    # All VMs
kcli list vm -o yaml            # YAML output
kcli list vm -o json            # JSON output
bash
kcli list vm                    # All VMs
kcli list vm -o yaml            # YAML output
kcli list vm -o json            # JSON output

VM Info

虚拟机信息

bash
kcli info vm myvm               # Full info
kcli info vm myvm -f ip         # Specific field
kcli info vm myvm -o yaml       # YAML format
bash
kcli info vm myvm               # Full info
kcli info vm myvm -f ip         # Specific field
kcli info vm myvm -o yaml       # YAML format

Start/Stop/Restart

启动/停止/重启

bash
kcli start vm myvm
kcli stop vm myvm
kcli restart vm myvm
bash
kcli start vm myvm
kcli stop vm myvm
kcli restart vm myvm

Delete VM

删除虚拟机

bash
kcli delete vm myvm             # With confirmation
kcli delete vm myvm --yes       # Skip confirmation
kcli delete vm myvm --snapshots # Delete snapshots too
bash
kcli delete vm myvm             # With confirmation
kcli delete vm myvm --yes       # Skip confirmation
kcli delete vm myvm --snapshots # Delete snapshots too

SSH Access

SSH 访问

bash
kcli ssh myvm                   # SSH as default user
kcli ssh -u root myvm           # SSH as specific user
kcli ssh -l myvm                # List SSH command only
bash
kcli ssh myvm                   # SSH as default user
kcli ssh -u root myvm           # SSH as specific user
kcli ssh -l myvm                # List SSH command only

Console Access

控制台访问

bash
kcli console myvm               # Graphical console (VNC/SPICE)
kcli console myvm --serial      # Serial console
bash
kcli console myvm               # Graphical console (VNC/SPICE)
kcli console myvm --serial      # Serial console

Disk Operations

磁盘操作

bash
undefined
bash
undefined

Add disk

Add disk

kcli create disk -s 20 -p default myvm # 20GB disk kcli create disk -s 50 --thin myvm # Thin provisioned
kcli create disk -s 20 -p default myvm # 20GB disk kcli create disk -s 50 --thin myvm # Thin provisioned

Delete disk

Delete disk

kcli delete disk myvm-disk1 myvm
kcli delete disk myvm-disk1 myvm

List disks

List disks

kcli list disk
undefined
kcli list disk
undefined

NIC Operations

网卡操作

bash
undefined
bash
undefined

Add NIC

Add NIC

kcli create nic -n mynetwork myvm
kcli create nic -n mynetwork myvm

Delete NIC

Delete NIC

kcli delete nic eth1 myvm
kcli delete nic eth1 myvm

Update NIC

Update NIC

kcli update nic -n newnetwork myvm --index 0
undefined
kcli update nic -n newnetwork myvm --index 0
undefined

Snapshots

快照

bash
undefined
bash
undefined

Create snapshot

Create snapshot

kcli create snapshot myvm mysnapshot
kcli create snapshot myvm mysnapshot

List snapshots

List snapshots

kcli list snapshot myvm
kcli list snapshot myvm

Revert to snapshot

Revert to snapshot

kcli revert snapshot myvm mysnapshot
kcli revert snapshot myvm mysnapshot

Delete snapshot

Delete snapshot

kcli delete snapshot myvm mysnapshot
undefined
kcli delete snapshot myvm mysnapshot
undefined

VM Configuration

虚拟机配置

Configuration Hierarchy

配置层级

Parameters are resolved in order (later overrides earlier):
  1. kvirt/defaults.py
    - Built-in defaults
  2. ~/.kcli/config.yml
    default section
  3. Provider-specific section in config.yml
  4. Profile definition (
    ~/.kcli/profiles.yml
    )
  5. Plan file parameters
  6. Command-line
    -P
    overrides
参数按以下顺序解析(后续配置覆盖前面的):
  1. kvirt/defaults.py
    - 内置默认值
  2. ~/.kcli/config.yml
    中的默认部分
  3. config.yml
    中提供商特定的部分
  4. 配置文件定义(
    ~/.kcli/profiles.yml
  5. 计划文件参数
  6. 命令行
    -P
    覆盖参数

Common Parameters

常用参数

yaml
undefined
yaml
undefined

Compute

Compute

numcpus: 2 # CPU count memory: 512 # Memory in MB cpumodel: host-model # CPU model
numcpus: 2 # CPU count memory: 512 # Memory in MB cpumodel: host-model # CPU model

Storage

Storage

pool: default # Storage pool disks: # Disk configuration
  • size: 20 # Size in GB
  • size: 50 pool: otherpool thin: true
pool: default # Storage pool disks: # Disk configuration
  • size: 20 # Size in GB
  • size: 50 pool: otherpool thin: true

Network

Network

nets: # Network configuration
  • default # Simple: network name only
  • name: mynet # Advanced: with options ip: 192.168.1.10 netmask: 255.255.255.0 gateway: 192.168.1.1 mac: aa:bb:cc:dd:ee:ff
nets: # Network configuration
  • default # Simple: network name only
  • name: mynet # Advanced: with options ip: 192.168.1.10 netmask: 255.255.255.0 gateway: 192.168.1.1 mac: aa:bb:cc:dd:ee:ff

OS Customization

OS Customization

image: fedora40 # Base image cloudinit: true # Enable cloud-init keys: # SSH public keys
  • ssh-rsa AAAA... user@host cmds: # Post-boot commands
  • dnf -y update
  • systemctl enable nginx files: # Files to inject
  • path: /etc/myconfig content: | key=value
undefined
image: fedora40 # Base image cloudinit: true # Enable cloud-init keys: # SSH public keys
  • ssh-rsa AAAA... user@host cmds: # Post-boot commands
  • dnf -y update
  • systemctl enable nginx files: # Files to inject
  • path: /etc/myconfig content: | key=value
undefined

Images

镜像

bash
undefined
bash
undefined

List available images

List available images

kcli list image
kcli list image

Download image

Download image

kcli download image fedora40 kcli download image centos9stream -p mypool
kcli download image fedora40 kcli download image centos9stream -p mypool

Delete image

Delete image

kcli delete image fedora40
kcli delete image fedora40

List all available images (from kcli catalog)

List all available images (from kcli catalog)

kcli list available-images
undefined
kcli list available-images
undefined

Profiles

配置文件

Profiles in
~/.kcli/profiles.yml
:
yaml
small:
  numcpus: 1
  memory: 1024
  disks:
    - size: 10

medium:
  numcpus: 2
  memory: 2048
  disks:
    - size: 20

webserver:
  image: centos9stream
  numcpus: 2
  memory: 4096
  nets:
    - default
  cmds:
    - dnf -y install nginx
    - systemctl enable --now nginx
Usage:
bash
kcli create vm -p webserver myweb
~/.kcli/profiles.yml
中的配置文件:
yaml
small:
  numcpus: 1
  memory: 1024
  disks:
    - size: 10

medium:
  numcpus: 2
  memory: 2048
  disks:
    - size: 20

webserver:
  image: centos9stream
  numcpus: 2
  memory: 4096
  nets:
    - default
  cmds:
    - dnf -y install nginx
    - systemctl enable --now nginx
使用方法:
bash
kcli create vm -p webserver myweb

Update Operations

更新操作

bash
undefined
bash
undefined

Update memory

Update memory

kcli update vm myvm -P memory=8192
kcli update vm myvm -P memory=8192

Update CPUs

Update CPUs

kcli update vm myvm -P numcpus=4
kcli update vm myvm -P numcpus=4

Update metadata

Update metadata

kcli update vm myvm -P information="Production server"
undefined
kcli update vm myvm -P information="Production server"
undefined

Clone VM

克隆虚拟机

bash
kcli clone vm myvm myclone
kcli clone vm myvm myclone --full  # Full clone (not linked)
bash
kcli clone vm myvm myclone
kcli clone vm myvm myclone --full  # Full clone (not linked)

Export VM

导出虚拟机

bash
kcli export vm myvm                 # Export to image
kcli export vm myvm --image myimage # Custom image name
bash
kcli export vm myvm                 # Export to image
kcli export vm myvm --image myimage # Custom image name

Troubleshooting

故障排查

VM Won't Start

虚拟机无法启动

bash
kcli -d start vm myvm              # Debug output
sudo virsh list --all               # Check libvirt state
sudo virsh start myvm               # Try direct start
bash
kcli -d start vm myvm              # Debug output
sudo virsh list --all               # Check libvirt state
sudo virsh start myvm               # Try direct start

No IP Address

无IP地址

bash
undefined
bash
undefined

Check DHCP is enabled on network

Check DHCP is enabled on network

kcli info network default
kcli info network default

Check cloud-init completed

Check cloud-init completed

kcli ssh myvm cat /var/log/cloud-init.log
undefined
kcli ssh myvm cat /var/log/cloud-init.log
undefined

SSH Connection Issues

SSH连接问题

bash
undefined
bash
undefined

Get SSH command details

Get SSH command details

kcli ssh -l myvm
kcli ssh -l myvm

Check VM has IP

Check VM has IP

kcli info vm myvm -f ip
kcli info vm myvm -f ip

Try direct SSH

Try direct SSH

ssh -i ~/.kcli/id_rsa user@<ip>
undefined
ssh -i ~/.kcli/id_rsa user@<ip>
undefined