mirror of
https://github.com/vee1e/kubeedge.git
synced 2026-09-01 10:18:33 +00:00
Add script to set up VM runtime
This script will set up Env on worker node to provision VM on the worker node. It makes use of Arktos Runtime release to start three containers: - vmruntime_vms - vmruntime_libvirt - vmruntime_virtlet
This commit is contained in:
parent
282d2ff359
commit
3d4f459737
1 changed files with 137 additions and 0 deletions
137
hack/setup-vmruntime.sh
Normal file
137
hack/setup-vmruntime.sh
Normal file
|
|
@ -0,0 +1,137 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright 2020 Authors of Arktos.
|
||||
# Copyright 2020 The KubeEdge Authors - file modified.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
|
||||
VMS_CONTAINER_NAME=vmruntime_vms
|
||||
LIBVIRT_CONTAINER_NAME=vmruntime_libvirt
|
||||
VIRTLET_CONTAINER_NAME=vmruntime_virtlet
|
||||
|
||||
# Add more env as needed or support extra config with the optional command args
|
||||
VIRTLET_LOGLEVEL=${VIRTLET_LOGLEVEL:-"4"}
|
||||
VIRTLET_DISABLE_KVM=${VIRTLET_DISABLE_KVM:="y"}
|
||||
|
||||
usage() {
|
||||
echo "Invalid usage. Usage: "
|
||||
echo "\t$0 start | cleanup [optionl extra args]"
|
||||
exit 1
|
||||
}
|
||||
|
||||
cleanup() {
|
||||
echo "Stop vm runtime docker containers"
|
||||
docker kill ${VMS_CONTAINER_NAME}
|
||||
docker kill ${LIBVIRT_CONTAINER_NAME}
|
||||
docker kill ${VIRTLET_CONTAINER_NAME}
|
||||
|
||||
echo "Delete vm runtime meta data files"
|
||||
rm -f -r /var/lib/virtlet/
|
||||
}
|
||||
|
||||
startRuntime() {
|
||||
echo "Create virtlet container bind host directories"
|
||||
mkdir -p /usr/libexec/kubernetes/kubelet-plugins/volume/exec
|
||||
mkdir -p /etc/libvirt/qemu
|
||||
mkdir -p /var/lib/libvirt
|
||||
mkdir -p /var/log/libvirt
|
||||
mkdir -p /var/lib/virtlet/vms
|
||||
mkdir -p /var/log/virtlet/vms
|
||||
mkdir -p /var/run/libvirt
|
||||
mkdir -p /var/run/netns
|
||||
mkdir -p /var/lib/virtlet/volumes
|
||||
|
||||
echo "Start vm runtime containers"
|
||||
|
||||
docker run --rm --net=host --privileged --pid=host --uts=host --ipc=host --user=root \
|
||||
--env VIRTLET_LOGLEVEL=${VIRTLET_LOGLEVEL} \
|
||||
--env VIRTLET_DISABLE_KVM=${VIRTLET_DISABLE_KVM} \
|
||||
--mount type=bind,src=/dev,dst=/dev \
|
||||
--mount type=bind,src=/var/lib,dst=/host-var-lib \
|
||||
--mount type=bind,src=/run,dst=/run \
|
||||
--mount type=bind,src=/usr/libexec/kubernetes/kubelet-plugins/volume/exec,dst=/kubelet-volume-plugins \
|
||||
--mount type=bind,src=/var/lib/virtlet,dst=/var/lib/virtlet,bind-propagation=rshared \
|
||||
--mount type=bind,src=/var/log,dst=/hostlog \
|
||||
arktosstaging/vmruntime:latest /bin/bash -c "/prepare-node.sh > /hostlog/virtlet/prepare-node.log 2>&1 "
|
||||
|
||||
docker run --rm --net=host --privileged --pid=host --uts=host --ipc=host --user=root \
|
||||
--name ${VMS_CONTAINER_NAME} \
|
||||
--mount type=bind,src=/dev,dst=/dev \
|
||||
--mount type=bind,src=/lib/modules,dst=/lib/modules,readonly \
|
||||
--mount type=bind,src=/var/lib/libvirt,dst=/var/lib/libvirt \
|
||||
--mount type=bind,src=/var/lib/virtlet,dst=/var/lib/virtlet,bind-propagation=rshared \
|
||||
--mount type=bind,src=/var/log/virtlet,dst=/var/log/virtlet \
|
||||
--mount type=bind,src=/var/log/virtlet/vms,dst=/var/log/vms \
|
||||
arktosstaging/vmruntime:latest /bin/bash -c "/vms.sh > /var/log/virtlet/vms.log 2>&1 " &
|
||||
|
||||
docker run --rm --net=host --privileged --pid=host --uts=host --ipc=host --user=root \
|
||||
--name ${LIBVIRT_CONTAINER_NAME} \
|
||||
--mount type=bind,src=/boot,dst=/boot,readonly \
|
||||
--mount type=bind,src=/dev,dst=/dev \
|
||||
--mount type=bind,src=/var/lib,dst=/var/lib \
|
||||
--mount type=bind,src=/etc/libvirt/qemu,dst=/etc/libvirt/qemu \
|
||||
--mount type=bind,src=/lib/modules,dst=/lib/modules,readonly \
|
||||
--mount type=bind,src=/run,dst=/run \
|
||||
--mount type=bind,src=/sys/fs/cgroup,dst=/sys/fs/cgroup \
|
||||
--mount type=bind,src=/var/lib/libvirt,dst=/var/lib/libvirt \
|
||||
--mount type=bind,src=/var/lib/virtlet,dst=/var/lib/virtlet,bind-propagation=rshared \
|
||||
--mount type=bind,src=/var/log/virtlet,dst=/var/log/virtlet \
|
||||
--mount type=bind,src=/var/log/libvirt,dst=/var/log/libvirt \
|
||||
--mount type=bind,src=/var/log/virtlet/vms,dst=/var/log/vms \
|
||||
--mount type=bind,src=/var/run/libvirt,dst=/var/run/libvirt \
|
||||
arktosstaging/vmruntime:latest /bin/bash -c "/libvirt.sh > /var/log/virtlet/libvirt.log 2>&1" &
|
||||
|
||||
docker run --rm --net=host --privileged --pid=host --uts=host --ipc=host --user=root \
|
||||
--name ${VIRTLET_CONTAINER_NAME} \
|
||||
--env VIRTLET_LOGLEVEL=${VIRTLET_LOGLEVEL} \
|
||||
--env VIRTLET_DISABLE_KVM=${VIRTLET_DISABLE_KVM} \
|
||||
--mount type=bind,src=/etc/cni/net.d,dst=/etc/cni/net.d \
|
||||
--mount type=bind,src=/opt/cni/bin,dst=/opt/cni/bin \
|
||||
--mount type=bind,src=/boot,dst=/boot,readonly \
|
||||
--mount type=bind,src=/dev,dst=/dev \
|
||||
--mount type=bind,src=/var/lib,dst=/var/lib \
|
||||
--mount type=bind,src=/etc/libvirt/qemu,dst=/etc/libvirt/qemu \
|
||||
--mount type=bind,src=/lib/modules,dst=/lib/modules,readonly \
|
||||
--mount type=bind,src=/run,dst=/run \
|
||||
--mount type=bind,src=/sys/fs/cgroup,dst=/sys/fs/cgroup \
|
||||
--mount type=bind,src=/usr/libexec/kubernetes/kubelet-plugins/volume/exec,dst=/kubelet-volume-plugins \
|
||||
--mount type=bind,src=/var/lib/libvirt,dst=/var/lib/libvirt \
|
||||
--mount type=bind,src=/var/lib/virtlet,dst=/var/lib/virtlet,bind-propagation=rshared \
|
||||
--mount type=bind,src=/var/log,dst=/var/log \
|
||||
--mount type=bind,src=/var/log/virtlet,dst=/var/log/virtlet \
|
||||
--mount type=bind,src=/var/log/virtlet/vms,dst=/var/log/vms \
|
||||
--mount type=bind,src=/var/run/libvirt,dst=/var/run/libvirt \
|
||||
--mount type=bind,src=/var/run/netns,dst=/var/run/netns,bind-propagation=rshared \
|
||||
arktosstaging/vmruntime:latest /bin/bash -c "/start.sh > /var/log/virtlet/virtlet.log 2>&1" &
|
||||
}
|
||||
|
||||
op=$1
|
||||
|
||||
# Should there be more OPs, change to switch
|
||||
if [ "$op" = "start" ]; then
|
||||
shift
|
||||
startRuntime $*
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ "$op" = "cleanup" ]; then
|
||||
shift
|
||||
cleanup $*
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Print usage for not supported operations
|
||||
usage
|
||||
|
||||
exit 1
|
||||
Loading…
Add table
Add a link
Reference in a new issue