您的位置:首页 > 其它

使用脚本部署kubernetes集群

2016-10-13 22:39 603 查看

docker部署

系统需求

// ubuntu 14.04  docker版本1.10.1
// 卸载已有环境
apt-get purge docker-engine


安装docker

sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates
sudo apt-key adv --keyserver hkp://p80.pool.sks-    keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
// 打开 /etc/apt/sources.list.d/docker.list 若无,则创建
// 写入:deb https://apt.dockerproject.org/repo ubuntu-trusty main
sudo apt-get update
sudo apt-get purge lxc-docker
apt-cache policy docker-engine
sudo apt-get update
sudo apt-get install linux-image-extra-$(uname -r)
sudo apt-get update
sudo apt-get install docker-engine=1.10.1-0~trusty
sudo service docker start
// install docker-engine 速度慢可用使用deb安装
// 镜像地址 http://mirrors.aliyun.com/docker-engine/apt/repo/pool/main/d/docker-engine/docker-engine_1.10.1-0~trusty_amd64.deb // sudo dpkg -i docker-engine_1.10.1-0~trusty_amd64.deb


参考地址

https://docs.docker.com/engine/installation/linux/ubuntulinux/

kubernetes部署

系统需求

docker version 1.2 以上以及 bridge-utils(默认ubuntu都有)

所有节点机器网络互通

ubuntu 14.04

多节点需要进行配置ssh连接不需要密码[1]

准备工作

github下载二进制包 kubernetes.tar.gz 并解压 (本实验选择1.3.5版本)

其中 kubernetes/platforms/linux/amd64/kubectl 是与 apiserver 交互的 client 程序

解压 kubernetes/server/kubernetes-server-linux-amd64.tar.gz

在解压到的 kubernetes 文件夹中找到 kubernetes-src.tar.gz 文件

解压 kubernetes-src.tar.gz 得到源码

以下类似 kubernetes/cluster/… 路径中的 kubernetes 文件夹均指kubernetes-src.tar.gz 解压出的文件夹

部署步骤

根据部署环境 修改kubernetes/cluster/ubuntu/config-default.sh 里的配置[2]

运行修改好的config-default.sh

./config-default.sh


设置版本环境变量

export KUBE_VERSION=1.3.5     // kubernetes的版本
export FLANNEL_VERSION=0.5.5  // flannel的版本
export ETCD_VERSION=2.2.1     // etcd的版本


为了安装进度,将 etcd.tar.gz flannel.tar.gz kubernetes.tar.gz(提前下载好,改好名字) 拷贝到kubernetes/cluster/ubuntu下,并且修改该目录的download-release.sh,注释掉以下语句

# curl https://github.com/coreos/flannel/releases/download/v${FLANNEL_VERSION}/flannel-${FLANNEL_VERSION}-linux-amd64.tar.gz -o flannel.tar.gz
# curl -L https://github.com/coreos/etcd/releases/download/v${ETCD_VERSION}/${ETCD}.tar.gz -o etcd.tar.gz
# curl -L https://github.com/kubernetes/kubernetes/releases/download/v${KUBE_VERSION}/kubernetes.tar.gz -o kubernetes.tar.gz


启动安装脚本

// 在 kubernetes/cluster/ 目录下运行
KUBERNETES_PROVIDER=ubuntu ./kube-up.sh


DNS配置

// 在 kubernetes/cluster/ubuntu 目录下运行
KUBERNETES_PROVIDER=ubuntu ./deployAddons.sh


参考地址

http://kubernetes.io/docs/getting-started-guides/ubuntu/

重启kubernetes

首先到kubernetes/cluster/,命运行

KUBERNETES_PROVIDER=ubuntu ./kube-down.sh


ssh到其他节点

cd  /opt/bin
rm  -rf  *
service flanneld stop
service kube stop
service kubelet stop
service kube-proxy stop
cd /etc/default/
rm flanneld
rm kubelet
rm kube-proxy
exit // 退出


进入 /kubernetes/cluster/ 运行

KUBERNETES_PROVIDER=ubuntu ./kube-up.sh


附录

[1] 配置ssh无密码登录

实验中 TargetUser 用户为 root 用户

ssh-keygen -t dsa
ssh-add   ~/.ssh/id_dsa
scp /root/.ssh/id-dsa.pub <TargetUser>@<TargetIP>:~
ssh <TargetUser>@<TargetIP>
cat id_dsa.pub >> ~/.ssh/authorized_keys
chmod +x ~/.ssh/authorized_keys


[2] 配置k8s的export详解

// 代表所要部署的节点,使用ssh连接的用户名@节点地址
export nodes=${nodes:-"root@10.10.103.121 root@10.10.103.120"}

// 代表各节点的属性,‘ai’表示既是主机也是节点,‘a’表示是主机,‘i'表示时节点
roles=${roles:-"ai i"} export roles_array=($roles)

// 代表节点个数
export NUM_NODES=${NUM_NODES:-2}

// 代表kubernetes服务IP范围,可根据RFC1918使用以下三个私有网络范围进行定义,不要与自己专用的私有网络冲突
export SERVICE_CLUSTER_IP_RANGE=${SERVICE_CLUSTER_IP_RANGE:-192.168.3.0/24}


三个私有网络范围:

10.0.0.0 - 10.255.255.255 (10/8 prefix)

172.16.0.0 - 172.31.255.255 (172.16/12 prefix)

192.168.0.0 - 192.168.255.255 (192.168/16 prefix)

gcr.io host IP

kubernetes默认会去gcr.io/google_containers/pause下载镜像,pod创建停留在ContainerCreating阶段,修改hosts文件解决(每个k8s Node都需要修改)

64.233.162.82   gcr.io
64.233.162.82   https://gcr.io/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  kubernetes