k8s+vagrant+ubuntu development env under Mac
背景
虽然官方已有一个vagrant开发环境可用于mac,但是有几个问题:
guest os是fedora,我不熟悉也不喜欢
使用了并不是必须的salt来装k8s,没有必要
国内使用的话需要配置翻墙代理,我本人用的不是vpn而是proxy,比较麻烦些
部分信息稍老,且更新比较慢,而k8s的开发迭代速度很快
因此,我准备按照下述方法构建mac下开发环境:
使用vagrant+virtualbox用于cluster物理环境管理,即:负责拉起控制节点和K8S集群节点,挂载外部资源文件到VM内
使用官方ubuntu cluster的安装方式,完成K8S集群软件安装
部署方式
为了节省资源,准备先只用两台VM,功能分别是:
k8s-ctl:作为控制节点,完成待部署的k8s版本准备、kubectl工具安装等,远程连接到k8s master
k8s-master:k8s集群master节点,是个standalone的模式,即:master和node都装在一台VM上
部署过程
Vagrant
假定环境已安装好Vagrant(1.6.2以上)和Virtualbox(4.3),然后需要做三件事:
准备好box文件,我这里用的是官方的ubuntu 14.04 64bit server
vagrant box add ubuntu-14.04-amd64
创建一个目录(本文假定路径为~/k8s/deploy/),也即vagrantfile所在目录
mkdir -p ~/k8s/deploycd ~/k8s/deploy
编写Vagrantfile文件:在deploy目录新建一个文件Vagrantfile,写入下述内容:
Vagrant.configure(2) do |config| config.vm.define "k8s-ctl" do |c| config.vm.box = "ubuntu-14.04-amd64" c.vm.network "public_network" end config.vm.define "k8s-master" do |c| config.vm.box = "ubuntu-14.04-amd64" c.vm.network "public_network" endend
然后就可以通过vagrant up启动两台VM,然后可以ssh进入k8s-ctl:
vagrant upvagrant ssh k8s-ctl
安装k8s
这部分主要参考官方ubuntu安装guide,但基于使用场景不同做了一些改动。
主要如下步骤:
获取可部署的k8s release
首先下载任意一个k8s release版本(注:此并不是将要部署的版本,而是作为部署环境),建议在host上的~/k8s/deploy,也即是挂载到VM内的/vagrant目录。
cd ~/k8s/deploywget https://github.com/kubernetes/kubernetes/releases/download/v1.0.6/kubernetes.tar.gz -O - | tar -zxf -
然后,我们就可以进入k8s-ctl,开始进行部署前的准备工作:
vagrant ssh k8s-ctl# 可选:配置HTTP代理链接github、s3、gcr.io,若用VPN则不需要export http_proxy=http://<proxy-ip>:<proxy-port>export https_proxy=https://<proxy-ip>:<proxy-port>cd /vagrant/kubernetes/cluster/ubuntu
修改./build.sh,在文件头添加:
FLANNEL_VERSION=0.5.3ETCD_VERSION=2.2.0KUBE_VERSION=1.0.6
然后执行 `./build.sh`,正常结束后,当前路径下会多出一个`binaries/`目录,保存的是k8s多个二进制执行文件。
修改部署配置:
config-default.sh文件头部添加如下内容:
PROXY_SETTING="http_proxy=http://10.0.2.2:9743 https_proxy=https://10.0.2.2:9743"nodes="vagrant@192.168.0.108"role="ai"NUM_MINIONS=1
开始部署
export KUBERNETES_PROVIDER=ubuntucd /vagrant/kubernetes/cluster/./kube-up.sh
注1:如果提示需要sshkey,则`ssh-keygen && ssh-add`注2:如果validate不成功,可能是因为ubuntu镜像缺少一些需要的软件,ssh进入k8s-master VM执行下述操作:
sudo apt-get install -y pgrep, xxx