Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

This document provides guidelines on how to install the Akraino IEC Release 12, including required software and hardware configurations.

...

Currently, the chosen operating system (OS) is Ubuntu 16.04 and/or 18.04.
The infrastructure orchestration of IEC is based on Kubernetes, which is a production-grade container orchestration with a rich running eco-system.
The current There are some options for Container Network Interface (CNI) solutions for IEC, e.g Calico, Contiv-vpp and Flannel. But the default container network interface (CNI) solution chosen for Kubernetes is project is Calico, which is a high performance, scalable, policy enabled and
widely and widely used container networking solution with rather easy installation and arm64 support.   

How to use this document

The following sections describe the prerequisites for planning an IEC
deployment. Once these are met, installation steps provided should be followed
in order to obtain an IEC compliant Kubernetes cluster.

...

  • the first node will have the role of Kubernetes Master;
  • all other nodes will have the role of Kubernetes Slave;
  • Calico/Flannel/Contiv will be used as container network interface (CNI);

...

Minimum Hardware Requirements

HW AspectRequirement
1 Jumpserver

A physical or virtualized machine that has direct network connectivity to the cluster nodes.

Info
For virtual deployments, CPU/RAM/disk requirements of cluster nodes should be satisfiable as virtual machine resources when using the jumpserver as a hypervisor.


CPUMinimum 1 socket (each cluster node)
RAMMinimum 2GB/server (Depending on usecase work load)
DiskMinimum 20GB (each cluster node)
NetworksMininum 1

Recommended Hardware Requirements

HW AspectRequirement
1 Jumpserver

A physical or virtualized machine that has direct network connectivity to the cluster nodes.

Info
For virtual deployments, CPU/RAM/disk requirements of cluster nodes should be satisfiable as virtual machine resources when using the jumpserver as a hypervisor.


CPU1 socket (each cluster node)
RAM16GB/server (Depending on usecase work load)
Disk100GB (each cluster node)
Networks2/3 (management and public, optionally separate PXE)

Software Prerequisites

  • Ubuntu 16.04/18.04 is installed on each node;
  • SSH server running on each node, allowing password-based logins;
  • a user (by default named iec, but can be customized via config later) is present on each node;
  • iec user has passwordless sudo rights;
  • iec user is allowed password-based SSH login;

...

The jump host (jumpserver) operating system should be preprovisionedpre-provisioned. No special software requirements apply apart from package prerequisites:

...

Code Block
languagebash
jenkins@jumpserver:~$ git clone https://gerrit.akraino.org/r/iec.git
jenkins@jumpserver:~$ cd iec/src/foundation/scripts
jenkins@jumpserver:~/iec/src/foundation/scripts$ vim config.sh
#!/bin/bash
# shellcheck disable=SC2034

# Host user which can log into master and each worker nodes
HOST_USER=${HOST_USER:-iec}

REPO_URL="https://gerrit.akraino.org/r/iec"
#log file
LOG_FILE="kubeadm.log"


# Master node IP address
K8S_MASTER_IP="10.169.36.152"

# HOST_USER's password on Master node
K8S_MASTERPW="123456"

######################################################
#
#  K8S_WORKER_GROUP is an array which consists of 2
#  parts. One is k8s worker ip address. The other is
#  the user password.
#
######################################################
K8S_WORKER_GROUP=(
"10.169.40.106,123456"
)

# K8s parameter
CLUSTER_IP=172.16.1.136 # Align with the value in our K8s setup script
POD_NETWORK_CIDR=192.168.0.0/16
#IEC support three kinds network solution for Kubernetes: calico,flannel,contivpp
CNI_TYPE=calico
#kubernetes-cni version 0.7.5/ 0.6.0
CNI_VERSION=0.6.0
#kubernetes version: 1.15.2/ 1.13.0
KUBE_VERSION=1.13.0

# DEV_NAME is an associative array, list network interface device names used by contivpp,
# Use IP address of K8S_WORKER_GROUP as key, for example
#  DEV_NAME=(
#  [10.169.40.106]="enp137s0f0"
#  )
declare -A DEV_NAME
DEV_NAME=()

Running

Simply start the installation script with default parameters in the same directory:

Code Block
languagebash
jenkins@jumpserver:~/iec/src/foundation/scripts$ ./startup.sh

If you want to deploy K8s with other options, please refer to following commands:

Code Block
languagebash
jenkins@jumpserver:~/iec/src/foundation/scripts$ ./startup.sh -C flannel -k 1.15.2 -c 0.7.5 #Deploy 1.15.2 K8s with Flannel CNI
jenkins@jumpserver:~/iec/src/foundation/scripts$ ./startup.sh -C contivpp -k 1.15.2 -c 0.7.5 # Deploy 1.15.2 K8s with Contiv-vpp CNI

If you want to deploy the K8s with Contiv-vpp, you must specify 1 NIC which will be used in Contiv-vpp. 

Virtual Deployment Guide

Standard Deployment Overview

...

IEC installation automatically performs one simple test of the Kubernetes cluster installation by spawning an nginx container and fetching a sample file via HTTP.`Akraino Blueprint Validation`_ integration will later offer a complete e2e (end to end) validation of the Kubernetes installation by running the complete e2e test suite of `Sonobuoy`_ diagnostics suite. Meanwhile, `Sonobuoy`_ can be used manually by following the instructions in its README file.

OpenStack Verification

N/A

...