Skip to content

Latest commit

 

History

History
63 lines (55 loc) · 3.13 KB

022-libvirt_CoreOS.md

File metadata and controls

63 lines (55 loc) · 3.13 KB

libvirt CoreOS的入门指南

译者:mr.art 校对:无

亮点

  1. 超高速启动集群(几秒钟,而不是几分钟的游离状态)
  2. 使用COW来节省磁盘使用空间
  3. 使用KSM来节省内存占用空间

环境准备

  1. 安装dnsmasq
  2. 安装ebtables
  3. 安装qemu
  4. 安装libvirt
  5. 启用和启动libvirt守护进程,例如:
    • systemctl enable libvirtd
    • systemctl start libvirtd
  6. 开启libvirt接入的用户权限
  7. 确保qemu用户可以使用$HOME
    在分布式环境中,libvirt的接入默认被拒绝或者每次接入需要密码。
    可以使用如下命令进行测试:
    virsh -c qemu:///system pool-list
    如果接入报错,请阅读https://libvirt.org/acl.htmlhttps://libvirt.org/aclpolkit.html。
    简而言之,如果libvirt是在包含Polkit的环境下编译(例如:Arch, Fedora 21),可以创建内容如下/etc/polkit-1/rules.d/50-org.libvirt.unix.manage.rules文件来给libvirt接入所有用户的权限
    sudo /bin/sh -c "cat - > /etc/polkit-1/rules.d/50-org.libvirt.unix.manage.rules" << EOF polkit.addRule(function(action, subject) { if (action.id == "org.libvirt.unix.manage" && subject.user == "$USER") { return polkit.Result.YES; polkit.log("action=" + action); polkit.log("subject=" + subject); } }); EOF
    ($USER为你的登陆用户名)
    如果libvirt在不包含Polkit的环境下编译(例如:14.04.1 LTS),检查libvirt unix socket的使用权限:
   srwxrwx--- 1 root libvirtd 0 févr. 12 16:03 /var/run/libvirt/libvirt-sock  
   $ usermod -a -G libvirtd $USER              
   $USER needs to logout/login to have the new group be taken into account```  
  Qemu是以一个具体的用户运行,他必须能接入到VMs驱动中。  
  所有的虚拟机都需要磁盘驱动器(CoreOS disk image, Kubernetes binaries, cloud-init files, 等等.),这些驱动都放入到./cluster/libvirt-coreos/libvirt_storage_pool中。
如果你的$HOME是可以读的,那么一起都好。如果你的$HOME是私有的,那么脚本cluster/kube-up.sh将会报如下错误:
```error: Cannot access storage file '$HOME/.../kubernetes/cluster/libvirt-coreos/libvirt_storage_pool/kubernetes_master.img' (as uid:99, gid:78): Permission denied```  
  可以通过如下方法修复这个问题:
  * 在cluster/libvirt-coreos/config-default.sh中设置POOL_PATH到一个目录:
    * 在文件系统找一个有大量空闲的磁盘空间
    * 这个目录你的用户具有可写权限
    * qemu用户可以接入
  * 允许你的qemu用户可以接入到所有的存储池
  设置访问权限:   
    ```setfacl -m g:kvm:--x ~```

## 安装
在默认的情况下,libvirt-coreos将创建一个 Kubernetes master和3个Kubernetes nodes。因为VM的驱动用了COW和由于内存释放和KSM,有许多的资源被过度的分配。
开始运行你的本地cluster,打开一个shell并且运行:  
 ```cd kubernetes
    export KUBERNETES_PROVIDER=libvirt-coreos
    cluster/kube-up.sh```