Skip to content

Commit 4fa2fd3

Browse files
zmn223Xiaoning Ding
and
Xiaoning Ding
authored
Add a documentation page for Arktos (#156)
* Add yaml files for documentation page (#1) * Added .md files for documentation page * Add files via upload * Update Arktos-Release-Notes.md * Addressed PR comments * Updated mkdocs.yml Co-authored-by: Xiaoning Ding <[email protected]>
1 parent ede0558 commit 4fa2fd3

File tree

6 files changed

+359
-0
lines changed

6 files changed

+359
-0
lines changed
535 KB
Binary file not shown.
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
# Roadmap
2+
3+
## Arktos Release v0.1 (1/30/2020)
4+
Arktos is an open source cluster management system designed for large scale clouds. It is evolved from the open source Kubernetes v1.15 codebase with some fundamental improvements.
5+
Arktos aims to be an open source solution to address key challenges of large scale clouds, including system scalability, resource efficiency, multitenancy, cross-AZ resiliency, and the native support for the fast-growing modern workloads such as containers and serverless functions.
6+
7+
Today we announce the v0.1 release of Arktos.
8+
9+
### Repos
10+
1. Arktos: https://github.com/futurewei-cloud/arktos
11+
1. Arktos-cniplugins: https://github.com/futurewei-cloud/arktos-cniplugins
12+
1. Arktos-vm-runtime: https://github.com/futurewei-cloud/arktos-vm-runtime
13+
14+
### Released Components
15+
1. Unified Node Agent
16+
1. Unified Scheduler
17+
1. Partitioned and Scalable Controller Manager
18+
1. API Server/Core Server with Multi-Tenancy and Unified Pod Support
19+
1. Arktos VM Runtime Server
20+
21+
### Features
22+
1. Multi-tenancy Features
23+
1. Introduce a new layer “tenant” before “namespace” in API resource URL schema, to provide a clear and isolated resource hierarchy for tenants.
24+
1. Introduce a new API resource “tenant”, to keep tenant-level configurations and properties.
25+
1. The metadata section of all exiting API resources has a new member: tenantName.
26+
1. API Server, ClientGo, Scheduler, Controllers and CLI changes for the new resource model.
27+
1. Unified VM/Container Support:
28+
1. Extend “pod” definition to both containers and VM. Now a pod can contain one VM, or one or more containers.
29+
1. Enhance scheduler to schedule container pods and VM pods in the same way (unified scheduling).
30+
1. Enhance kubelet to support multiple CRI runtimes (unified agent).
31+
1. Implement a VM runtime server evolved from project Virtlet, with new features like VM reboot, snapshot, restore, etc.
32+
1. Enhance kubelet to handle VM state changes and configuration changes.
33+
1. Introduce a new API resource “action” and the corresponding handles (action framework) to support some VM specific actions which are not appropriate to be expressed as state machine changes, like reboot and snapshot.
34+
1. Artkos Integration with OpenStack Neutron
35+
1. Arktos network controller integrate with neutron.
36+
1. Arktos CNI plugins for neutron.
37+
1. Arktos integration with Mizar
38+
1. Arktos CNI plugins for mizar-mp.
39+
1. Scalability
40+
1. Partitioned and scalable controller managers with active-active support.
41+
1. API Server Partitioning (in progress)
42+
1. ETCD partitioning (in progress)
43+
### Known Issues
44+
1. Go 1.13 is not supported yet.
45+
### Features in Planning
46+
1. Intelligent scheduling
47+
1. in-place resource update
48+
1. QoS enforcement
49+
50+
## Arktos Release v0.2 (3/30/2020)
51+
52+
### Features Added
53+
1. Multi-tenancy Features
54+
1. Tenancy short-path support
55+
2. Add Tenant Controller
56+
3. Tenancy-aware token Authenticator
57+
4. Tenancy-aware Cert Authenticator
58+
5. Tenancy-aware RBAC Authorizer
59+
6. Tenancy in kubeconfig context
60+
7. Stabilization on multi-tenancy API Model
61+
8. More test and workaround fixes Added
62+
63+
2. Scalability Features
64+
1. API Server Data Partitioning
65+
2. Active-active controller framework - new Kubernetes master component: Workload Controller Manager
66+
3. Set up test environments for data partitioned environment
67+
4. Add kube-up and start-kubemark for AWS
68+
69+
3. Unifed VM/containers
70+
1. Add support for primary runtime
71+
2. Add volume driver for OpenStack Cinder
72+
3. Fix issues related to VM pod vCPU settings
73+
74+
4. Documentation
75+
1. New documentation readthedocs page
76+
77+
### Known Issues
78+
79+
1. Create new tenant make events related to the tenant populated to all api servers
80+
2. Performance testing: Scheduling Throughput is one fourth of pre-arktos
81+
3. AWS: Register kubemark master as a node
82+
4. AWS: Start-kubemark failed to run without sudo password
83+
5. Get coredns working with kubeadm
84+
6. AWS: Add workload-controller-manager to aws kube-up and start-kubemark
85+
86+
### Future Releases
87+
1. Performance test result
88+
2. ETCD partitioning
89+
3. Intelligent scheduling
90+
4. In-place resource update
91+
5. QoS enforcement
92+
93+

docs/user-guide/CONTRIBUTING.md

Lines changed: 142 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,142 @@
1+
# Welcome
2+
3+
Welcome to Arktos!
4+
5+
- [Before you get started](#before-you-get-started)
6+
- [Code of Conduct](#code-of-conduct)
7+
- [Getting started](#getting-started)
8+
- [Your First Contribution](#your-first-contribution)
9+
- [Find something to work on](#find-something-to-work-on)
10+
- [Find a good first topic](#find-a-good-first-topic)
11+
- [Work on an Issue](#work-on-an-issue)
12+
- [File an Issue](#file-an-issue)
13+
- [Contributor Workflow](#contributor-workflow)
14+
- [Creating Pull Requests](#creating-pull-requests)
15+
- [Code Review](#code-review)
16+
- [Testing](#testing)
17+
- [Documents and Support](#documents-and-support)
18+
19+
# Before you get started
20+
21+
## Code of Conduct
22+
23+
Please make sure to read and observe our [Code of Conduct](https://github.com/futurewei-cloud/arktos/blob/master/code-of-conduct.md).
24+
25+
# Getting started
26+
27+
- Fork the repository on GitHub
28+
- Visit [README](https://github.com/futurewei-cloud/arktos#build-arktos) for build instructions.
29+
30+
31+
# Your First Contribution
32+
33+
We will help you to contribute in different areas like filing issues, developing features, fixing critical bugs and getting your work reviewed and merged.
34+
35+
If you have questions about the development process, feel free to jump into our [slack channel](https://app.slack.com/client/TMNECBVT5/CRRUU7137) or join our [email group](https://groups.google.com/forum/#!forum/arktos-user).
36+
37+
## Find something to work on
38+
39+
We are always in need of help, be it fixing documentation, reporting bugs or writing some code.
40+
Look at places where you feel best coding practices aren't followed, code refactoring is needed or tests are missing.
41+
Here is how you get started.
42+
43+
### Find a good first topic
44+
45+
There are multiple repositories ([Arktos](https://github.com/futurewei-cloud/arktos), [Arktos-vm-runtime](https://github.com/futurewei-cloud/arktos-vm-runtime), [Arktos-cniplugins](https://github.com/futurewei-cloud/arktos-cniplugins)) within the Arktos organization.
46+
Each repository has beginner-friendly issues that provide a good starting point.
47+
For example, [Arktos](https://github.com/futurewei-cloud/arktos) has [help wanted](https://github.com/futurewei-cloud/arktos/labels/help%20wanted) and [good first issue](https://github.com/futurewei-cloud/arktos/labels/good%20first%20issue) labels for issues that should not need deep knowledge of the system. We can help new contributors who wish to work on such issues.
48+
49+
50+
### Work on an issue
51+
52+
When you are willing to take on an issue, you can assign it to yourself. Just reply with `/assign` or `/assign @yourself` on an issue,
53+
then the robot will assign the issue to you and your name will present at `Assignees` list.
54+
55+
### File an Issue
56+
57+
While we encourage everyone to contribute code, it is also appreciated when someone reports an issue.
58+
Issues should be filed under the appropriate Arktos sub-repository.
59+
60+
*Example:* An Arktos issue should be opened to [Arktos](https://github.com/futurewei-cloud/arktos). And the same should apply to [Arktos-vm-runtime](https://github.com/futurewei-cloud/arktos-vm-runtime) and [Arktos-cniplugins](https://github.com/futurewei-cloud/arktos-cniplugins).
61+
62+
Please follow the prompted submission guidelines while opening an issue.
63+
64+
# Contributor Workflow
65+
66+
Please do not ever hesitate to ask a question or send a pull request.
67+
68+
This is a rough outline of what a contributor's workflow looks like:
69+
70+
- Fork [Arktos](https://github.com/futurewei-cloud/arktos).
71+
- Create a topic branch in your forked repo from where to base the contribution. This is usually master.
72+
- Make commits of logical units.
73+
- Make sure commit messages are in the proper format (see below).
74+
- Push changes in a topic branch to a personal fork of the repository.
75+
- Submit a pull request to [Arktos](https://github.com/futurewei-cloud/arktos).
76+
- The PR must receive an approval from two team members including at least one maintainer.
77+
78+
## Creating Pull Requests
79+
80+
Pull requests are often called simply "PR".
81+
Arktos generally follows the standard [github pull request](https://help.github.com/articles/about-pull-requests/) process.
82+
To submit a proposed change, please develop the code/fix and add new test cases.
83+
After that, run these local verifications before submitting pull request to predict the pass or
84+
fail of continuous integration.
85+
86+
## Code Review
87+
88+
To make it easier for your PR to receive reviews, consider the reviewers will need you to:
89+
90+
* follow [good coding guidelines](https://github.com/golang/go/wiki/CodeReviewComments).
91+
* write [good commit messages](https://chris.beams.io/posts/git-commit/).
92+
* break large changes into a logical series of smaller patches which individually make easily understandable changes, and in aggregate solve a broader issue.
93+
* label PRs with appropriate reviewers: to do this read the messages the bot sends you to guide you through the PR process.
94+
95+
### Format of the commit message
96+
97+
We follow a rough convention for commit messages that is designed to answer two questions: what changed and why.
98+
The subject line should feature the what and the body of the commit should describe the why.
99+
100+
```
101+
scripts: add test codes for metamanager
102+
103+
this add some unit test codes to imporve code coverage for metamanager
104+
105+
Fixes #12
106+
```
107+
108+
The format can be described more formally as follows:
109+
110+
```
111+
<subsystem>: <what changed>
112+
<BLANK LINE>
113+
<why this change was made>
114+
<BLANK LINE>
115+
<footer>
116+
```
117+
118+
The first line is the subject and should be no longer than 70 characters, the second line is always blank, and other lines should be wrapped at 80 characters. This allows the message to be easier to read on GitHub as well as in various git tools.
119+
120+
Note: if your pull request isn't getting enough attention, you can use the reach out on Slack to get help finding reviewers.
121+
122+
123+
## Testing
124+
125+
There are multiple types of tests.
126+
The location of the test code varies with type, as do the specifics of the environment needed to successfully run the test:
127+
128+
* Unit: These confirm that a particular function behaves as intended. Unit test source code can be found adjacent to the corresponding source code within a given package. These are easily run locally by any developer.
129+
* Integration: These tests cover interactions of package components or interactions between Arktos components.
130+
* End-to-end ("e2e"): These are broad tests of overall system behavior and coherence.
131+
132+
Continuous integration will run these tests on PRs.
133+
134+
## Documents and Support
135+
136+
The [design document folder](https://github.com/futurewei-cloud/arktos/tree/master/docs/design-proposals) contains the detailed design of already implemented features, and also some thoughts for planned features.
137+
138+
The [user guide folder](https://github.com/futurewei-cloud/arktos/tree/master/docs/user-guide) provides information about these features from users' perspective.
139+
140+
To report a problem, please [create an issue](https://github.com/futurewei-cloud/arktos/issues) in the project repo.
141+
142+
To ask a question, you can either chat with project members in the [slack channel](https://app.slack.com/client/TMNECBVT5/CRRUU7137), post in the [email group](https://groups.google.com/forum/#!forum/arktos-user), or [create an issue](https://github.com/futurewei-cloud/arktos/issues) of question type in the repo.

docs/user-guide/README.md

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
# Arktos
2+
3+
4+
5+
[![Go Report Card](https://goreportcard.com/badge/github.com/futurewei-cloud/arktos)](https://goreportcard.com/report/github.com/futurewei-cloud/arktos)
6+
[![LICENSE](https://img.shields.io/badge/license-apache%202.0-green)](https://github.com/futurewei-cloud/arktos/blob/master/LICENSE)
7+
8+
9+
## What Arktos is
10+
11+
Arktos is an open source cluster management system designed for large scale clouds. It is evolved from the open source [Kubernetes](https://github.com/kubernetes/kubernetesh) v1.15 codebase with some fundamental improvements.
12+
13+
Arktos aims to be an open source solution to address key challenges of large scale clouds, including system scalability, resource efficiency, multitenancy, cross-AZ resiliency, and the native support for the fast-growing modern workloads such as containers and serverless functions.
14+
15+
----
16+
17+
## Key Features of Arktos
18+
19+
20+
### Large Scalability
21+
22+
Arktos achieves a scalable architecture by partitioning and replicating system components, including API Server, storage, controllers and data plane. The eventual goal of Arktos is to support 100K nodes with a single cross-AZ control plane.
23+
24+
### Multitenancy
25+
26+
Arktos implements a hard multi-tenancy model to meet the strict isolation requirement highly desired by a typical public cloud environment. Tenant is a built-in object in the system, and some flexible multi-tenancy models can also be supported with customized resource authorization rules.
27+
28+
### Native VM Support
29+
30+
In addition to container orchestration, Arktos implements a built-in support for VMs. In Arktos a pod can contain either containers or a VM. They are scheduled the same way and launched by node agent using different runtime servers. VMs and containers are both the first-class citizens in Arktos.
31+
32+
33+
### More Planned Features
34+
35+
More features are planned but not started yet, including intelligent scheduling, in-place resource update, QoS enforcement, etc.
36+
37+
38+
## Build Arktos
39+
40+
41+
To build Arktos, you just need to clone the repo and run "make":
42+
43+
##### Note: you need to have a working [Go 1.12 environment](https://golang.org/doc/install). Go 1.13 is not supported yet.
44+
45+
```
46+
mkdir -p $GOPATH/src/github.com
47+
cd $GOPATH/src/github.com
48+
git clone https://github.com/futurewei-cloud/arktos
49+
cd arktos
50+
make
51+
```
52+
53+
## Run Arktos
54+
55+
To run a single-node Arktos cluster in your local development box:
56+
57+
```
58+
cd $GOPATH/src/github.com/arktos
59+
hack/arktos-up.sh
60+
```
61+
62+
After the Arktos cluster is up, you can access the cluster with [Kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl/) tool just like what you do with a Kubernetes cluster. For example:
63+
64+
```
65+
cd $GOPATH/src/github.com/arktos
66+
cluster/kubectl.sh get nodes
67+
```
68+
69+
For more complicated cluster setups, please refer to [Arktos Cluster Setup Guide](https://github.com/futurewei-cloud/arktos/blob/master/docs/setup-guide/multi-node-dev-cluster.md).
70+
71+
## Documents and Support
72+
73+
The [design document folder](https://github.com/futurewei-cloud/arktos/tree/master/docs/design-proposals/) contains the detailed design of already implemented features, and also some thoughts for planned features.
74+
75+
The [user guide folder](https://github.com/futurewei-cloud/arktos/tree/master/docs/user-guide/) provides information about these features from users' perspective.
76+
77+
To report a problem, please [create an issue](https://github.com/futurewei-cloud/arktos/issues) in the project repo.
78+
79+
To ask a question, here is [the invitation](https://join.slack.com/t/arktosworkspace/shared_invite/zt-cmak5gjq-rBxX4vX2TGMyNeU~jzAMLQ) to join [Arktos slack channels](http://arktosworkspace.slack.com/). You can also post in the [email group](https://groups.google.com/forum/#!forum/arktos-user), or [create an issue](https://github.com/futurewei-cloud/arktos/issues) of question type in the repo.

mkdocs.yml

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
site_name: Arktos
2+
docs_dir: 'docs'
3+
site_dir: '.tmp/documentation'
4+
repo_url: https://github.com/futurewei-cloud/arktos
5+
theme:
6+
name: readthedocs
7+
highlightjs: true
8+
hljs_languages:
9+
- yaml
10+
nav:
11+
- Home: 'user-guide/README.md'
12+
- 'Getting Started':
13+
- Contributing: 'user-guide/CONTRIBUTING.md'
14+
- Multi-node Setup Guide: 'setup-guide/multi-node-dev-cluster.md'
15+
- Roadmap: 'user-guide/Arktos-Release-Notes.md'
16+
- 'Multi-Tenancy':
17+
- Multi-Tenancy Design Overview: 'design-proposals/multi-tenancy/multi-tenancy-overview.md'
18+
- Multi-Tenancy API Resource Model: 'design-proposals/multi-tenancy/multi-tenancy-api-resource-model.md'
19+
- Multi-Tenancy Access Control: 'design-proposals/multi-tenancy/multi-tenancy-access-control.md'
20+
- Multi-Tenancy Scheduler and Controllers: 'design-proposals/multi-tenancy/multi-tenancy-schduler-agent-and-controllers.md'
21+
- Multi-Tenancy Networking: 'design-proposals/multi-tenancy/network.md'
22+
- 'Scalability':
23+
- Controller Scalability: 'design-proposals/controller/scaleout-framework/ControllerFramework.md'
24+
- API Server Data Partition: 'design-proposals/apiserver/Data-Partition-Design.md'
25+
26+
- 'Unified VM/Container':
27+
- Support for Multi Runtimes in Agent: 'design-proposals/node/Support-multiple-runtimes.md'
28+
- VPC Support for VMs and Containers: 'design-proposals/network/NICAndVPCSupportInArktos.md'
29+
- Action APIs to Support VM-specific Lifecycle Events: 'design-proposals/apiserver/Action-API-design.md'
30+
- Common Abstract Between VM and Container: 'design-proposals/apiserver/VM-Container-Common.md'
31+
- 'Document':
32+
- Current Works and Next: 'slides/arktos_current_work_and_next.pdf'
33+
- Arktos Overview and Demo at KubeCon 2019: 'slides/kubecon2019_na_booth_demo.pptx'

readthedocs.yaml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# .readthedocs.yml
2+
# Read the Docs configuration file
3+
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
4+
5+
# Required
6+
version: 2
7+
8+
mkdocs:
9+
configuration: mkdocs.yml
10+
11+
# Optionally build your docs in additional formats such as PDF and ePub
12+
formats: all

0 commit comments

Comments
 (0)