Documentation
¶
Index ¶
- Constants
- func SetExternalDataLoader(loader ExternalDataLoader)
- type CPUModelType
- type CloudInitImageType
- type ContainerFilter
- type ContainerInfo
- type ContainerState
- type DNSConfig
- type DiskDriverName
- type ExternalDataLoader
- type FilesystemStats
- type NamespaceOption
- type PodSandboxConfig
- type PodSandboxFilter
- type PodSandboxInfo
- type PodSandboxState
- type PortMapping
- type Protocol
- type VMConfig
- type VMKeyValue
- type VMMount
- type VMStats
- type VMStatsFilter
- type VMVolumeDevice
- type VirtletAnnotations
Constants ¶
const ( // CloudInitUserDataSourceKeyName is the name of user data source key in the pod annotations. CloudInitUserDataSourceKeyName = "VirtletCloudInitUserDataSource" // SSHKeySourceKeyName is the name of ssh key source key in the pod annotations. SSHKeySourceKeyName = "VirtletSSHKeySource" // FilesFromDSKeyName is the name of data source key in the pod annotations // for the files to be injected into the rootfs. FilesFromDSKeyName = "VirtletFilesFromDataSource" )
Variables ¶
This section is empty.
Functions ¶
func SetExternalDataLoader ¶
func SetExternalDataLoader(loader ExternalDataLoader)
SetExternalDataLoader sets the ExternalDataLoader to use
Types ¶
type CPUModelType ¶
type CPUModelType string
CPUModelType specifies cpu model in libvirt domain definition
type CloudInitImageType ¶
type CloudInitImageType string
CloudInitImageType specifies the image type used for cloud-init
const ( // CloudInitImageTypeNoCloud specified nocloud cloud-init image type. CloudInitImageTypeNoCloud CloudInitImageType = "nocloud" // CloudInitImageTypeConfigDrive specified configdrive cloud-init image type. CloudInitImageTypeConfigDrive CloudInitImageType = "configdrive" // CPUModelHostModel specifies cpu model needed for nested virtualization CPUModelHostModel = "host-model" )
type ContainerFilter ¶
type ContainerFilter struct {
// ID of the container.
Id string
// State of the container.
State *ContainerState
// ID of the PodSandbox.
PodSandboxID string
// LabelSelector to select matches.
// Only api.MatchLabels is supported for now and the requirements
// are ANDed. MatchExpressions is not supported yet.
LabelSelector map[string]string
}
ContainerFilter is used to filter containers. All those fields are combined with 'AND'
type ContainerInfo ¶
type ContainerInfo struct {
// Container ID
Id string
// Container name
Name string
// Container creation timestamp
CreatedAt int64
// Container startup timestamp
StartedAt int64
// Current state of the container
State ContainerState
// Container configuration
Config VMConfig
}
ContainerInfo contains metadata information about container instance
type ContainerState ¶
type ContainerState int32
ContainerState specifies the state of a container
const ( // ContainerState_CONTAINER_CREATED means that the container is just created. ContainerState_CONTAINER_CREATED ContainerState = 0 // ContainerState_CONTAINER_CREATED means that the container is running. ContainerState_CONTAINER_RUNNING ContainerState = 1 // ContainerState_CONTAINER_CREATED means that the container has exited. ContainerState_CONTAINER_EXITED ContainerState = 2 // ContainerState_CONTAINER_CREATED means that the container state is not known. ContainerState_CONTAINER_UNKNOWN ContainerState = 3 )
type DNSConfig ¶
type DNSConfig struct {
// List of DNS servers of the cluster.
Servers []string
// List of DNS search domains of the cluster.
Searches []string
// List of DNS options. See https://linux.die.net/man/5/resolv.conf
// for all available options.
Options []string
}
DNSConfig specifies the DNS servers and search domains of a sandbox.
type DiskDriverName ¶
type DiskDriverName string
DiskDriverName specifies disk driver name supported by Virtlet.
const ( // DiskDriverVirtio specifies virtio disk driver. DiskDriverVirtio DiskDriverName = "virtio" // DiskDriverScsi specifies scsi disk driver. DiskDriverScsi DiskDriverName = "scsi" )
type ExternalDataLoader ¶
type ExternalDataLoader interface {
// LoadCloudInitData loads cloud-init userdata and ssh keys
// from the data sources specified in the pod annotations.
LoadCloudInitData(va *VirtletAnnotations, namespace string, podAnnotations map[string]string) error
// LoadFileMap loads a set of files from the data sources.
LoadFileMap(namespace, dsSpec string) (map[string][]byte, error)
}
ExternalDataLoader is used to load extra pod data from Kubernetes ConfigMaps and secrets.
func GetExternalDataLoader ¶
func GetExternalDataLoader() ExternalDataLoader
GetExternalDataLoader returns the current ExternalDataLoader
type FilesystemStats ¶
type FilesystemStats struct {
// Mountpoint denotes the filesystem mount point
Mountpoint string
// UsedBytes is the number of bytes used by images
UsedBytes uint64
// UsedInodes is the number of inodes used by images
UsedInodes uint64
}
FilesystemStats contains info about filesystem mountpoint and space/inodes used by images on it
type NamespaceOption ¶
type NamespaceOption struct {
// If set, use the host's network namespace.
HostNetwork bool
// If set, use the host's PID namespace.
HostPid bool
// If set, use the host's IPC namespace.
HostIpc bool
}
NamespaceOption provides options for Linux namespaces.
type PodSandboxConfig ¶
type PodSandboxConfig struct {
// Pod name of the sandbox.
Name string
// Pod UID of the sandbox.
Uid string
// Pod tenant of the sandbox.
Tenant string
// Pod namespace of the sandbox.
Namespace string
// Attempt number of creating the sandbox. Default: 0.
Attempt uint32
// Hostname of the sandbox.
Hostname string
// Path to the directory on the host in which container log files are
// stored.
LogDirectory string
// DNS config for the sandbox.
DnsConfig *DNSConfig
// Port mappings for the sandbox.
PortMappings []*PortMapping
// Key-value pairs that may be used to scope and select individual resources.
Labels map[string]string
// Unstructured key-value map that may be set by the kubelet to store and
// retrieve arbitrary metadata. This will include any annotations set on a
// pod through the Kubernetes API.
Annotations map[string]string
// Optional configurations specific to Linux hosts.
CgroupParent string
// CNIArgs specifies cni args of the pod
CNIArgs string
}
PodSandboxConfig holds all the required and optional fields for creating a sandbox.
type PodSandboxFilter ¶
type PodSandboxFilter struct {
// ID of the sandbox.
Id string
// State of the sandbox.
State *PodSandboxState
// LabelSelector to select matches.
// Only api.MatchLabels is supported for now and the requirements
// are ANDed. MatchExpressions is not supported yet.
LabelSelector map[string]string
}
PodSandboxFilter is used to filter a list of PodSandboxes. All those fields are combined with 'AND'
type PodSandboxInfo ¶
type PodSandboxInfo struct {
// Pod ID.
PodID string
// Sandbox configuration information.
Config *PodSandboxConfig
// Creation timestamp.
CreatedAt int64
// Sandbox state.
State PodSandboxState
// Sandbox network state.
ContainerSideNetwork *network.ContainerSideNetwork
}
PodSandboxInfo contains metadata information about pod sandbox instance
type PodSandboxState ¶
type PodSandboxState int32
PodSandboxState specifies the state of the sandbox
const ( // PodSandboxState_SANDBOX_READY specifies that the pod is ready. PodSandboxState_SANDBOX_READY PodSandboxState = 0 // PodSandboxState_SANDBOX_READY specifies that the pod is not ready. // This includes errors during RunPodSandbox. PodSandboxState_SANDBOX_NOTREADY PodSandboxState = 1 )
type PortMapping ¶
type PortMapping struct {
// Protocol of the port mapping.
Protocol Protocol
// Port number within the container. Default: 0 (not specified).
ContainerPort int32
// Port number on the host. Default: 0 (not specified).
HostPort int32
// Host IP.
HostIp string
}
PortMapping specifies the port mapping configurations of a sandbox.
type VMConfig ¶
type VMConfig struct {
// Id of the containing pod sandbox.
PodSandboxID string
// Name of the containing pod sandbox.
PodName string
// Namespace of the containing pod sandbox.
PodNamespace string
// Tenant of the containing pod sandbox.
PodTenant string
// Name of the container (VM).
Name string
// Image to use for the VM.
Image string
// Attempt is the number of container creation attempts before this one.
Attempt uint32
// Memory limit in bytes. Default: 0 (not specified).
MemoryLimitInBytes int64
CPUShares int64
// CPU CFS (Completely Fair Scheduler) period. Default: 0 (not specified).
CPUPeriod int64
// CPU CFS (Completely Fair Scheduler) quota. Default: 0 (not specified).
CPUQuota int64
// Annotations for the containing pod.
PodAnnotations map[string]string
// Annotations for the container.
ContainerAnnotations map[string]string
// Labels for the container.
ContainerLabels map[string]string
// Parsed representation of pod annotations. Populated by LoadAnnotations() call.
ParsedAnnotations *VirtletAnnotations
// Domain UUID (set by the CreateContainer).
// TODO: this field should be moved to VMStatus
DomainUUID string
// Environment variables to set in the VM.
Environment []VMKeyValue
// Host directories corresponding to the volumes which are to.
// be mounted inside the VM
Mounts []VMMount
// Host block devices that should be made available inside the VM.
// This is used for block PVs.
VolumeDevices []VMVolumeDevice
// ContainerSideNetwork stores info about container side network configuration.
ContainerSideNetwork *network.ContainerSideNetwork
// Path to the directory on the host in which container log files are
// stored.
LogDirectory string
// Path relative to LogDirectory for container to store the
// log (STDOUT and STDERR) on the host.
LogPath string
// cgroup parent specified in the linuxPodsandboxconfig
CgroupParent string
// currently a resource is being updated
ResourceUpdateInProgress bool
}
VMConfig contains the information needed to start create a VM TODO: use this struct to store VM metadata.
func (*VMConfig) LoadAnnotations ¶
LoadAnnotations parses pod annotations in the VM config an populates the ParsedAnnotations field.
func (*VMConfig) RootVolumeDevice ¶
func (c *VMConfig) RootVolumeDevice() *VMVolumeDevice
RootVolumeDevice returns the volume device that should be used for a persistent root filesystem, that is, its DevicePath is "/"
type VMKeyValue ¶
type VMKeyValue struct {
// Key contains the key part of the pair.
Key string
// Value contains the value part of the pair.
Value string
}
VMKeyValue denotes a key-value pair.
type VMMount ¶
type VMMount struct {
// ContainerPath specifies the mount path in the container namespace.
ContainerPath string
// HostPath specifies the mount path in the host namespace.
HostPath string
// If set, the mount is read-only.
Readonly bool
}
VMMount denotes a host directory corresponding to a volume which is to be mounted inside the VM.
type VMStats ¶
type VMStats struct {
// ContainerID holds identifier of container for which these statistics
// were collected
ContainerID string
// Name holds name of the container
Name string
// Timestatmp holds an unix timestamp (including nanoseconds)
// for stats collection
Timestamp int64
// CpuUsage in nano seconds per cpu
CpuUsage uint64
// MemoryUsage is expected to contain the amount of working set memory
// in bytes what in our case will be returned using RSS value
MemoryUsage uint64
// FsBytes represents current size of rootfs in bytes
FsBytes uint64
}
VMStats contains cpu/memory/disk usage for VM.
type VMStatsFilter ¶
type VMStatsFilter struct {
// ID holds of the container.
Id string
// PodSandboxID holds id of podsandbox.
PodSandboxID string
// LabelSelector to select matches. Requirementes should be ANDed.
// Match Expressions is not supported.
LabelSelector map[string]string
}
VMStatsFilter is used to filter set of container stats All those fields are combined with 'AND'
type VMVolumeDevice ¶
type VMVolumeDevice struct {
// DevicePath specifies the path to the device inside the VM.
DevicePath string
// HostPath specifies the mount path in the host namespace.
HostPath string
}
VMVolumeDevice denotes a raw block device mapping within a VM which is used for block PVs.
func (VMVolumeDevice) IsRoot ¶
func (d VMVolumeDevice) IsRoot() bool
IsRoot returns true if this volume device should be used for a persistent root filesystem, that is, its DevicePath is "/"
func (VMVolumeDevice) UUID ¶
func (dev VMVolumeDevice) UUID() string
UUID returns an uuid that uniquely identifies the block device on the host.
type VirtletAnnotations ¶
type VirtletAnnotations struct {
// Number of virtual CPUs.
VCPUCount int
// CPU model.
CPUModel CPUModelType
// Cloud-Init image type to use.
CDImageType CloudInitImageType
// Cloud-Init metadata.
MetaData map[string]interface{}
// Cloud-Init userdata
UserData map[string]interface{}
// True if the userdata is overridden.
UserDataOverwrite bool
// UserDataScript specifies the script to be used as userdata.
UserDataScript string
// SSHKets specifies ssh public keys to use.
SSHKeys []string
// DiskDriver specifies the disk driver to use.
DiskDriver DiskDriverName
// CPUSetting directly specifies the cpu to use for libvirt.
CPUSetting *libvirtxml.DomainCPU
// Root volume size in bytes. Defaults to 0 which means using
// the size of QCOW2 image). If the value is less then the
// size of the QCOW2 image, the size of the QCOW2 image is
// used instead.
RootVolumeSize int64
// VirtletChown9pfsMounts indicates if chown is enabled for 9pfs mounts.
VirtletChown9pfsMounts bool
// InjectedFiles specifies the files to be injected into VM's
// rootfs before booting the VM.
InjectedFiles map[string][]byte
// SystemUUID specifies fixed SMBIOS UUID to be used for the domain.
// If not set, the SMBIOS UUID will be automatically generated from the Pod ID.
SystemUUID *uuid.UUID
// ForceDHCPNetworkConfig prevents Virtlet from using Cloud-Init based network
// configuration and makes it only provide DHCP. Note that this will
// not work for multi-CNI configuration.
ForceDHCPNetworkConfig bool
}
VirtletAnnotations contains parsed values for pod annotations supported by Virtlet.