Closed taylor closed 4 years ago
Prereqs:
k8s_bridged_network-v0.2
(git checkout k8s_bridged_network-v0.2
)Multus multi-node bridged network user plane is successfully deployed
export KUBECONFIG=<path>/<to>/kubeconfig
kubectl apply -f gogtp-bridges.yml
helm install ./gogtp/
kubectl logs gogtp-enb
[eNB] 2020/01/31 13:23:46 Established S1-MME connection with 172.21.1.12:36412
[eNB] 2020/01/31 13:23:46 Started serving S1-U on 172.21.0.11:2152
[eNB] 2020/01/31 13:23:46 Successfully established tunnel for 001010000000001
Test HTTP GET to the end-point server
kubectl exec -it gogtp-ue /bin/bash
wget http://10.0.1.201
Expected results: You should see a successful HTTP request (200 OK), followed by index.html being saved.
Test ICMP/ping to the end-point server
kubectl exec -it gogtp-ue /bin/bash
ping -c 5 10.0.1.201
Expected results:
5 packets transmitted, 5 received, 0% packet loss
Validate that the user equipment and eNB are on the same node
kubectl describe pods <enb-pod> | grep Node
kubectl describe pods <ue-pod> | grep Node
Validate that the user equipment and eNB are not running on the same node as the EPC user plane components
kubectl describe pods <mme-pod> | grep Node
kubectl describe pods <sgw-pod> | grep Node
kubectl describe pods <pgw-pod> | grep Node
Validate that the HTTP end point server is not running on the same node as the EPC user plane components
kubectl describe pods <http-pod> | grep Node
Validate that the HTTP end point server is not running on the same node as the user equipment and eNB
kubectl describe pods <http-pod> | grep Node
Tasks:
[x] Update Helm charts to deploy EPC components to separate nodes. See: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector
helm install -e multihost=true
[x] Add a new node group to https://github.com/crosscloudci/infra-provisioning/blob/node_groups/terraform/packet.tf - So that we can support different worker node machine types in the same cluster.
[x] Add a host interface to the Multus bridges. - So Pods will have connectivity over multiple hosts.
The initial implementation for this has been added to the go-gtp branch (available in PR).
The Helm charts are in a separate directory, examples/use_case/gogtp-k8s/k8s_multi_node
, so deployment is done using helm install ./gogtp/
instead of helm install -e multihost=true
. This was a deliberate choice to avoid impacting existing code prior to having the new implementation added.
Also, the host environment must be configured prior to running the multi-node example. I have created an ansible playbook that works similar to how we have been configuring for use with vSwitch (VPP) previously. I have not yet updated the Makefile to simplify this step, but it should be easy to expand the existing vswitch case to also include the multinode config (e.g. using ||
(OR) and pointing towards the correct playbook). Similar to the Helm charts, I decided to push this initial version to make sure it is available in Github prior to integrating it with existing code.
Makefile has been update in go-gtp branch, and documentation has been updated to reference this when deploying the use-case
Example use-case for this is available in examples/use_case/gogtp-k8s/k8s_multi_node
. Closing this ticket
Multi-node bridged network GoEPC userplane use case using Multus
This is a POC step in reaching the goal of a multi-node segmented and routed user plane
Tasks:
helm install -e multihost=true
Testing: