/vagrant-k8s-cn

Vagrant+Ansible Playbook一键安装多节点k8s集群,随时伸缩node节点数量,销毁(目前k8s版本1.18.6)

Primary LanguageShellApache License 2.0Apache-2.0

vagrant-k8s-cn

特性

  • 使用Vagrantfile定义的虚拟机基础配置和provision脚本,一键启动一个多节点的Kubernetes

    • vagrant up一键启动
      • Kube Config文件会复制相对路径kubernetes-setup/kube-config目录下,可以自行复制或合并到$HOME/.kube/config,或者在执行kubectl命令时用--kube-config .kube\config指定该配置文件操作k8s集群
    • 可以通过vagrant ssh {机器名}随时登陆masternode节点
    • 可以通过vagrant destroy一键销毁
  • 使用ansible playbook定义了所有provision脚本操作

    • 随时可以更改脚本,可以使用vagrant provision {机器名} --provision-with {参数}随时重新执行provision操作,支持的参数
      • basic: 安装基础依赖
      • docker: 安装docker环境
      • kubernetes: 安装kubernetes环境
      • kubernetes-master: 执行k8s的master节点的ansible-playbook
      • kubernetes-node: 执行k8s的worker节点的ansible-playbook
    • 替换了阿里源,安装ubuntu依赖包,Docker, kubernetes等
    • Master获得JoinCommand.sh命令并复制宿主机,Node节点启动时将JoinCommand.sh复制到Node节点虚拟机,将加入K8s集群
  • 可以随时使用ansible操作所有节点(额外配置/etc/ansible/hosts即可,具体参考ansible文档)

默认provision的机器类型和功能

  • master: k8s的master节点,ip最后一位100
  • node-{n}: k8s的worker节点,可以在Vagrantfile里改变N的值,ip最后一位100开头
  • bnode-{bn}: 普通节点,可以在Vagrantfile里改变BN的值,安装docker环境,和k8s无关但在同一个网络,ip最后一位10开头

当前版本

  • 操作系统镜像:ubuntu-18.04
  • K8S版本:v1.18.6

本地环境依赖:

  1. git
  2. Virtualbox
  3. Vagrant
  4. 主机拥有bash或者zsh环境, 以便执行ansible playbook

PS: 因为ansible不支持windows,但是windows 10的wsl(Windows subsystem for Linux)可以使用ansible,只要让wsl可以调用Windows的Vagrant即可,具体方法可以参考Vagrant官方文档,或者我的一篇博客也有相关说明: WSL无缝使用windows的Vagrant

Jenkins

获取Jenkins原始密码:

vagrant ssh jenkins -c "sudo cat /var/lib/jenkins/secrets/initialAdminPassword"