Kubernetes 源码编译以及源码基于libvirt/kvm的coreos集群测试介绍

转自: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减少了内存开销

1. 搭建GO语言的编译环境
请参考另一篇博文: gvm 安装 go
2. 下载编译KUBERNETES
$ 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                      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 地址可以在以上的命令的结果里找到。

连接到 mater:
ssh [email protected]

连接到  kubernetes_minion-01:

ssh [email protected]

启动一个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 然后再添加到群里
或者可以手机扫二维码

qq群二维码:
Kubernetes 源码编译以及源码基于libvirt/kvm的coreos集群测试介绍_第1张图片



微信二维码
Kubernetes 源码编译以及源码基于libvirt/kvm的coreos集群测试介绍_第2张图片

你可能感兴趣的:(Kubernetes 源码编译以及源码基于libvirt/kvm的coreos集群测试介绍)