opengcs

module
v0.4.0 Latest Latest
Warning

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

Go to latest
Published: Dec 4, 2020 License: MIT

README

Open Guest Compute Service (opengcs) Build Status

Open Guest Compute Service is a Linux open source project to further the development of a production quality implementation of Linux Hyper-V container on Windows (LCOW). It's designed to run inside a custom Linux OS for supporting Linux container payload.

Getting Started

How to build GCS binaries

LCOW v1 (deprecated)

The original version of LCOW v1 was designed to run directly through Docker against the HCS (Host Compute Service) on Windows. This workflow is no longer supported by this repository however it has not been intentionally broken. If you would like to continue to use LCOW v1 there is a branch lcow_v1 that is the LKG branch previous to the removal of LCOW v1 from the master branchline. All future efforts are focused on LCOW v2.

LCOW v2

The primary difference between LCOW v1 and LCOW v2 is that v1 was designed to hide the concept of the Utility VM. The caller created a Linux container and operated on the container as if it was natively running on Windows. In the background a lightweight Utility VM was created that actually hosted the container but this was not visible and its resources not controllable via the caller. Although this works, it severly limited certain abilities such as the concept of Kubernetes pod or placing multiple LCOW containers in a single hypervisor boundary and set of resources.

Thus LCOW v2 was created which has two primary differences.

  • The Utility VM backing the Linux containers is a first class construct. Thus it can be managed in a lifetime seperate from the actual containers running in it.
  • The communication from host to guest is no longer done via the platform. This means that LCOW v2 can iterate simply by imporving its host/guest protocol with no need for taking Windows updates.

The focus of LCOW v2 as a replacement of LCOW v1 is through the coordination and work that has gone into containerd/containerd and its Runtime V2 interface. To see our containerd hostside shim please look here Microsoft/hcsshim/cmd/containerd-shim-runhcs-v1.

Contributing

This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.microsoft.com.

When you submit a pull request, a CLA-bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.

We also ask that contributors sign their commits using git commit -s or git commit --signoff to certify they either authored the work themselves or otherwise have permission to use it in this project.

Code of Conduct

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.

Directories

Path Synopsis
internal
kmsg
Package kmsg contains support for parsing Linux kernel log entries read from /dev/kmsg.
Package kmsg contains support for parsing Linux kernel log entries read from /dev/kmsg.
log
oc
service
gcs
gcs/bridge
Package bridge defines the bridge struct, which implements the control loop and functions of the GCS's bridge client.
Package bridge defines the bridge struct, which implements the control loop and functions of the GCS's bridge client.
gcs/core
Package core defines the interface representing the core functionality of a GCS-like program.
Package core defines the interface representing the core functionality of a GCS-like program.
gcs/core/gcs
Package gcs defines the core functionality of the GCS.
Package gcs defines the core functionality of the GCS.
gcs/core/mockcore
Package mockcore defines a mock implementation of the Core interface.
Package mockcore defines a mock implementation of the Core interface.
gcs/prot
Package prot defines any structures used in the communication between the HCS and the GCS.
Package prot defines any structures used in the communication between the HCS and the GCS.
gcs/runtime
Package runtime defines the interface between the GCS and an OCI container runtime.
Package runtime defines the interface between the GCS and an OCI container runtime.
gcs/runtime/mockruntime
Package mockruntime defines a mock implementation of the Runtime interface.
Package mockruntime defines a mock implementation of the Runtime interface.
gcs/runtime/runc
Package runc defines an implementation of the Runtime interface which uses runC as the container runtime.
Package runc defines an implementation of the Runtime interface which uses runC as the container runtime.
gcs/transport
Package transport defines the interfaces describing a connection-like data transport mechanism.
Package transport defines the interfaces describing a connection-like data transport mechanism.

Jump to

Keyboard shortcuts

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