node

package
v4.1.0+incompatible Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 1, 2019 License: Apache-2.0 Imports: 64 Imported by: 0

Documentation

Overview

Package node contains the OpenShift SDN networking code that runs on the nodes

Index

Constants

View Source
const (
	SDNNamespace = "openshift"
	SDNSubsystem = "sdn"

	OVSFlowsKey                 = "ovs_flows"
	ARPCacheAvailableEntriesKey = "arp_cache_entries"
	PodIPsKey                   = "pod_ips"
	PodOperationsErrorsKey      = "pod_operations_errors"
	PodOperationsLatencyKey     = "pod_operations_latency"
	VnidNotFoundErrorsKey       = "vnid_not_found_errors"

	// Pod Operation types
	PodOperationSetup    = "setup"
	PodOperationTeardown = "teardown"
)
View Source
const (
	Br0    = "br0"
	Tun0   = "tun0"
	Vxlan0 = "vxlan0"
)

Variables

View Source
var (
	OVSFlows = prometheus.NewGauge(
		prometheus.GaugeOpts{
			Namespace: SDNNamespace,
			Subsystem: SDNSubsystem,
			Name:      OVSFlowsKey,
			Help:      "Number of Open vSwitch flows",
		},
	)

	ARPCacheAvailableEntries = prometheus.NewGauge(
		prometheus.GaugeOpts{
			Namespace: SDNNamespace,
			Subsystem: SDNSubsystem,
			Name:      ARPCacheAvailableEntriesKey,
			Help:      "Number of available entries in the ARP cache",
		},
	)

	PodIPs = prometheus.NewGauge(
		prometheus.GaugeOpts{
			Namespace: SDNNamespace,
			Subsystem: SDNSubsystem,
			Name:      PodIPsKey,
			Help:      "Number of allocated pod IPs",
		},
	)

	PodOperationsErrors = prometheus.NewCounterVec(
		prometheus.CounterOpts{
			Namespace: SDNNamespace,
			Subsystem: SDNSubsystem,
			Name:      PodOperationsErrorsKey,
			Help:      "Cumulative number of SDN operation errors by operation type",
		},
		[]string{"operation_type"},
	)

	PodOperationsLatency = prometheus.NewSummaryVec(
		prometheus.SummaryOpts{
			Namespace: SDNNamespace,
			Subsystem: SDNSubsystem,
			Name:      PodOperationsLatencyKey,
			Help:      "Latency in microseconds of SDN operations by operation type",
		},
		[]string{"operation_type"},
	)

	VnidNotFoundErrors = prometheus.NewCounter(
		prometheus.CounterOpts{
			Namespace: SDNNamespace,
			Subsystem: SDNSubsystem,
			Name:      VnidNotFoundErrorsKey,
			Help:      "Number of VNID-not-found errors",
		},
	)
)
View Source
var (
	ErrorNetworkInterfaceNotFound = fmt.Errorf("could not find network interface")
)

Functions

func GetLinkDetails

func GetLinkDetails(ip string) (netlink.Link, *net.IPNet, error)

func NewMultiTenantPlugin

func NewMultiTenantPlugin() osdnPolicy

func NewNetworkPolicyPlugin

func NewNetworkPolicyPlugin() osdnPolicy

func NewOVSController

func NewOVSController(ovsif ovs.Interface, pluginId int, useConnTrack bool, localIP string) *ovsController

func NewSingleTenantPlugin

func NewSingleTenantPlugin() osdnPolicy

func RegisterMetrics

func RegisterMetrics()

Register all node metrics.

Types

type Chain

type Chain struct {
	// contains filtered or unexported fields
}

type NodeIPTables

type NodeIPTables struct {
	// contains filtered or unexported fields
}

func (*NodeIPTables) AddEgressIPRules

func (n *NodeIPTables) AddEgressIPRules(egressIP, mark string) error

func (*NodeIPTables) DeleteEgressIPRules

func (n *NodeIPTables) DeleteEgressIPRules(egressIP, mark string) error

func (*NodeIPTables) Setup

func (n *NodeIPTables) Setup() error

type OsdnNode

type OsdnNode struct {
	// contains filtered or unexported fields
}

func New

func New(c *OsdnNodeConfig) (*OsdnNode, error)

Called by higher layers to create the plugin SDN node instance

func (*OsdnNode) AddServiceRules

func (plugin *OsdnNode) AddServiceRules(service *corev1.Service, netID uint32)

func (*OsdnNode) DeleteServiceRules

func (plugin *OsdnNode) DeleteServiceRules(service *corev1.Service)

func (*OsdnNode) GetLocalPods

func (node *OsdnNode) GetLocalPods(namespace string) ([]corev1.Pod, error)

func (*OsdnNode) SetupEgressNetworkPolicy

func (plugin *OsdnNode) SetupEgressNetworkPolicy() error

func (*OsdnNode) SetupSDN

func (plugin *OsdnNode) SetupSDN() (bool, map[string]podNetworkInfo, error)

func (*OsdnNode) Start

func (node *OsdnNode) Start() error

func (*OsdnNode) UpdateEgressNetworkPolicyVNID

func (plugin *OsdnNode) UpdateEgressNetworkPolicyVNID(namespace string, oldVnid, newVnid uint32)

func (*OsdnNode) UpdatePod

func (node *OsdnNode) UpdatePod(pod corev1.Pod) error

FIXME: this should eventually go into kubelet via a CNI UPDATE/CHANGE action See https://github.com/containernetworking/cni/issues/89

type OsdnNodeConfig

type OsdnNodeConfig struct {
	PluginName      string
	Hostname        string
	SelfIP          string
	RuntimeEndpoint string
	MTU             uint32
	EnableHostports bool
	CNIBinDir       string
	CNIConfDir      string

	NetworkClient networkclient.Interface
	KClient       kubernetes.Interface
	Recorder      record.EventRecorder

	KubeInformers    informers.SharedInformerFactory
	NetworkInformers networkinformers.SharedInformerFactory

	IPTablesSyncPeriod time.Duration
	ProxyMode          kubeproxyconfig.ProxyMode
	MasqueradeBit      *int32
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL