Creating and managing virtual machines
The demo.sh
script which you've run above has set up Virtlet, started virtual machine with cirros image, started a nginx pod which is exposed via Service.
Let's check how it all works.
The script will ssh into a cirros-vm
before finishing. Switch to another console and list the pods:
kubectl get pod
cirros-vm
and nginx
pod are both listed. Now list the services:
kubectl get svc
Now go back to the first console where you are logged in the cirros-vm
. If you disconnected from it you can reconnect with virtletctl ssh cirros@cirros-vm -- -i virtlet/examples/vmkey
.
Check that you have internet access:
ping 8.8.8.8
ping mirantis.com
Make sure that the cluster network is also accessible from within the pod. Retrieve some data:
curl nginx
Disconnect from the VM using Ctrl-D.
View Pod details
Use the kubectl get
and kubectl describe
commands to view details for the cirros-vm
pod:
View the logs of a Pod
Use the kubectl logs
command to view the logs for the cirros-vm
pod:
kubectl logs cirros-vm
Attach to the VM
Use the kubectl attach
command to attach to the VM console:
kubectl attach -it cirros-vm
To exit use CTRL-]
key combination.
Create new Ubuntu VM
Now you can create another virtual machine. Let's create Ubuntu VM from Virtlet examples:
cat examples/ubuntu-vm-with-testuser.yaml
kubectl apply -f examples/ubuntu-vm-with-testuser.yaml
This example also shows how cloud-init script can be used. Here new user: testuser
is created and also an ssh key is injected.
Wait for ubuntu VM:
kubectl get pod -w
Now attach to the VM using testuser/testuser credentials:
kubectl attach -it ubuntu-vm-with-testuser
Check if it also has internet connection using the same method which was used for cirros-vm
above.
Use in Deployment
Because Virtlet VMs are just normal pods you can create Deployment, DaemonSet or even StatefulSet from Virtual Machines:
cat examples/deploy-cirros-vm.yaml
kubectl apply -f examples/cirros-vm-deployment.yaml
When it's ready you can scale it:
kubectl scale --replicas=2 deploy/cirros-deployment