Giter Club home page Giter Club logo

x-k8s's Introduction

X-K8S - Deploy a Kubernetes Cluster for 5G NFV Cloud

X-K8S leverages plugins for the better NFV performance in 5G use senario, like CMK (Cpu Manager for Kubernetes),
NFD (Node Feature Discovery), intel's userspace-cni-network-plugin, etc.
And based on the kubespray v2.12.1 as its deploy tool.

For the detail deploy instruction, check the kubespray's readme.

Spec

Package version
Kubernetes v1.16.7
Docker v18.06.1-ce
CMK v1.4
NFD v0.4.0
Multus v3.4
Flannel v0.11.0
Flannel-CNI v0.3.0
SRIOV-CNI v2.2
SRIOV-Device Plugin v3.1
Prometheus Operator v0.37.0
Grafana v6.6.2
Elastic Search v6.3.2
Kibana v6.3.2
fluentd v2.2.0

Deploy Node Requirement

  1. Python3
  2. pip3

Master/Minion Node Requirement

Package version
Supported OS Ubuntu 18.04 LTS Server

Usage

1. Prepare your Cluster Node

  1. Disable and delete swap on all of your nodes.

  2. If you want to enable sriov support on your kubernetes cluster.
    a. Create VF on all of your nodes.
    b. Create /etc/pcidp/config.json on each node base on your SRIOV NIC bus address.
    You can use lshw -class network -businfo to check the bus address of root device.
    For example, your config.json should look like...

    {
      "resourceList":
      [
        {
          "resourceName": "sriov_pool_a",
          "selectors": {
            "vendors": ["8086"],
            "pfNames" : ["enp4s0f0"]
          }
        },
        {
          "resourceName": "sriov_pool_b",
          "selectors": {
            "vendors": ["8086"],
            "pfNames" : ["enp129s0f0"]
          }
        }
      ]
    }

    Go check SRIOV manual for more information.

  3. Enable root account and allow root remote login for each node.

  4. Set password free login for root of deploy node on each node.

# at root of deploy node
ssh-copy-id <node1_ip>

2. Install x-k8s

On Deploy Node

  1. Install requirement.

    cd x-k8s
    sudo pip3 install -r requirements.txt
    
  2. Edit hosts.ini in /x-k8s/kubespray/inventory/mycluster/hosts.ini

  3. Edit /x-k8s/kubespray/extraVars.yml to turn on the feature you want.

    ## Helm deployment
    helm_enabled: true
    
    ## Multus deployment
    kube_network_plugin: flannel
    kube_network_plugin_multus: true
    
    ## SRIOV Support
    sriov_enabled : true
    
    ## Monitor install Prometheus and Grafana
    monitor_enabled: false
    grafana_password: "admin"
    
    ## Enable basic auth
    # kube_basic_auth: true
    ## User defined api password
    # kube_api_pwd: xk8suser
    
    ## Change default NodePort range
    # kube_apiserver_node_port_range: "9000-32767"
    
    ## Install Elasticsearch, Fluentd, Kibana
    install_efk : false
  4. Deploy

    su -
    ./x-k8s install
    

CLI

X-K8S Installer
Usage:  
    ./x-k8s install [--i=<hosts>]
    ./x-k8s reset [--i=<hosts>]
    ./x-k8s purge [--i=<hosts>]
    ./x-k8s list inventory [--vars]
    ./x-k8s ( -h | --help)
    ./x-k8s ( -v | --version)

Examples:
    ./x-k8s install                     Install x-k8s.
    ./x-k8s install --i kubespray/inventory/custom/hosts.yaml
                                        Install x-k8s using custom inventory.
    ./x-k8s reset                       Reset host environment listed in inventory.
    ./x-k8s reset --i kubespray/inventory/custom/hosts.yaml
                                        Reset host environment using custom inventory.
    ./x-k8s purge                       Purge x-k8s cluseter.
    ./x-k8s purge --i kubespray/inventory/custom/hosts.yaml
                                        Purge cluster using custom inventory.
    ./x-k8s list inventory              List hosts inventory.
    ./x-k8s list inventory --vars       List hosts inventory with all variables.
    ./x-k8s -h  
    ./x-k8s --help
    ./x-k8s -v
    ./x-k8s --version

Options:
    -h, --help                          Show this message.
    -v, --version                       Show version.
    --vars                              List hosts inventor with all variables.
    --i=<hosts>                         Path to custom inventory hosts.ini

x-k8s's People

Contributors

mjace avatar orzohmygodorz avatar itri-icl-peregrine avatar

Watchers

James Cloos avatar

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.