本文主要集中介绍基于 centos/Fedora 的 kubernetes 的源码编译以及本地基于kvm的coreos集群的代码测试: 集群的启动速度非常快(几秒钟),因为使用COW减少了磁盘开销,因为使用了KSM减少了内存开销
1. 搭建GO语言的编译环境
请参考另一篇博文:
gvm 安装 go
2. 下载编译KUBERNETES
<pre name="code" class="plain">$ 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
3. 启动源代码自带集群测试
在此之前我们需要为我们的 Linux 主机配置好 KVM/libvirt 环境,清参考这篇博文:
Libvirt 环境搭建
libvirt-cores 将要创建一个kubernetes master 和 3个 kubernetes minions, 启动本地的 cluster 命令:
cd kuberntes
export KUBERNETES_PROVIDER=libvirt-coreos
KUBE_PUSH=local cluster/kube-up.sh
KUBERNETES_PROVIDER 环境变量用来定义 kubernetes 的集群的服务提供者, 默认为 google 云服务 google compute engine.
NUM_MINIONS 用来定义集群的 minions 的数量, 默认为 3个
KUBE_PUSH 用来指定部署到 minions 的 kubernetes 可执行文件的种类:
- release: 默认设置,部署 _output/release-tars/kubernetes-server-….tar.gz 到集群,而这个release文件将会是 make release or make release-skip-tests的执行结果
- local: 部署 _output/local/go/bin (执行 make 命令得到的可执行文件)
可以执行以下命令来查看群的状态
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 <none> Ready
192.168.10.3 <none> Ready
192.168.10.4 <none> Ready
这些虚拟机运行的是coreos, ssh key (~/.ssh/id_*.pub)已经被安装到虚拟机里面, 可以使用 core 作为用户名来连接到这些 vm,master vm 的 ip 为 192.168.10.1,minions 的 ip 地址可以在以上的命令的结果里找到。
连接到 mater:
ssh core@192.168.10.1
连接到 kubernetes_minion-01:
ssh core@192.168.10.2
启动一个5个子节点的集群:
NUM_MINIONS=5 cluster/kube-up.sh
删除集群:
cluster/kube-down.sh
kubernetes 命令行工具
cluster/kubectl.sh
可以创建如下的 Pod 来测试集群是否正确运行:
apache.json :
{
"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
找到这个 Pod 的 IP 地址,从集群中的Pod所在的主机向 Pod 发送请求:
curl http://$POD_IP
欢迎加入qq群:Google/Kubernetes技术 319807078
我们的微信群: 可以先加微信联系人 kube008 然后再添加到群里
我们的微信群: 可以先加微信联系人 kube008 然后再添加到群里
或者可以手机扫二维码
qq群二维码:
微信二维码

2754

被折叠的 条评论
为什么被折叠?



