Documentation ¶
Index ¶
- Variables
- type Client
- func (c *Client) AddRoutes(podCIDR *net.IPNet, nodeName string, nodeIP, nodeGwIP net.IP) error
- func (c *Client) AddSNATRule(snatIP net.IP, mark uint32) error
- func (c *Client) DeleteRoutes(podCIDR *net.IPNet) error
- func (c *Client) DeleteSNATRule(mark uint32) error
- func (c *Client) Initialize(nodeConfig *config.NodeConfig, done func()) error
- func (c *Client) MigrateRoutesToGw(linkName string) error
- func (c *Client) Reconcile(podCIDRs []string) error
- func (c *Client) Run(stopCh <-chan struct{})
- func (c *Client) UnMigrateRoutesFromGw(route *net.IPNet, linkName string) error
- type Interface
Constants ¶
This section is empty.
Variables ¶
var ( // IPTablesSyncInterval is exported so that sync interval can be configured for running integration test with // smaller values. It is meant to be used internally by Run. IPTablesSyncInterval = 60 * time.Second )
Functions ¶
This section is empty.
Types ¶
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client takes care of routing container packets in host network, coordinating ip route, ip rule, iptables and ipset.
func NewClient ¶
func NewClient(serviceCIDR *net.IPNet, networkConfig *config.NetworkConfig, noSNAT bool) (*Client, error)
NewClient returns a route client. TODO: remove param serviceCIDR after kube-proxy is replaced by Antrea Proxy. This param is not used in this file; leaving it here is to be compatible with the implementation on Windows.
func (*Client) AddRoutes ¶
AddRoutes adds routes to a new podCIDR. It overrides the routes if they already exist.
func (*Client) DeleteRoutes ¶
DeleteRoutes deletes routes to a PodCIDR. It does nothing if the routes doesn't exist.
func (*Client) DeleteSNATRule ¶
func (*Client) Initialize ¶
func (c *Client) Initialize(nodeConfig *config.NodeConfig, done func()) error
Initialize initializes all infrastructures required to route container packets in host network. It is idempotent and can be safely called on every startup.
func (*Client) MigrateRoutesToGw ¶
MigrateRoutesToGw moves routes (including assigned IP addresses if any) from link linkName to host gateway.
func (*Client) Reconcile ¶
Reconcile removes orphaned podCIDRs from ipset and removes routes to orphaned podCIDRs based on the desired podCIDRs.
type Interface ¶
type Interface interface { // Initialize should initialize all infrastructures required to route container packets in host network. // It should be idempotent and can be safely called on every startup. Initialize(nodeConfig *config.NodeConfig, done func()) error // Reconcile should remove orphaned routes and related configuration based on the desired podCIDRs. If IPv6 is enabled // in the cluster, Reconcile should also remove the orphaned IPv6 neighbors. Reconcile(podCIDRs []string) error // AddRoutes should add routes to the provided podCIDR. // It should override the routes if they already exist, without error. AddRoutes(podCIDR *net.IPNet, peerNodeName string, peerNodeIP, peerGwIP net.IP) error // DeleteRoutes should delete routes to the provided podCIDR. // It should do nothing if the routes don't exist, without error. DeleteRoutes(podCIDR *net.IPNet) error // MigrateRoutesToGw should move routes from device linkname to local gateway. MigrateRoutesToGw(linkName string) error // UnMigrateRoutesFromGw should move routes back from local gateway to original device linkName // if linkName is nil, it should remove the routes. UnMigrateRoutesFromGw(route *net.IPNet, linkName string) error // AddSNATRule should add rule to SNAT outgoing traffic with the mark, using the provided SNAT IP. AddSNATRule(snatIP net.IP, mark uint32) error // DeleteSNATRule should delete rule to SNAT outgoing traffic with the mark. DeleteSNATRule(mark uint32) error // Run starts the sync loop. Run(stopCh <-chan struct{}) }
Interface is the interface for routing container packets in host network.