OpenSDN cluster components

This section describes the OpenSDN, formerly Tungsten Fabric (TF), services and their distribution across the Mirantis OpenStack for Kubernetes (MOSK) deployment.

The OpenSDN services run mostly as DaemonSets in separate containers for each service. The deployment and update processes are managed by the OpenSDN Operator (TFOperator). However, Kubernetes manages the probe checks and restart of broken containers.

Configuration and control services

All configuration and control services run on the OpenSDN controller nodes.

Service name

Service description

config-api

Exposes a REST-based interface for the OpenSDN API.

config-provisioner

Provisions the node for execution of configuration services.

control

Communicates with the cluster gateways using BGP and with the vRouter agents using XMPP, as well as redistributes appropriate networking information.

control-provisioner

Provisions the node for execution of configuration services.

dns

Using the named service, provides the DNS service to the VMs spawned on different compute nodes. Each vRouter node connects to two OpenSDN Kubernetes Controller containers that run the dns process.

named

The customized Berkeley Internet Name Domain (BIND) daemon of OpenSDN that manages DNS zones for the dns service.

schema

Listens to configuration changes performed by a user and generates corresponding system configuration objects. In multi-node deployments, it works in the active-backup mode.

svc-monitor

Listens to configuration changes of service-template and service-instance, as well as spawns and monitors virtual machines for the firewall, analyzer services, and so on. In multi-node deployments, it works in the active-backup mode.

webui

Consists of the webserver and jobserver services. Provides the OpenSDN web UI.

vRouter

The OpenSDN vRouter provides data forwarding to an OpenStack tenant instance. The OpenSDN vRouter is installed on all OpenStack compute nodes.

MOSK supports the kernel-based deployment of the OpenSDN vRouter.

vRouter services on the OpenStack compute nodes

Service name

Service description

vrouter-agent

Connects to the OpenSDN Kubernetes Controller container and the OpenSDN DNS system using the Extensible Messaging and Presence Protocol (XMPP). The vRouter Agent acts as a local control plane. Each OpenSDN vRouter Agent is connected to at least two OpenSDN Kubernete Controllers in an active-active redundancy mode.

The OpenSDN vRouter Agent is responsible for all networking-related functions including routing instances, routes, and others.

The OpenSDN vRouter uses different gateways for the control and data planes. For example, the Linux system gateway is located on the management network, and the OpenSDN gateway is located on the data plane network.

vrouter-provisioner

Provisions the node for the vRouter agent execution.

The following diagram illustrates the OpenSDN kernel vRouter set up by the TFOperator:

../../../_images/tf_vrouter.png

On the diagram above, the following types of networks interfaces are used:

  • eth0 - for the management (PXE) network (eth1 and eth2 are the slave interfaces of Bond0)

  • Bond0.x - for the MKE control plane network

  • Bond0.y - for the MKE data plane network

Third-party services

Service name

Service description

cassandra

On the OpenSDN control plane nodes, maintains the configuration data of the OpenSDN cluster.

cassandra-operator

The Kubernetes operator that enables the Cassandra clusters creation and management.

redis

Stores the physical router UVE storage and serves as a messaging bus for event notifications.

redis-operator

The Kubernetes operator that enables Redis clusters creation and management.

zookeeper

Holds the active-backup status for the device-manager, svc-monitor, and the schema-transformer services. This service is also used for mapping of the OpenSDN resources names to UUIDs.

zookeeper-operator

The Kubernetes operator that enables ZooKeeper clusters creation and management.

rabbitmq

Exchanges messages between API servers and original request senders.

rabbitmq-operator

The Kubernetes operator that enables RabbitMQ clusters creation and management.

Plugin services

All OpenSDN plugin services are installed on the OpenStack Controller (Rockoon) nodes.

Service name

Service description

neutron-server

The Neutron server that includes the OpenSDN plugin.

octavia-api

The Octavia API that includes the OpenSDN Octavia driver.

heat-api

The Heat API that includes the OpenSDN Heat resources and templates.

Image precaching DaemonSets

Along with the OpenSDN services, MOSK deploys and updates special image precaching DaemonSets when the kind TFOperator custom resource is created or image references in it get updated. These DaemonSets precache container images on Kubernetes nodes minimizing possible downtime when updating container images. Cloud operator can disable image precaching through the TFOperator custom resource.