[关闭]
@dujun 2015-01-09T14:08:21.000000Z 字数 4022 阅读 3163

10.2一个简单案例

Kubernetes写书


搭建单机demo环境(for ubuntu)

本文将介绍如何在一台ubuntu系统的虚拟机上运行kubernetes服务,master节点和minion节点都运行在同一台机器上。
安装分为以下三个步骤:

安装docker

安装docker环境是运行kubernetes的基础,因为kubernetes本身就是基于docker的一套系统。这里假定读者已经安装了docker,故不再赘述。

获取kubernetes各组件和etcd的二进制可执行文件

有两种途径可以获取kubernetes各组件的二进制可执行文件:下载已经编译好的二进制可执行文件包和下载源码并从源码编译。使用前者的好处是可以任意挑选官方的release版本,同时省去编译的时间(编译 release的过程会启动docker容器并下载包括go语言在内的依赖包,根据网速耗费半小时到几个小时不等);如果希望对Kubernetes进行二次开发,推荐使用后者安装Kubernetes。

从GitHub上的Kubernetes仓库的release页面可以看到所有可用的二进制可执行文件压缩包。

挑选你需要的版本,例如v0.7.2,下载:

wget https://github.com/GoogleCloudPlatform/kubernetes/releases/download/v0.7.2/kubernetes.tar.gz

解压并进入生成的kubernetes/目录:

tar -xzvf kubernetes.tar.gz
cd kubernetes/

我们关心的server端二进制可执行文件压缩包在server/bin/目录下:

root@ubuntu:~/kubernetes_binary/kubernetes# ls server
kubernetes-salt.tar.gz  kubernetes-server-linux-amd64.tar.gz

root@ubuntu:~/kubernetes_binary/kubernetes/server# tar -tzvf kubernetes-server-linux-amd64.tar.gz 
drwxr-xr-x root/wheel        0 2014-12-30 03:11 kubernetes/
drwxr-xr-x root/wheel        0 2014-12-30 03:11 kubernetes/server/
drwxr-xr-x root/wheel        0 2014-12-30 03:11 kubernetes/server/bin/
-rwxr-xr-x root/wheel 16141712 2014-12-30 03:11 kubernetes/server/bin/kube-apiserver
-rwxr-xr-x root/wheel 12965312 2014-12-30 03:11 kubernetes/server/bin/kube-controller-manager
-rwxr-xr-x root/wheel  9769408 2014-12-30 03:11 kubernetes/server/bin/kube-proxy
-rwxr-xr-x root/wheel  9386640 2014-12-30 03:11 kubernetes/server/bin/kube-scheduler
-rwxr-xr-x root/wheel 11086824 2014-12-30 03:11 kubernetes/server/bin/kubecfg
-rwxr-xr-x root/wheel 11451632 2014-12-30 03:11 kubernetes/server/bin/kubectl
-rwxr-xr-x root/wheel 14973728 2014-12-30 03:11 kubernetes/server/bin/kubelet
-rwxr-xr-x root/wheel 16888056 2014-12-30 03:11 kubernetes/server/bin/kubernetes

而client端命令行工具的二进制可执行文件根据不同的操作系统归类被放在platforms/目录下:

root@ubuntu:~/kubernetes_binary/kubernetes# ls platforms/
darwin  linux  windows

以linux为例,又根据不同的硬件架构分类:

root@ubuntu:~/kubernetes_binary/kubernetes/platforms# ls linux/
386  amd64  arm

Kubernetes client端二进制可执行文件一共三个:kubecfgkubectlkubernetes,其中kubecfg是较老版本的命令行工具,用于使用Kubernetes提供的API,现已经被kubectl代替,而kubernetes则用于访问kubelet的API?。

Kubernetes源代码放在Github上托管。

git clone https://github.com/GoogleCloudPlatform/kubernetes.git
cd kubernetes/build
./release

最后会生成编译好的二进制文件包以及中间过程产生的与docker相关的docker image和dockerfile等,放在kubernetes/_output目录下,

root@ubuntu:~/kubernetes_sources/kubernetes/_output# ls
dockerized  images  release-stage  release-tars

root@ubuntu:~/kubernetes_sources/kubernetes/_output/release-stage# ls
client  full  salt  server  test

我们关心的编译结果是release-stage和release-tars这两个目录。release-stage目录下存放的则是支持linux-amd64架构的包含server端二进制可执行文件(放在server子目录下)和支持不同平台的client端的二进制可执行文件(放在client子目录下),与从官方网站下载的完全一样。而release-tars则存放的是release-stage目录下各级子目录的压缩包。

制作release的过程其实发生了不少有意思的事情,包括启动docker容器用来安装go语言环境、etcd等,读者有兴趣可以查看release脚本。

安装upstart脚本

运行ubuntu/util.sh脚本会将Kubernetes server端的进程和etcd进程做成ubuntu upstart,即能够用service start|stop|restart/force-reload等方式操作这些服务进程。

$ cd kubernetes/cluster/ubuntu
$ sudo ./util.sh

脚本执行过后,Kubernetes server端进程和etcd进程已经启动了。

kubernetes默认其服务端程序放在/opt/bin目录下,当然,你也可以根据自己的需要,将它们放到其它目录下,但是如果这样做的话,就需要修改/etc/default/kube*文件并重启相应的服务进程。以etcd为例:

$ sudo cat /etc/default/etcd
1. # Etcd Upstart and SysVinit configuration file
2.
3. # Customize etcd location 
4. # ETCD="/opt/bin/etcd"
5.
6. # Use ETCD_OPTS to modify the start/restart options
7. ETCD_OPTS="-listen-client-urls=http://127.0.0.1:4001"

如果将etcd的二进制文件放在除/opt/bin/以外的的目录下,就应该修改第4行的ETCD=字段为相应的实际目录。另外,还可以修改etcd的启动/重启选项ETCD_OPTS,这里服务端默认监听本地(127.0.0.1)的4001端口。

安装kubernetes客户端程序

由于我们已经编译得到kubernetes客户端程序的二进制可执行文件,因为,只要将这些二进制文件拷贝到客户机的环境变量PATH能够搜索到的目录下即可(比如/usr/local/bin)。检查安装是否完成:

root@ubuntu:~# kubectl version
Client Version: version.Info{Major:"0", Minor:"7+", GitVersion:"v0.7.0-276-gd098456b6d36f7-dirty", GitCommit:"d098456b6d36f751efbf4c92690a51c0ac7e6176", GitTreeState:"dirty"}
Server Version: &version.Info{Major:"0", Minor:"7+", GitVersion:"v0.7.0-276-gd098456b6d36f7-dirty", GitCommit:"d098456b6d36f751efbf4c92690a51c0ac7e6176", GitTreeState:"dirty"}

这时我们就可以使用Kubernetes的命令行工具kubectl来启动和调度docker容器了。

本文固定链接:https://www.zybuluo.com/dujun/note/59771

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注