rkt

package
v0.5.1 Latest Latest
Warning

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

Go to latest
Published: May 13, 2015 License: Apache-2.0 Imports: 30 Imported by: 0

Documentation

Index

Constants

View Source
const (
	CAP_CHOWN = iota
	CAP_DAC_OVERRIDE
	CAP_DAC_READ_SEARCH
	CAP_FOWNER
	CAP_FSETID
	CAP_KILL
	CAP_SETGID
	CAP_SETUID
	CAP_SETPCAP
	CAP_LINUX_IMMUTABLE
	CAP_NET_BIND_SERVICE
	CAP_NET_BROADCAST
	CAP_NET_ADMIN
	CAP_NET_RAW
	CAP_IPC_LOCK
	CAP_IPC_OWNER
	CAP_SYS_MODULE
	CAP_SYS_RAWIO
	CAP_SYS_CHROOT
	CAP_SYS_PTRACE
	CAP_SYS_PACCT
	CAP_SYS_ADMIN
	CAP_SYS_BOOT
	CAP_SYS_NICE
	CAP_SYS_RESOURCE
	CAP_SYS_TIME
	CAP_SYS_TTY_CONFIG
	CAP_MKNOD
	CAP_LEASE
	CAP_AUDIT_WRITE
	CAP_AUDIT_CONTROL
	CAP_SETFCAP
	CAP_MAC_OVERRIDE
	CAP_MAC_ADMIN
	CAP_SYSLOG
	CAP_WAKE_ALARM
	CAP_BLOCK_SUSPEND
	CAP_AUDIT_READ
)

TODO(yifan): Export this to higher level package.

View Source
const (
	Embryo         = "embryo"
	Preparing      = "preparing"
	AbortedPrepare = "aborted prepare"
	Prepared       = "prepared"
	Running        = "running"
	Deleting       = "deleting" // This covers pod.isExitedDeleting and pod.isDeleting.
	Exited         = "exited"   // This covers pod.isExited and pod.isExitedGarbage.
	Garbage        = "garbage"
)

rkt pod state. TODO(yifan): Use exported definition in rkt.

Variables

This section is empty.

Functions

This section is empty.

Types

type Config

type Config struct {
	// The debug flag for rkt.
	Debug bool
	// The rkt data directory.
	Dir string
	// This flag controls whether we skip image or key verification.
	InsecureSkipVerify bool
	// The local config directory.
	LocalConfigDir string
}

Config stores the global configuration for the rkt runtime. Run 'rkt' for more details.

type ImageManager

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

ImageManager manages and garbage collects the container images for rkt.

func NewImageManager

func NewImageManager(r *Runtime) *ImageManager

func (*ImageManager) GarbageCollect

func (im *ImageManager) GarbageCollect() error

GarbageCollect collects the images. It is not implemented by rkt yet.

type Runtime

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

Runtime implements the ContainerRuntime for rkt. The implementation uses systemd, so in order to run this runtime, systemd must be installed on the machine.

func New

func New(config *Config) (*Runtime, error)

New creates the rkt container runtime which implements the container runtime interface. It will test if the rkt binary is in the $PATH, and whether we can get the version of it. If so, creates the rkt container runtime, otherwise returns an error.

func (*Runtime) ExecInContainer

func (r *Runtime) ExecInContainer(containerID string, cmd []string, stdin io.Reader, stdout, stderr io.WriteCloser, tty bool) error

Note: In rkt, the container ID is in the form of "UUID:appName:ImageID", where appName is the container name.

func (*Runtime) GarbageCollect

func (r *Runtime) GarbageCollect() error

GarbageCollect collects the pods/containers. TODO(yifan): Enforce the gc policy.

func (*Runtime) GetContainerLogs

func (r *Runtime) GetContainerLogs(pod *api.Pod, containerID string, tail string, follow bool, stdout, stderr io.Writer) error

GetContainerLogs uses journalctl to get the logs of the container. By default, it returns a snapshot of the container log. Set |follow| to true to stream the log. Set |follow| to false and specify the number of lines (e.g. "100" or "all") to tail the log. TODO(yifan): Currently, it fetches all the containers' log within a pod. We will be able to fetch individual container's log once https://github.com/coreos/rkt/pull/841 landed.

func (*Runtime) GetPodStatus

func (r *Runtime) GetPodStatus(pod *api.Pod) (*api.PodStatus, error)

GetPodStatus currently invokes GetPods() to return the status. TODO(yifan): Split the get status logic from GetPods().

func (*Runtime) GetPods

func (r *Runtime) GetPods(all bool) ([]*kubecontainer.Pod, error)

GetPods runs 'systemctl list-unit' and 'rkt list' to get the list of rkt pods. Then it will use the result to contruct a list of container runtime pods. If all is false, then only running pods will be returned, otherwise all pods will be returned.

func (*Runtime) IsImagePresent

func (r *Runtime) IsImagePresent(img string) (bool, error)

IsImagePresent returns true if the image is available on the machine. TODO(yifan): 'rkt image' is now landed on master, use that once we bump up the rkt version.

func (*Runtime) KillPod

func (r *Runtime) KillPod(pod kubecontainer.Pod) error

KillPod invokes 'systemctl kill' to kill the unit that runs the pod.

func (*Runtime) ListImages

func (r *Runtime) ListImages() ([]kubecontainer.Image, error)

func (*Runtime) PortForward

func (r *Runtime) PortForward(pod *kubecontainer.Pod, port uint16, stream io.ReadWriteCloser) error

PortForward executes socat in the pod's network namespace and copies data between stream (representing the user's local connection on their computer) and the specified port in the container.

TODO:

  • match cgroups of container
  • should we support nsenter + socat on the host? (current impl)
  • should we support nsenter + socat in a container, running with elevated privs and --pid=host?

TODO(yifan): Merge with the same function in dockertools.

func (*Runtime) PullImage

func (r *Runtime) PullImage(img string) error

PullImage invokes 'rkt fetch' to download an aci.

func (*Runtime) RemoveImage

func (r *Runtime) RemoveImage(image string) error

func (*Runtime) RunInContainer

func (r *Runtime) RunInContainer(containerID string, cmd []string) ([]byte, error)

Note: In rkt, the container ID is in the form of "UUID:appName:ImageID", where appName is the container name.

func (*Runtime) RunPod

func (r *Runtime) RunPod(pod *api.Pod, volumeMap map[string]volume.Volume) error

RunPod first creates the unit file for a pod, and then calls StartUnit over d-bus.

func (*Runtime) SyncPod

func (r *Runtime) SyncPod(pod *api.Pod, runningPod kubecontainer.Pod, podStatus api.PodStatus) error

SyncPod syncs the running pod to match the specified desired pod.

func (*Runtime) Version

func (r *Runtime) Version() (kubecontainer.Version, error)

Version invokes 'rkt version' to get the version information of the rkt runtime on the machine. The return values are an int array containers the version number.

Example: rkt:0.3.2+git --> []int{0, 3, 2}.

Jump to

Keyboard shortcuts

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