红联Linux门户
Linux帮助

Ubuntu14.04安装kubernetes1.2.0

发布时间:2016-11-02 15:38:56来源:linux网站作者:ximenghappy
准备3台虚机。规划master和node节点,在master设置免密登录,我们这的安装是通过kube-up脚本安装的。针对Kubernetes1.2
 
一:免密登录
以root用户登录 ssh-keygen -t rsa 生成密钥文件,一切按默认的方式生成,密钥文件生成后默认存放位置为/root/.ssh。
查看生成文件,通过命令ls -al .ssh 下面的这两个即为生成的密钥对.
进入.ssh目录将id_rsa.pub加到授权的key里面去,命令如下:
ubuntu@test-k8-master:~$ cat id_rsa.pub >> authorized_keys                                         
修改authorized_keys的权限,(这一步很重要不然的话,SSH时仍然需要密码)
chmod 600 authorized_keys
查看本机是否可以SSH无需密码登录: ssh localhost
OK , 以上证明本机登录成功。
接下来要做的就是将Master的公钥id_rsa.pub复制到Salve上去,并加入到授权的key中。 命令如下:
root@master:~$  scp ~/.ssh/id_rsa.pub root@node1:~/
由于首次登录还没有添加认证,这次仍然会提示输入密码.将公钥拷贝成功后,再登录不输入用户名密码即可。
 
二:安装Docker
添加gpg key
$ apt-key adv --keyserver hkp://pgp.mit.edu:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
添加源 vi /etc/apt/sources.list.d/docker.list
添加一下内容:
# Ubuntu Precise deb https://apt.dockerproject.org/repo ubuntu-precise main# Ubuntu Trusty deb https://apt.dockerproject.org/repo ubuntu-trusty main# Ubuntu Vivid deb https://apt.dockerproject.org/repo ubuntu-vivid main# Ubuntu Wily deb https://apt.dockerproject.org/repo ubuntu-wily main
执行安装命令
更新软件包
$ sudo apt-get update
安装Docker.
$ sudo apt-get install docker-engine
具体参考https://docs.docker.com/installation/ubuntulinux/#ubuntu
在每一个node节点安装docker,如master也部署成node.master也需要安装Docker
 
三:安装网桥工具
在每一个master,node节点安装网桥工具
root@master:~$  apt-get install bridge-utils
 
