Documentation ¶
Index ¶
- Constants
- type Config
- type ImageManager
- type Runtime
- func (r *Runtime) ExecInContainer(containerID string, cmd []string, stdin io.Reader, ...) error
- func (r *Runtime) GarbageCollect() error
- func (r *Runtime) GetContainerLogs(pod *api.Pod, containerID string, tail string, follow bool, ...) error
- func (r *Runtime) GetPodStatus(pod *api.Pod) (*api.PodStatus, error)
- func (r *Runtime) GetPods(all bool) ([]*kubecontainer.Pod, error)
- func (r *Runtime) IsImagePresent(img string) (bool, error)
- func (r *Runtime) KillPod(pod kubecontainer.Pod) error
- func (r *Runtime) ListImages() ([]kubecontainer.Image, error)
- func (r *Runtime) PortForward(pod *kubecontainer.Pod, port uint16, stream io.ReadWriteCloser) error
- func (r *Runtime) PullImage(img string) error
- func (r *Runtime) RemoveImage(image string) error
- func (r *Runtime) RunInContainer(containerID string, cmd []string) ([]byte, error)
- func (r *Runtime) RunPod(pod *api.Pod, volumeMap map[string]volume.Volume) error
- func (r *Runtime) SyncPod(pod *api.Pod, runningPod kubecontainer.Pod, podStatus api.PodStatus) error
- func (r *Runtime) Version() (kubecontainer.Version, error)
Constants ¶
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.
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 ¶
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 ¶
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 ¶
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 ¶
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) RemoveImage ¶
func (*Runtime) RunInContainer ¶
Note: In rkt, the container ID is in the form of "UUID:appName:ImageID", where appName is the container name.
func (*Runtime) RunPod ¶
RunPod first creates the unit file for a pod, and then calls StartUnit over d-bus.