https://github.com/ITRI-ICL-Peregrine/x-k8s
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.8.0 as its deploy tool.
For the detail deploy instruction, check the kubespray's readme.
Package | version |
---|---|
Kubernetes | v1.12.3 |
Docker | v18.06.1-ce |
CMK | v1.3.1 |
NFD | v0.3.0 |
Multus | v3.2 |
Flannel | v0.10.0 |
Flannel-CNI | v0.3.0 |
SRIOV-CNI | v1.0.0 |
SRIOV-Device Plugin | v2.0 |
- Python3
- pip3
Package | version |
---|---|
Supported Os | Ubuntu 18.04 LTS Server |
- Disable and delete swap on all of your nodes.
- 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 uselshw -class network -businfo
to check the bus address of root device.
For example, your config.json should look like...
{
"resourceList":
[
{
"resourceName": "sriov_net_A",
"rootDevices": ["02:00.0", "02:00.2"],
"sriovMode": true,
"deviceType": "netdevice"
},
{
"resourceName": "sriov_net_B",
"rootDevices": ["02:00.1", "02:00.3"],
"sriovMode": true,
"deviceType": "vfio"
}
]
}
Go check SRIOV manual for more information.
- Enable root account and allow root remote login for each node.
- Set password free login for root of deploy node on each node
# at root of deploy node
ssh-copy-id <node1_ip>
On Deploy Node
-
Install requirement.
cd x-k8s sudo pip3 install -r requirements.txt
-
Edit hosts.ini in
/x-k8s/kubespray/inventory/mycluster/hosts.ini
-
Edit /x-k8s/kubespray/extraVars.yml
## Helm deployment
helm_enabled: true
## Multus deployment
kube_network_plugin: flannel
kube_network_plugin_multus: true
## SRIOV Support
## Only set to true when you know what you are doing.
sriov_enabled : false
## 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"
-
Deploy
su - ./x-k8s install
X-K8S Installer
Usage:
./x-k8s install [--i=<hosts>]
./x-k8s reset [--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.ini
Install x-k8s using custom inventory.
./x-k8s reset Reset host environment listed in inventory.
./x-k8s reset --i kubespray/inventory/custom/hosts.ini
Reset host environment 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