From c7ef591e30e82a5cb3a61d47f6cde535335be988 Mon Sep 17 00:00:00 2001 From: Kuralamudhan Ramakrishnan Date: Wed, 22 Feb 2017 15:44:44 +0000 Subject: [PATCH] Update README.md --- README.md | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 75 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index e112254bd..01fd7f702 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,6 @@ +![multus-cni Logo](https://github.com/Intel-Corp/multus-cni/blob/dev/doc/doc/images/Multus.png) # MULTUS CNI plugin -Please read [CNI](https://github.com/containernetworking/cni) for more information on container networking. - - *Multus* is the latin word for “Multi” - As the name suggests, it acts as the Multi plugin in the Kubernetes and provides the Multi interface support in a pod @@ -18,6 +17,7 @@ Please read [CNI](https://github.com/containernetworking/cni) for more informati - The "masterplugin" is the only net conf option of multus cni, it identifies the primary network. The default route will point to the primary network +Please read [CNI](https://github.com/containernetworking/cni) for more information on container networking. ## Build @@ -28,6 +28,10 @@ Go 1.5 users will need to set `GO15VENDOREXPERIMENT=1` to get vendored dependenc ``` #./build ``` +## Work flow +

+ +

## Network configuration reference * `name` (string, required): the name of the network @@ -42,7 +46,7 @@ Given the following network configuration: ``` # tee /etc/cni/net.d/multus-cni.conf <<-'EOF' { - "name": "minion1-multus-demo-network", + "name": "multus-demo-network", "type": "multus", "delegates": [ { @@ -86,4 +90,71 @@ EOF ``` ## Testing the Multus CNI with docker -Make sure that the multus, [sriov](https://github.com/Intel-Corp/sriov-cni) and [flannel](https://github.com/containernetworking/cni/blob/master/Documentation/flannel.md) binaries are in the /opt/cni/bin directories and follow the steps as mention in the [CNI](https://github.com/containernetworking/cni) +Make sure that the multus, [sriov](https://github.com/Intel-Corp/sriov-cni), [flannel](https://github.com/containernetworking/cni/blob/master/Documentation/flannel.md), and [ptp](https://github.com/containernetworking/cni/blob/master/Documentation/ptp.md) binaries are in the `/opt/cni/bin` directories and follow the steps as mention in the [CNI](https://github.com/containernetworking/cni/#running-a-docker-container-with-network-namespace-set-up-by-cni-plugins) + +## Testing the Multus CNI with Kubernetes +Refer the Kubernetes User Guide and network plugin +* [Single Node](https://kubernetes.io/docs/getting-started-guides/fedora/fedora_manual_config/) +* [Multi Node](https://kubernetes.io/docs/getting-started-guides/fedora/flannel_multi_node_cluster/) +* [Network Plugin](https://kubernetes.io/docs/admin/network-plugins/) + +Kubelet must be configured to run with the CNI `--network-plugin`, with the following configuration information. +Edit `/etc/default/kubelet` file and add `KUBELET_OPTS`: +``` +KUBELET_OPTS="... +--network-plugin-dir=/etc/cni/net.d +--network-plugin=cni +" +``` +Restart the kubelet +``` +# systemctl restart kubelet.service +``` +### Launching workloads in Kubernetes +Launch the workload using yaml file in the kubernetes master, with above configuration in the multus CNI, each pod should have multiple interfaces. +> Note: To verify whether Multus CNI plugin is working fine create a pod containing one “busybox” container and execute “ip link” command to check if interfaces management follows configuration. + +1. Create “multus-test.yaml” file containing below configuration. Created pod will consist of one “busybox” container running “top” command. +``` +apiVersion: v1 +kind: Pod +metadata: + name: multus-test +spec: # specification of the pod's contents + restartPolicy: Never + containers: + - name: test1 + image: "busybox" + command: ["top"] + stdin: true + tty: true + +``` +2. Create pod using command: +``` +# kubectl create -f multus-test.yaml +pod "multus-test" created +``` +3. Run “ip link” command inside the container: +``` +# 1: lo: mtu 65536 qdisc noqueue qlen 1 + link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 +3: eth0@if41: mtu 1500 qdisc noqueue + link/ether 26:52:6b:d8:44:2d brd ff:ff:ff:ff:ff:ff +20: net0: mtu 1500 qdisc mq qlen 1000 + link/ether f6:fb:21:4f:1d:63 brd ff:ff:ff:ff:ff:ff +21: net1: mtu 1500 qdisc mq qlen 1000 + link/ether 76:13:b1:60:00:00 brd ff:ff:ff:ff:ff:ff As seen in the above output 3 interfaces are created. +``` +Interface name | Description +------------ | ------------- +lo | loopback +eth0@if41 | Flannel network tap interface +net0 | VF assigned to the container by [SR_IOV CNI](https://github.com/Intel-Corp/sriov-cni) plugin +net1 | ptp localhost interface + +### Contacts +For any questions about Multus CNI, please reach out on github issue or contact the developer + +- Kuralamudhan Ramakrishnan +- David M O Neill