四:部署kubernetes
下载kubernetes1.2的安装源码。
在此网址:https://github.com/kubernetes/kubernetes,找到1.2.0的release下载下来.
将工作源码下载到本地/root/下。
我们可以根据工作目录kubernetes/cluster/ubuntu/download-release.sh下的网址将安装包下载下来。包括k8s的安装包(kubernetes.tar.gz)、etcd和flannel等
由于之前我们已经下载完release包了,这里我们就需要对down-release.sh做一些修改,防止重新下载,导致安装时间过长。进入刚才的kubernates目录,编辑cluster/ubuntu/下的download-release.sh,将其从网上下载依赖包的地址注释,将依赖包的版本与其对应。修改内容如下:
# flannel
FLANNEL_VERSION=${FLANNEL_VERSION:-"0.5.5"}
echo "Prepare flannel ${FLANNEL_VERSION} release ..."
grep -q "^${FLANNEL_VERSION}\$" binaries/.flannel 2>/dev/null || {
#curl -L  https://github.com/coreos/flannel/releases/download/v${FLANNEL_VERSION}/flannel-${FLANNEL_VERSION}-linux-amd64.tar.gz -o flannel.tar.gz
tar xzf flannel-0.5.5-linux-amd64.tar.gz
cp flannel-${FLANNEL_VERSION}/flanneld binaries/master
cp flannel-${FLANNEL_VERSION}/flanneld binaries/minion
echo ${FLANNEL_VERSION} > binaries/.flannel
}
# ectd
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 https://github.com/coreos/etcd/releases/download/v${ETCD_VERSION}/${ETCD}.tar.gz -o etcd.tar.gz
tar xzf etcd-v2.2.1-linux-amd64.tar.gz
cp ${ETCD}/etcd ${ETCD}/etcdctl binaries/master
echo ${ETCD_VERSION} > binaries/.etcd
}
# k8s
KUBE_VERSION=${KUBE_VERSION:-"1.2.0"}
echo "Prepare kubernetes ${KUBE_VERSION} release ..."
grep -q "^${KUBE_VERSION}\$" binaries/.kubernetes 2>/dev/null || {
#curl -L https://github.com/kubernetes/kubernetes/releases/download/v${KUBE_VERSION}/kubernetes.tar.gz -o kubernetes.tar.gz
tar xzf kubernetes_1.2.0.tar.gz
pushd kubernetes/server
tar xzf kubernetes-server-linux-amd64.tar.gz
popd
cp kubernetes/server/kubernetes/server/bin/kube-apiserver \
kubernetes/server/kubernetes/server/bin/kube-controller-manager \
kubernetes/server/kubernetes/server/bin/kube-scheduler binaries/master
cp kubernetes/server/kubernetes/server/bin/kubelet \
kubernetes/server/kubernetes/server/bin/kube-proxy binaries/minion
cp kubernetes/server/kubernetes/server/bin/kubectl binaries/
echo ${KUBE_VERSION} > binaries/.kubernetes
}
执行download-release.sh脚本,移动解压tar.gz并创建新的binaries目录
root@master:/root/kubernetes/cluster/ubuntu# ./download-release.sh
执行完成后,把需要部署的二进制文件集中到了cluster/ubuntu/binaries内.
我们进入cluster/ubuntu目录进行节点的部署。
修改配置文件,命令如下:
root@ku8master:/data/kubernetes/cluster/ubuntu# vi config-default.sh
主要配置以下参数。
节点准备配置,脚本内容如下
export nodes=${nodes:-"root@192.168.2.63 root@192.168.2.49 root@192.168.2.50 root@192.168.2.62"}
#节点的用户名@IP
# Define all your nodes role: a(master) or i(minion) or ai(both master and minion),
# Roles must be the same order with the nodes.
roles=${roles:-"ai i i i"}
#节点的角色a:master i:node  ai:master and node注意nodes和roles位置是一一对应的
# If it practically impossible to set an array as an environment variable
# from a script, so assume variable is a string then convert it to an array
export roles_array=($roles)
# Define minion numbers
export NUM_NODES=${NUM_NODES:-4}
#node节点的数量
# define the IP range used for service cluster IPs.
# according to rfc 1918 ref: https://tools.ietf.org/html/rfc1918 choose a private ip range here.
#export SERVICE_CLUSTER_IP_RANGE=${SERVICE_CLUSTER_IP_RANGE:-192.168.3.0/24}  # formerly PORTAL_NET
export SERVICE_CLUSTER_IP_RANGE=${SERVICE_CLUSTER_IP_RANGE:-10.238.0.0/16}
#node serviceClusterIP的范围。
# Admission Controllers to invoke prior to persisting objects in cluster
#export ADMISSION_CONTROL=NamespaceLifecycle,LimitRanger,ServiceAccount,ResourceQuota,SecurityContextDeny
export ADMISSION_CONTROL=NamespaceLifecycle,LimitRanger,ServiceAccount,ResourceQuota
#由于我们调用API接口遇到权限问题,需要将SecurityContextDeny参数去掉
执行安装
在kubernetes/cluster目录执行脚本,如下所示:
root@ku8master:/data/kubernetes/cluster/ubuntu# KUBERNETES_PROVIDER=ubuntu ./kube-up.sh
上面的脚本会根据config-defualt的节点配置把cluster/ubuntu/binaries里面的文件拷贝到nodes配置的节点上,并且安装Kubernetes。
至此Kubernetes基础安装完成。
还需要安装Kubernetes的Dns,Dashboard等服务。
 
本文永久更新地址:http://www.linuxdiyf.com/linux/25668.html