博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用Vagrant部署K8S Ubuntu集群
阅读量:6581 次
发布时间:2019-06-24

本文共 3439 字,大约阅读时间需要 11 分钟。

背景

虽然官方已有一个vagrant开发环境可用于mac,但是有 几个问题:

  1. guest os是fedora,我不熟悉也不喜欢

  2. 使用了并不是必须的salt来装k8s,没有必要

  3. 国内使用的话需要配置翻墙代理,我本人用的不是vpn而是proxy,比较麻烦些

  4. 部分信息稍老,且更新比较慢,而k8s的开发迭代速度很快

因此,我准备按照下述方法构建mac下开发环境:

  1. 使用vagrant+virtualbox用于cluster物理环境管理,即:负责拉起控制节点和K8S集群节点,挂载外部资源文件到VM内,并配置公共网络便于访问各节点和使用代理。其实就是相当于把vagrant当单机版IaaS使用。

  2. 使用官方ubuntu bare-metal cluster的安装方式,完成K8S集群软件安装

部署方式

为了节省资源及简化介绍,下文中只用两台VM,功能分别是:

  • k8s-ctl:作为控制节点,完成待部署的k8s版本准备、kubectl工具安装等,远程连接到k8s master

  • k8s-master:k8s集群master节点,是个standalone的模式,即:master和node都装在一台VM上

注:视情况后继可以增加多个k8s-node节点,参考下文配置流程即可。

部署过程

Vagrant

假定环境已安装好Vagrant(1.6.2以上)和Virtualbox(4.3),然后需要做三件事:

  1. 准备好box文件,可以到vagrant官方仓库下载:。我这里使用的是:

    vagrant box add ubuntu-14.04-amd64 https://github.com/jose-lpa/packer-ubuntu_14.04/releases/download/v2.0/ubuntu-14.04.box
  2. 创建一个目录(本文假定路径为~/k8s/deploy/),也即vagrantfile所在目录

    mkdir -p ~/k8s/deploycd ~/k8s/deploy
  3. 编写Vagrantfile文件:在deploy目录新建一个文件Vagrantfile,写入下述内容:

    Vagrant.configure(2) do |config| config.vm.define "k8s-ctl" do |c| c.vm.box = "ubuntu-14.04-amd64" c.vm.network "public_network" end config.vm.define "k8s-master" do |c| c.vm.box = "ubuntu-14.04-amd64" c.vm.network "public_network" end end

然后就可以通过vagrant up启动两台VM,然后可以ssh进入k8s-ctl:

vagrant upvagrant ssh k8s-ctl

安装k8s

这部分主要参考官方ubuntu安装,但基于使用场景不同做了一些改动。

主要如下步骤:

  1. 获取可部署的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://
    :
    export https_proxy=https://
    :
    cd /vagrant/kubernetes/cluster/ubuntu
    修改./build.sh,在文件头添加:
    FLANNEL_VERSION=0.5.3ETCD_VERSION=2.2.0KUBE_VERSION=1.0.6
    然后执行 `./build.sh`,正常结束后,当前路径下会多出一个`binaries/`目录,保存的是k8s多个二进制执行文件。
  2. 修改部署配置

    config-default.sh文件头部添加如下内容:
    nodes="vagrant@192.168.0.108"role="ai"NUM_MINIONS=1
    注:这里`nodes`按照自己环境的情况修改
  3. 开始部署

    export KUBERNETES_PROVIDER=ubuntucd /vagrant/kubernetes/cluster/./kube-up.sh
    注1:如果提示需要sshkey,则`ssh-keygen && ssh-add`注2:如果validate不成功,可能是因为使用的box镜像缺少一些需要的软件,ssh进入k8s-master VM进行安装,如docker、pgrep、bridge-utils、apt-transport-https。 注3:部署过程中出错,可以使用`./kube-down.sh`进行回退注4:部署过程如果出现网络错误,注意排查:每个node上/etc/hosts都已经配置了host-name,以及取消了proxy设置: unset http_proxy, https_proxy
  4. 验证部署结果

    通过kubectl命令可以check集群状态,以及访问k8s master的api-server
    vagrant@vagrant:/vagrant/kubernetes/cluster$ ./kubectl.sh get nodesNAME LABELS STATUS192.168.0.108 kubernetes.io/hostname=192.168.0.108 Readyvagrant@vagrant:/vagrant/kubernetes/cluster$ curl 192.168.0.108:8080/api{ "versions": [ "v1" ]}

其他

  • 可以把下述内容添加到~/.bashrc便于k8s操作:

    export KUBERNETES_PROVIDER=ubuntuexport PATH=$PATH:/vagrant/kubernetes/cluster/ubuntu/binariesalias kc="kubectl"
  • 可以在集群上安装k8s的addons,比如DNS、KubeUI、KubeDash,可以通过下述命令部署自带的DNS

    cd cluster/ubuntu./deployAddons.sh
  • 国内如果没用VPN,需要在k8s-master(如果集群,则在所有节点)上配置Docker代理,否则无法pull镜像,Ubuntu下:

    sudo echo "export http_proxy=\"http://
    :
    \"" >> /etc/default/dockersudo echo "export https_proxy=\"https://
    :
    \"" >> /etc/default/dockersudo service docker restart
  • SSH免账号登录的方法:kube-up过程需要多次ssh登录到各个nodes执行操作,以及scp发送文件,可以配置密钥对进行免账号登录:

    # 在Master节点生成秘钥文件ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa# 将秘钥文件拷贝到所有节点ssh-copy-id -i ~/.ssh/id_dsa.pub vagrant@
本文转自中文社区-

转载地址:http://axino.baihongyu.com/

你可能感兴趣的文章
java调用jacob组件实现word转pdf,HTML等出现的问题
查看>>
django 在python 3中提示 无法找到 MySQLDB
查看>>
相关系数
查看>>
pl/sql development 查询的数据复制到excel
查看>>
自定义指令的参数
查看>>
python实现进度条
查看>>
MySQL之事件学习整理
查看>>
Android 一个应用启动另一个应用的说明
查看>>
阿里云CentOS7服务器利用LVM分区挂载磁盘全记录
查看>>
计蒜客一维坐标的移动
查看>>
Visual SVN的安装
查看>>
AIX日常维护
查看>>
CISCO 命令
查看>>
Excel02-快速无误输入多个零
查看>>
花椒映客感觉要开打了,又是因为抄袭的事儿
查看>>
SQL Server 2012笔记分享-15:连接到Windows Azure SQL
查看>>
Javascript语法易出错方面总结
查看>>
Ossim4系统故障处理
查看>>
如何通过预加载器提升网页加载速度
查看>>
抬杠APP获Donews“年度最佳运营创意”大奖,跨界营销引瞩目
查看>>