Golang交叉编译配置
问题描述
在阅读 kube-ovn 源码时,发现源码中引用的 netlink 库在 windows 环境下,有些代码引用失败。错误如下图:
cgroups是docker容器的三大关键技术之一,它是Linux内核中用来给进程设置资源限制的一个重要功能,可以被限制的资源包括CPU、内存、磁盘、网络带宽等等。
在网络虚拟化环境中,veth pair常被用跨network namespace的通信,Docker容器的网络就是基于veth pair与network namespace来实现的通,常将veth pair一端置于容器中,另一端连接到虚拟网桥上,从而实现容器网络。但是在网络调试时,经常会需要在veth pair设备上面抓包,在一些虚拟网络设备较多的场景下,不太容易肉眼观察容器中的虚拟网卡与宿主机的虚拟网桥连接的veth pair设备。因此需要方法来寻找veth pair的peer设备。
Go语言通过 go 关键字可以很方便的创建 goroutine 实现并发编程,但是不同的 goroutine 同时访问或者修改公共资源时会带来一些意想不到的结果。在并发编程时,可以借助 Golang 的锁机制来保证数据安全,本文将介绍 Golang 的两种锁:互斥锁与读写锁,首先对这两种锁进行概念上的对比,然后通过实验对比不加锁与加锁的区别,最后介绍读写锁的读锁与写锁的互斥原则。
本文以 windows server 2016 系统为例,介绍在 KVM 环境制作 windows 虚机镜像的过程,该镜像主要用于 Kubernetes kubevirt 项目创建虚机,能供通过 cloudBase-init 完成虚机的初始化。
在 KVM 环境创建具有图形化界面的 windows 虚机之后,虚机可能在某些情况下无法连接外网,比如网卡驱动未安装的情况下。这时需要在虚机里面安装软件就显得特别麻烦,比如需要安装 windows 虚机镜像初始化软件 cloudBase-init。本文介绍一种通过给 windows 虚机挂载磁盘的方式共享宿主机文件的方法。
目前有个 CentOS6.x 的系统镜像,默认支持 cloud-init-0.7.5 版本 rpm,但是 cloud-init-0.7.5 无法通过本地化 QEMU 利用 NoCloud 数据源进行 IP 地址管理,因此无法实现虚机的网络初始化,需要手动进行配置。经过测试实验,cloud-init 17 以上版本能够支持 NoCloud 数据源信息注入,但是 cloud-init 17 及以上版本需要 python2.7 或者 python3 才能运行,而 CentOS6.x 系统默认使用 python2.6。因此为了在 CentOS6.x 上安装 cloud-init 17 以上的版本,需要先升级 python2.7,然后再安装 cloud-init。