Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func RegisterDomain ¶
func RegisterDomain(d Domain)
RegisterDomain registers an NRI domain for a containerd namespace.
Types ¶
type API ¶
type API interface { // IsEnabled returns true if the NRI interface is enabled and initialized. IsEnabled() bool // Start starts the NRI interface, allowing external NRI plugins to // connect, register, and hook themselves into the lifecycle events // of pods and containers. Start() error // Stop stops the NRI interface. Stop() // RunPodSandbox relays pod creation events to NRI. RunPodSandbox(context.Context, PodSandbox) error // StopPodSandbox relays pod shutdown events to NRI. StopPodSandbox(context.Context, PodSandbox) error // RemovePodSandbox relays pod removal events to NRI. RemovePodSandbox(context.Context, PodSandbox) error // CreateContainer relays container creation requests to NRI. CreateContainer(context.Context, PodSandbox, Container) (*nri.ContainerAdjustment, error) // PostCreateContainer relays successful container creation events to NRI. PostCreateContainer(context.Context, PodSandbox, Container) error // StartContainer relays container start request notifications to NRI. StartContainer(context.Context, PodSandbox, Container) error // PostStartContainer relays successful container startup events to NRI. PostStartContainer(context.Context, PodSandbox, Container) error // UpdateContainer relays container update requests to NRI. UpdateContainer(context.Context, PodSandbox, Container, *nri.LinuxResources) (*nri.LinuxResources, error) // PostUpdateContainer relays successful container update events to NRI. PostUpdateContainer(context.Context, PodSandbox, Container) error // StopContainer relays container stop requests to NRI. StopContainer(context.Context, PodSandbox, Container) error // NotifyContainerExit handles the exit event of a container. NotifyContainerExit(context.Context, PodSandbox, Container) // StopContainer relays container removal events to NRI. RemoveContainer(context.Context, PodSandbox, Container) error }
API implements a common API for interfacing NRI from containerd. It is agnostic to any internal containerd implementation details of pods and containers. It needs corresponding Domain interfaces for each containerd namespace it needs to handle. These domains take care of the namespace- specific details of providing pod and container metadata to NRI and of applying NRI-requested adjustments to the state of containers.
type Config ¶
type Config struct { // Disable this NRI plugin and containerd NRI functionality altogether. Disable bool `toml:"disable" json:"disable"` // SocketPath is the path to the NRI socket to create for NRI plugins to connect to. SocketPath string `toml:"socket_path" json:"socketPath"` // PluginPath is the path to search for NRI plugins to launch on startup. PluginPath string `toml:"plugin_path" json:"pluginPath"` // PluginConfigPath is the path to search for plugin-specific configuration. PluginConfigPath string `toml:"plugin_config_path" json:"pluginConfigPath"` // PluginRegistrationTimeout is the timeout for plugin registration. PluginRegistrationTimeout time.Duration `toml:"plugin_registration_timeout" json:"pluginRegistrationTimeout"` // PluginRequestTimeout is the timeout for a plugin to handle a request. PluginRequestTimeout time.Duration `toml:"plugin_request_timeout" json:"pluginRequestTimeout"` // DisableConnections disables connections from externally launched plugins. DisableConnections bool `toml:"disable_connections" json:"disableConnections"` }
Config data for NRI.
func (*Config) ConfigureTimeouts ¶
func (c *Config) ConfigureTimeouts()
ConfigureTimeouts sets timeout options for NRI.
type Container ¶
type Container interface { GetDomain() string GetPodSandboxID() string GetID() string GetName() string GetState() nri.ContainerState GetLabels() map[string]string GetAnnotations() map[string]string GetArgs() []string GetEnv() []string GetMounts() []*nri.Mount GetHooks() *nri.Hooks GetLinuxContainer() LinuxContainer GetPid() uint32 }
Container interface for interacting with NRI.
type Domain ¶
type Domain interface { // GetName() returns the containerd namespace for this domain. GetName() string // ListPodSandboxes list all pods in this namespace. ListPodSandboxes() []PodSandbox // ListContainer list all containers in this namespace. ListContainers() []Container // GetPodSandbox returns the pod for the given ID. GetPodSandbox(string) (PodSandbox, bool) // GetContainer returns the container for the given ID. GetContainer(string) (Container, bool) // UpdateContainer applies an NRI container update request in the namespace. UpdateContainer(context.Context, *nri.ContainerUpdate) error // EvictContainer evicts the requested container in the namespace. EvictContainer(context.Context, *nri.ContainerEviction) error }
Domain implements the functions the generic NRI interface needs to deal with pods and containers from a particular containerd namespace.
type LinuxContainer ¶
type LinuxContainer interface { GetLinuxNamespaces() []*nri.LinuxNamespace GetLinuxDevices() []*nri.LinuxDevice GetLinuxResources() *nri.LinuxResources GetOOMScoreAdj() *int GetCgroupsPath() string }
type LinuxPodSandbox ¶
type LinuxPodSandbox interface { GetLinuxNamespaces() []*nri.LinuxNamespace GetPodLinuxOverhead() *nri.LinuxResources GetPodLinuxResources() *nri.LinuxResources GetCgroupParent() string GetCgroupsPath() string GetLinuxResources() *nri.LinuxResources }
type PodSandbox ¶
type PodSandbox interface { GetDomain() string GetID() string GetName() string GetUID() string GetNamespace() string GetLabels() map[string]string GetAnnotations() map[string]string GetRuntimeHandler() string GetLinuxPodSandbox() LinuxPodSandbox GetPid() uint32 }
PodSandbox interface for interacting with NRI.