Milky is base on Openshift SDN, it is aim to provide pod network for k8s.
OpenShift SDN provides three SDN plug-ins for configuring the pod network:
- redhat/openshift-ovs-subnet
- redhat/openshift-ovs-multitenant
- redhat/openshift-ovs-networkpolicy
- k8s 1.7+
- openvswitch 2.7+
- cni
It is working with kubeadm.
# Add openshift custom resources
kubectl apply -f https://raw.githubusercontent.com/arikachen/milky/master/scripts/deploy/openshift-sdn-crd.yaml
#Add RABC
kubectl apply -f https://raw.githubusercontent.com/arikachen/milky/master/scripts/deploy/rabc.yaml
#Create pods
kubectl apply -f https://raw.githubusercontent.com/arikachen/milky/master/scripts/deploy/milky.yaml
kubectl annotate netnamespace kube-system pod.network.openshift.io/multitenant.change-network="global"
When using redhat/openshift-ovs-multitenant plugin, you can manage the separate pod overlay networks.
To join two tenant networks, they can connect with each other.
kubectl create namespace net1
kubectl create namespace net2
kubectl annotate netnamespace net1 pod.network.openshift.io/multitenant.change-network="join:net2"
kubectl annotate netnamespace net1 pod.network.openshift.io/multitenant.change-network="isolate"
The tenant can connect to all other tenant's network.
kubectl annotate netnamespace net1 pod.network.openshift.io/multitenant.change-network="global"
Specify the data traffic speed using kubernetes.io/ingress-bandwidth and kubernetes.io/egress-bandwidth annotations when creating pod.
apiVersion: v1
kind: Pod
metadata:
name: nginx
annotations:
kubernetes.io/egress-bandwidth: 10M
kubernetes.io/ingress-bandwidth: 10M
spec:
containers:
- name: nginx
image: nginx