转自:http://jiaotech.com/blog/%E9%85%8D%E7%BD%AE-fedoracentos-%E4%BB%A5%E6%94%AF%E6%8C%81-kubernetes-%E5%B0%8F%E5%9E%8B%E9%9B%86%E7%BE%A4%E6%B5%8B%E8%AF%95/
本文主要集中介绍基于 centos/Fedora 的 kubernetes 的源码编译以及本地基于kvm的coreos集群的代码测试: 集群的启动速度非常快(几秒钟),因为使用COW减少了磁盘开销,因为使用了KSM减少了内存开销
$ gvm use go1.4.2
Now using version go1.4.2
$ git clone https://github.com/googlecloudplatform/kubernetes
$ cd kubernetes
$ make all
hack/build-go.sh
+++ [0531 21:35:53] Building go targets for linux/amd64:
cmd/kube-proxy
cmd/kube-apiserver
cmd/kube-controller-manager
cmd/kubelet
cmd/hyperkube
cmd/kubernetes
plugin/cmd/kube-scheduler
cmd/kubectl
cmd/integration
cmd/gendocs
cmd/genman
cmd/genbashcomp
examples/k8petstore/web-server
github.com/onsi/ginkgo/ginkgo
test/e2e/e2e.test
+++ [0531 21:36:19] Placing binaries
编译完了以后我们就可以找到所有的可执行文件:
$ ls -la _output/local/bin/linux/amd64/
total 354692
drwxrwxr-x 2 mjiao mjiao 4096 May 31 21:36 .
drwxrwxr-x 3 mjiao mjiao 4096 May 31 21:36 ..
-rwxr-xr-x 1 mjiao mjiao 24849215 May 31 21:36 e2e.test
-rwxr-xr-x 1 mjiao mjiao 20107691 May 31 21:36 genbashcomp
-rwxr-xr-x 1 mjiao mjiao 20133158 May 31 21:36 gendocs
-rwxr-xr-x 1 mjiao mjiao 20306640 May 31 21:36 genman
-rwxr-xr-x 1 mjiao mjiao 9512624 May 31 21:36 ginkgo
-rwxr-xr-x 1 mjiao mjiao 38847712 May 31 21:36 hyperkube
-rwxr-xr-x 1 mjiao mjiao 37920915 May 31 21:36 integration
-rwxr-xr-x 1 mjiao mjiao 32126232 May 31 21:36 kube-apiserver
-rwxr-xr-x 1 mjiao mjiao 24822056 May 31 21:36 kube-controller-manager
-rwxr-xr-x 1 mjiao mjiao 20106480 May 31 21:36 kubectl
-rwxr-xr-x 1 mjiao mjiao 32119425 May 31 21:36 kubelet
-rwxr-xr-x 1 mjiao mjiao 17635909 May 31 21:36 kube-proxy
-rwxr-xr-x 1 mjiao mjiao 39880431 May 31 21:36 kubernetes
-rwxr-xr-x 1 mjiao mjiao 17842416 May 31 21:36 kube-scheduler
-rwxr-xr-x 1 mjiao mjiao 6943248 May 31 21:36 web-server
cd kuberntes
export KUBERNETES_PROVIDER=libvirt-coreos
KUBE_PUSH=local cluster/kube-up.sh
virsh -c qemu:///system list
Id Name State
----------------------------------------------------
15 kubernetes_master running
16 kubernetes_minion-01 running
17 kubernetes_minion-02 running
18 kubernetes_minion-03 running
也可以使用 kubernetes 的命令来查看
$ ./cluster/kubectl.sh get minions
NAME LABELS STATUS
192.168.10.2 Ready
192.168.10.3 Ready
192.168.10.4 Ready
这些虚拟机运行的是coreos, ssh key (~/.ssh/id_*.pub)已经被安装到虚拟机里面, 可以使用 core 作为用户名来连接到这些 vm,master vm 的 ip 为 192.168.10.1,minions 的 ip 地址可以在以上的命令的结果里找到。
ssh [email protected]
连接到 kubernetes_minion-01
:
cluster/kube-down.sh
kubernetes 命令行工具
cluster/kubectl.sh
可以创建如下的 Pod 来测试集群是否正确运行:
{
"id": "fedoraapache",
"kind": "Pod",
"apiVersion": "v1beta1",
"desiredState": {
"manifest": {
"version": "v1beta1",
"id": "fedoraapache",
"containers": [{
"name": "fedoraapache",
"image": "fedora/apache",
"ports": [{
"containerPort": 80,
"hostPort": 80
}]
}]
}
},
"labels": {
"name": "fedoraapache"
}
}
cluster/kubectl create -f apache.json
cluster/kubectl get pods