Skip to content
This repository has been archived by the owner on May 12, 2021. It is now read-only.

Add limitations doc #48

Merged
merged 3 commits into from
Apr 20, 2018
Merged

Conversation

jodh-intel
Copy link
Contributor

Add the list of known limitations.

Fixes #31.

Signed-off-by: James O. D. Hunt [email protected]

@jodh-intel
Copy link
Contributor Author

This is a heavily reworked version of:

Some questions:

/cc @gnawux, @sameo, @mcastelino, @bergwolf, @grahamwhaley.

@jodh-intel
Copy link
Contributor Author

Hi @klynnrif - ptal.

Copy link

@klynnrif klynnrif left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Scrubbed for grammar, flow, and structure. There are several suggestions throughout and it is likely that I changed some of the meaning...apologies ahead of time :) Thanks!

Limitations.md Outdated
use of VMs.

The [Kata Container runtime](https://github.com/kata-containers/runtime) launches each container within its own hardware isolated VM, and each VM has its own kernel. Due to this higher
degree of isolation, there are certain container capabilities that
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lines 47-48 suggested rewrite: degree of isolation, certain container capabilities cannot be supported or are implicitly enabled through the VM.

Limitations.md Outdated

The [Open Container Initiative](https://www.opencontainers.org/) [Runtime Specification](https://github.com/opencontainers/runtime-spec) ("OCI spec") defines the minimum specifications a runtime must support to interoperate with container managers such as Docker. If a runtime does not support some aspect of the OCI spec, it is by definition a limitation.

However, the OCI runtime reference implementation (`runc`) does not perfectly align with the OCI spec itself. Further since the default OCI runtime used by Docker is `runc`, Docker expects runtimes to behave as `runc` does. This implies that *another* form of limitation arises if the behaviour of a runtime implementation does not align with that of `runc`. These two "dual standards" (one documented, one undocumented) complicates the challenge of supporting a Docker environment since a runtime must support the official OCI spec *and* the non-standard extensions provided by `runc`.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adding a comma and updating "behaviour" to "behavior":

Further, since the default OCI runtime used by Docker is runc, Docker expects runtimes to behave as runc does. This implies that another form of limitation arises if the behavior of a runtime implementation does not align with that of runc. These two "dual standards" (one documented and one undocumented) complicates the challenge of supporting a Docker environment since a runtime must support the official OCI spec and the non-standard extensions provided by runc.

Limitations.md Outdated

# Scope

Each known limitation is captured in a separate github issue containing detailed information about the issue. These issues are tagged with the `limitation` label. This document is a curated summary of important known limitations, providing links to the relevant github issues.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested rewrite:

Each known limitation is captured in a separate github issue that contains detailed information about the issue. These issues are tagged with the limitation label. This document is a curated summary of important known limitations and provides links to the relevant github issues.

Limitations.md Outdated

Each known limitation is captured in a separate github issue containing detailed information about the issue. These issues are tagged with the `limitation` label. This document is a curated summary of important known limitations, providing links to the relevant github issues.

The link below shows the latest list of limitations:
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The following link shows the latest list of limitations:

Limitations.md Outdated

# Pending items

This section lists items that may technically be fixable.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This section lists items that you might be able to fix.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fyi - I've changed this to the following to avoid the "you":

This section lists items that might be possible to fix.

Limitations.md Outdated

- Inside the VM

Constrain the guest kernel. This could be achieved for example by passing particular values via the kernel command line used to boot the guest kernel. Alternatively, sysctl values could be applied at early boot.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Constrain the guest kernel. This can be achieved by passing particular values through the kernel command line used to boot the guest kernel. Alternatively, sysctl values can be applied at early boot.

Limitations.md Outdated

- Constrain the hypervisor process by applying host-level constraints.

- Constrain all processes running inside the hypervisor
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adding a period: Constrain all processes running inside the hypervisor.

Limitations.md Outdated

- Constrain all processes running inside the hypervisor

This could be achieved by specifying particular hypervisor configuration options.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This can be achieved by specifying particular hypervisor configuration options.

Limitations.md Outdated

This could be achieved by specifying particular hypervisor configuration options.

- Constrain the [shim](https://github.com/kata-containers/shim) process
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adding a period: Constrain the shim process.

Limitations.md Outdated

- Constrain the [proxy](https://github.com/kata-containers/proxy) process.

Note that in some circumstances it may be necessary to apply particular constraints at *more than one* of the areas above to achieve the desired level of isolation and resource control.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested rewrite:

Note that in some circumstances it might be necessary to apply particular constraints to more than one of the previous areas to achieve the desired level of isolation and resource control.

@jodh-intel
Copy link
Contributor Author

Thanks for that epic review @klynnrif! Branch updated 😄

Copy link

@klynnrif klynnrif left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm - thanks!

@jodh-intel
Copy link
Contributor Author

Hi @egernst, @bergwolf - could you ptal?

@jodh-intel
Copy link
Contributor Author

ping!

Copy link
Contributor

@grahamwhaley grahamwhaley left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looking good - good to have this here for kata.
A couple of notes, but nothing I think is blocking or that I don't think you will fix.
I might have merged that last patch into the first one though.

lgtm

Limitations.md Outdated
expects runtimes to behave as `runc` does. This implies that another form of
limitation arises if the behavior of a runtime implementation does not align
with that of `runc`. These two "dual standards" (one documented and one
undocumented) complicates the challenge of supporting a Docker environment
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

s/complicates/complicate/
or rewrite to 'Having two standards complicates....' etc.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done.

See issue https://github.com/kata-containers/runtime/issues/186 for more information.

### ps command

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this done with kata-containers/agent#194 and related (/cc @devimc to note we will need to update this doc if/when it is complete)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we're blocked on kata-containers/runtime#130 for a functional ps command.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@devimc - are we good to remove this ps limitation from the doc now?

Limitations.md Outdated

## Docker ramdisk not supported

The magic `DOCKER_RAMDISK=true` environment variable used by Docker to force
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

s/magic// if you want

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done.

Limitations.md Outdated

## The constraints challenge

Applying resource constraints such as cgroup, cpu, memory, and storage to a workload is not always straightforward with a VM based system. A Kata Container runs in an isolated environment inside a virtual machine. This, coupled with the architecture of Kata Containers, offers many more possibilities than are available to traditional Linux* containers due to the various layers and contexts.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

'Linux' is mentioned previously on line 222 - you might want to move the * up there as the 'first mention'.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done.

Add the list of known limitations.

Fixes kata-containers#31.

Signed-off-by: James O. D. Hunt <[email protected]>
Add links for the dev guide and limitations doc to the `README`.

Signed-off-by: James O. D. Hunt <[email protected]>
Update the limitations document to remove the `spec` command limitation
(implemented on kata-containers/runtime#196).

Signed-off-by: James O. D. Hunt <[email protected]>
@jodh-intel jodh-intel force-pushed the add-limitations-doc branch from 2f2956e to 3e8400e Compare April 18, 2018 10:49
@jodh-intel
Copy link
Contributor Author

Thanks @grahamwhaley - branch updated.

@jodh-intel
Copy link
Contributor Author

@bergwolf, @egernst, @WeiZhang555 - please could you review and approve if you're happy with it?

We already have two acks on this PR (including 1 from the doc team) so it would be great to have this land... 😄

@sboeuf
Copy link

sboeuf commented Apr 19, 2018

LGTM

@egernst egernst merged commit 9b36fa3 into kata-containers:master Apr 20, 2018
@egernst egernst removed the review label Apr 20, 2018
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants