Coder Social home page Coder Social logo

kubeadm-vagrant's Introduction

Setup Kubernetes Cluster with Kubeadm and Vagrant

Introduction

With reference to steps listed at Using kubeadm to Create a Cluster for setting up the Kubernetes cluster with kubeadm. I have been working on an automation to setup the cluster. The result of it is kubeadm-vagrant, a github project with simple steps to setup your kubernetes cluster with more control on vagrant based virtual machines.

Installation

  • Download and install Vagrant specific to your OS

  • Install few Vagrant plugins required for setting it up.

vagrant plugin install vagrant-hostmanager
vagrant plugin install vagrant-hosts
vagrant plugin install vagrant-env

git clone https://github.com/cloudnative-tech/kubeadm-vagrant

  • For setting up up the Nodes configure the cluster parameters in .env file. Refer section below for details of configuration options.

vi .env

  • Create a directory to store artifacts created during cluster creation.

mkdir .data

  • Spin up the cluster

vagrant up

  • This will spin up new Kubernetes cluster. You can check the status of cluster with following command,
    • For Master Node
      vagrant ssh k8s-master
      sudo su
      kubectl get pods --all-namespaces
      
    • For Worker Node
      vagrant ssh k8s-node-<NodeNumber>
      

Cluster Configuration Options

  1. Generic Properties
  • BOX_IMAGE is currently default with "generic/ubuntu1804" box which is custom box created which can be used for setting up the cluster with basic dependencies for kubernetes node.
  • PROVIDER is currently default with "virtualbox" It may change in future with more providers.
  • KUBE_VERSION is the version of Kubernetes cluster you want to set up with. The main branch will always have the latest available versions. You can find older versions in the releases.
  • NW_PLUGIN is the network plugin you wish to enable with the Kubernetes cluster. Currently it supports calico an weave
  • A secure dashboard is enabled by default. To enable INSECURE_DASHBOARD can be used. Set its value to yes
    • You can login to dashboard using https://<MASTER_IP>:31443 and the .kube/config file from your vagrant directory.
  • A Load Balancer IP Pool can be provided with LB_IPPOOL. The format is the range of IP addresses in your host-only network.
  • The sandbox by default will install HELM v 3.x. To disable it, update INSTALL_HELM to no
  • The sandbox by default will enable operator-sdk and OLM. To disable it, update ENABLE_OLM to no
  1. Master Node Properties
  • Set SETUP_MASTER to true if you want to setup the node. This is true by default for spawning a new cluster. You can skip it for adding new worker nodes.
  • Set MASTER_IP to a preferred value from the subnet of your virtualbox host-only network.
  • Specify custom POD_NW_CIDR of your choice for particular NW_PLUGIN
  • Specify Master node hostname with MASTER_HOSTNAME
  • Provide your recommended values for MASTER_CPU AND MASTER_MEMORY. The minimum values for both are 2 and 2048 respectively.
  1. Worker Noder Properties
  • Set SETUP_NODES to true/false depending on whether you are setting up worker nodes in the cluster.
  • Specify NODE_COUNT as the count of worker nodes in the cluster
  • Specify NODE_IP_NW as the network IP which can be used for assigning dynamic IPs for cluster nodes from the same network as Master
  • Specify Worker node hostname with NODE_HOSTNAME
  • Provide your recommended values for NODE_CPU AND NODE_MEMORY. The minimum values for both are 1 and 1024 respectively.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.