这里我使用了两台虚机,每台虚机的操作系统是Ubuntu14.04 ,其中一台虚机上同时运行master节点和minion节点。
数量
地址
用户名
密码
master + minion
10.158.240.100
123456
minion
10.158.240.101
kuber
123456
节点
1
kuber
1
一、docker的安装
每台minion节点上都需要安装docker。执行下面命令
$ curl -sSL | sudo sh
设置免sudo 使用docker
添加用户组
$ sudo groupadd docker
$ sudo gpasswd -a kuber docker //kuber替换成你自己得用户名
$ sudo service docker restart
注销后重新登录
查看docker是否安装成功
$ docker version
二、设置用户无密码sudo
部署中如果使用的为非root账号,需要设置普通用户账号sudo权限不需要输入密码,减少后续部署过程中的交互情况。每台机器都要设置
1)修改/etc/sudoers文件
sudo vim /etc/sudoers
修改:%sudo ALL=(ALL:ALL) ALL为:%sudo ALL=NOPASSWD: ALL
2)添加普通用户到sudo组
$ sudo adduser kuber sudo //替换kuber为你的用户名
三、设置ssh 登录minion 节点免密码
部署过程中需要从master机器ssh以及scp到node节点,因此需要设置master机器到其他minion免密码登陆。在master机器上执行如下命令
1)生成rsa key
$ ssh-keygen
2)拷贝pub key到所有minion的虚机
$ ssh-copy-id //替换用户名及地址
四、安装bridge-utils
Kubernets需要操作bridge,因此需要安装bridge-utils支持。命令如下:
$ sudo apt-get install bridge-utils
五、安装kubernets
安装kubernets只需要在master节点操作即可,master会自动给minion节点远程安装kubernets组件。
1)下载kubernets代码
$ git clone
$ git checkout v1.2.0-alpha.5 //这里我们使用最新的版本
2)下载源码二进制可执行版本及解压生成
$ cd kubernetes/cluster/ubuntu
$ ./download-release.sh
因为国内网络问题,下载很慢,经常下载错误。可以从以下地址提前把包下载好
也可以从百度云盘下
把下载好的包拷贝到 kubernetes/cluster/ubuntu目录下,修改download-release.sh,并执行,diff文件如下
diff --git a/cluster/ubuntu/download-release.sh b/cluster/ubuntu/download-release.sh
index 3fce5d0..ea6100f 100755
--- a/cluster/ubuntu/download-release.sh
+++ b/cluster/ubuntu/download-release.sh
@@ -24,7 +24,7 @@ function cleanup {
# cleanup work
rm -rf flannel* kubernetes* etcd* binaries
}
-trap cleanup SIGHUP SIGINT SIGTERM
+trap SIGHUP SIGINT SIGTERM
pushd $(dirname $0)
mkdir -p binaries/master
@@ -34,7 +34,8 @@ mkdir -p binaries/minion
FLANNEL_VERSION=${FLANNEL_VERSION:-"0.5.5"}
echo "Prepare flannel ${FLANNEL_VERSION} release ..."
grep -q "^${FLANNEL_VERSION}\$" binaries/.flannel 2>/dev/null || {
- curl -L {FLANNEL_VERSION}/flannel-${FLANNEL_VERSION}-linux-amd64.tar.gz -o flannel.tar.gz
+ #curl -L {FLANNEL_VERSION}/flannel-${FLANNEL_VERSION}-linux-amd64.tar.gz -o flannel.tar.gz
+ mv flannel-${FLANNEL_VERSION}-linux-amd64.tar.gz flannel.tar.gz
tar xzf flannel.tar.gz
cp flannel-${FLANNEL_VERSION}/flanneld binaries/master
cp flannel-${FLANNEL_VERSION}/flanneld binaries/minion
@@ -46,7 +47,8 @@ ETCD_VERSION=${ETCD_VERSION:-"2.2.1"}
ETCD="etcd-v${ETCD_VERSION}-linux-amd64"
echo "Prepare etcd ${ETCD_VERSION} release ..."
grep -q "^${ETCD_VERSION}\$" binaries/.etcd 2>/dev/null || {
- curl -L {ETCD_VERSION}/${ETCD}.tar.gz -o etcd.tar.gz
+ #curl -L {ETCD_VERSION}/${ETCD}.tar.gz -o etcd.tar.gz
+ mv ${ETCD}.tar.gz etcd.tar.gz
tar xzf etcd.tar.gz
cp ${ETCD}/etcd ${ETCD}/etcdctl binaries/master
echo ${ETCD_VERSION} > binaries/.etcd
@@ -56,7 +58,7 @@ grep -q "^${ETCD_VERSION}\$" binaries/.etcd 2>/dev/null || {
KUBE_VERSION=${KUBE_VERSION:-"1.1.2"}
echo "Prepare kubernetes ${KUBE_VERSION} release ..."
grep -q "^${KUBE_VERSION}\$" binaries/.kubernetes 2>/dev/null || {
- curl -L {KUBE_VERSION}/kubernetes.tar.gz -o kubernetes.tar.gz
+ #curl -L {KUBE_VERSION}/kubernetes.tar.gz -o kubernetes.tar.gz
tar xzf kubernetes.tar.gz
pushd kubernetes/server
tar xzf kubernetes-server-linux-amd64.tar.gz
3)配置kubernets
修改 kubernetes/cluster/ubuntu/config-default.sh
export nodes=${nodes:-"kuber@10.158.240.100 kuber@10.158.240.101"}
role=${role:-"ai i "}
export NUM_MINIONS=${NUM_MINIONS:-2}
上面的变量定义如下:
nodes: 指定所有的节点地址和对应的用户名,包括master节点和minion节点。
role: 指定上面nodes对应位置的节点的角色,主要包括a为master,i为minion。
NUM_MINIONS : minion节点的数量。
4)部署
切换到kubernetes/cluster目录,执行如下命令:
$ KUBERNETES_PROVIDER=ubuntu ./kube-up.sh
该命令会远程部署minion
5)安装Kubernets插件
1)修改config-default.sh文件,开启DNS、UI等(默认即为开启,不需要修改)
2)修改deployAddons.sh文件(这里为一个bug)
KUBECTL="${KUBE_ROOT}/cluster/kubectl.sh"修改为:KUBECTL="kubectl"
3)添加kubectl的路径到PATH 环境变量中
vim ~/.barshrc,添加如下一行
export PATH=$PATH:~/kubernetes/cluster/ubuntu/binaries/
$ source ~/.bashrc
路径是kubectl可执行文件的绝对路径。
4)部署插件,执行如下命令
KUBERNETES_PROVIDER=ubuntu ./deployAddons.sh
6) 验证部署是否成功,执行如下命令查看minion节点是否安装成功:
$ kubectl get nodes
NAME LABELS STATUS AGE
10.158.240.100 kubernetes.io/hostname=10.158.240.100 Ready 4d
10.158.240.101 kubernetes.io/hostname=10.158.240.101 Ready 4d
六、设置docker 仓库镜像
因为国内网络访问docker hub比较慢,我们可以使用daocloud的docker仓库镜像进行加速,在每台minion上执行如下命名,添加daocloud的仓库镜像路径。
echo "DOCKER_OPTS=\"\$DOCKER_OPTS --registry-mirror=\"" | sudo tee -a /etc/default/docker
sudo service docker restart
该脚本可以将--registry-mirror加入到你的Docker配置文件/etc/default/docker中。适用于Ubuntu14.04,其他版本可能有细微不同。
注意:设置docker仓库镜像要放在安装完kubernets后执行,否则会被kubernets把配置给改掉。
七、下载kubernets使用的基础镜像
由于kubernets创建pod时,要使用pause的镜像,因为国内网络的原因,无法下载,会导致创建pod失败。这里我们需要在每台minion上下载好这个镜像
$ docker pull kubernetes/pause
$ docker tag kubernetes/pause gcr.io/google_containers/pause:0.8.0
八、创建pod,验证
$ kubectl create -f pod.yaml
$ kubectl get pods
pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80