本文记录了如何在ubuntu 14.04裸机上部署k8s集群,参考自官方文档。
拓扑结构
- 1master + 2minion
- k8s-master 192.168.0.201 master
- k8s-node1 192.168.0.202 minion
- k8s-node2 192.168.0.203 minion
准备工作系统
安装Ubuntu 14.04 LTS 64bit server版本系统,配置好hostname和ip。
在更新国内的软件源的时候,由于GFW的原因,经常会出现md5校验错误,建议使用阿里云的源。
Docker
在minion节点上安装Docker,版本需要在1.2+,此处安装的是1.7.1。安装方法参见Docker安装(Ubuntu 64bit) 。
安装好Docker之后,我们最好还配置一个国内的registry mirror,加快镜像拉取速度,参考配置国内免费registry mirror。
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 user@192.168.0.201 $ ssh-copy-id user@192.168.0.202 $ ssh-copy-id user@192.168.0.203
部署集群
下载
下载部署脚本及二进制文件。
首先从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:-"wangtao@192.168.0.201 wangtao@192.168.0.202 wangtao@192.168.0.203"} 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范围。
flannel_net表示pod所分配的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
然后使用kubectl get rc
和 kubectl get pods
查看是否成功。
如果每个pod的状态都为Running则部署成功。
这里可能会遇到pod状态一直处于Penning的问题,此时可以通过kubectl describe pods/pod-name
来查看pod信息,如果没有出错信息,那么Minion一直处于下载镜像中,下载好之后pod即会成功启动。
动态管理Cluster
如果集群已经部署好,我们希望能够动态地添加和删除Minion节点。
一种方法是,使用kube-down.sh将所有节点停掉之后,修改config-default.sh文件,将新添加的节点信息加入进去,或者删掉不用的节点信息,然后再使用kube-up.sh脚本重新启动。
当然我们希望能够在不关掉已有节点的情况下动态添加新的Minion节点,但是目前我还没找到方法。等以后研究出来了再更新。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
Docker,k8s部署
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新动态
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]