在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
本文记录了如何在ubuntu 14.04裸机上部署k8s集群,参考自官方文档。 拓扑结构
准备工作系统 安装Ubuntu 14.04 LTS 64bit server版本系统,配置好hostname和ip。 Docker 在minion节点上安装Docker,版本需要在1.2+,此处安装的是1.7.1。安装方法参见Docker安装(Ubuntu 64bit) 。 Google pause 给每个minion下载Google pause镜像。之后的工作会用到gcr.io/google_containers/pause镜像,国内用户由于GFW问题总是会出错,所以我们先从docker.io下载pause镜像,并设置tag。 # docker pull docker.io/kubernetes/pause # docker tag kubernetes/pause gcr.io/google_containers/pause:0.8.0 # docker tag gcr.io/google_containers/pause:0.8.0 gcr.io/google_containers/pause SSH 需要所有minion节点都能从master节点直接登录,不用密码。 在master节点上进行如下操作: $ ssh-keygen $ ssh-copy-id [email protected] $ ssh-copy-id [email protected] $ ssh-copy-id [email protected] 部署集群 下载 下载部署脚本及二进制文件。 首先从K8S的github仓库中下载部署脚本。 $ git clone https://github.com/kubernetes/kubernetes.git 修改各组件的版本,下载所有组件的二进制文件。此处我们使用etcd 2.2.0,flannel 0.5.0,k8s 1.0.6。 $ cd kubernetes/cluster/ubuntu $ vim build.sh #修改版本号 # version setting FLANNEL_VERSION="0.5.0" ETCD_VERSION="2.2.0" KUBE_VERSION="1.0.6" $ ./build.sh 有时候使用非root账户下载会出现错误,此时我们可以切换到root权限下下载,完成之后再使用chown命令将文件权限设置为原来的账户。 目录binaries中出现如下结构则表示成功。 配置 打开cluster/ubuntu/config-default.sh文件,修改如下字段: export nodes=${nodes:-"[email protected] [email protected] [email protected]"} export role=${role:-"a i i"} export NUM_MINIONS=${NUM_MINIONS:-2} export SERVICE_CLUSTER_IP_RANGE=${SERVICE_CLUSTER_IP_RANGE:-10.0.1.0/24} export FLANNEL_NET=${FLANNEL_NET:-172.16.0.0/16} 如果需要master节点也作为minion节点的话,只需将role中的a改为ai即可,NUM_MINIONS表示minion节点的个数。 service_cluster_ip_range表示集群中service所对应的IP范围。 部署 进到cluster/目录下进行如下操作, $ export KUBERNETES_PROVIDER=ubuntu $ ./kube-up.sh 接下来脚本就会将二进制文件拷贝到相应的节点上,不过在运行服务的时候需要root权限,所以需要我们为每一个节点输入一次密码。 测试 我们可以使用kubectl工具进行测试是否安装成功。 首先我们把kubectl的路径加入到PATH中,然后我们就可以直接使用该命令了。 我们启动一个Redis服务试一试。 进入examples/guestbook目录,修改redis-master-controller.yaml文件如下: apiVersion: v1 kind: ReplicationController metadata: name: redis-master labels: name: redis-master spec: replicas: 2 selector: name: redis-master template: metadata: labels: name: redis-master spec: containers: - name: master image: redis ports: - containerPort: 6379 然后运行如下命令启动Redis。 $ kubectl create -f redis-master-controller.yaml 然后使用 如果每个pod的状态都为Running则部署成功。 这里可能会遇到pod状态一直处于Penning的问题,此时可以通过 动态管理Cluster 如果集群已经部署好,我们希望能够动态地添加和删除Minion节点。 一种方法是,使用kube-down.sh将所有节点停掉之后,修改config-default.sh文件,将新添加的节点信息加入进去,或者删掉不用的节点信息,然后再使用kube-up.sh脚本重新启动。 当然我们希望能够在不关掉已有节点的情况下动态添加新的Minion节点,但是目前我还没找到方法。等以后研究出来了再更新。 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持极客世界。 |
请发表评论