All Projects → microsoft → Frameworkcontroller

microsoft / Frameworkcontroller

Licence: mit
General-Purpose Kubernetes Pod Controller

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to Frameworkcontroller

Sarek
Detect germline or somatic variants from normal or tumour/normal whole-genome or targeted sequencing
Stars: ✭ 124 (-10.79%)
Mutual labels:  containers
Ckube
A cli to simplify working with kubectl for some common workflows
Stars: ✭ 127 (-8.63%)
Mutual labels:  containers
Miniswarm
Docker Swarm cluster in one command
Stars: ✭ 130 (-6.47%)
Mutual labels:  containers
Private Tor Network
Run an isolated instance of a tor network in Docker containers
Stars: ✭ 125 (-10.07%)
Mutual labels:  containers
Hivedscheduler
Kubernetes Scheduler for Deep Learning
Stars: ✭ 126 (-9.35%)
Mutual labels:  containers
Ops
Tools&scripts for daily devops.
Stars: ✭ 128 (-7.91%)
Mutual labels:  containers
Go2seccomp
Generate seccomp profiles from go binaries
Stars: ✭ 122 (-12.23%)
Mutual labels:  containers
Dockerfiles
Almost all of these live on dockerhub under jess. Because you cannot use notary with autobuilds on dockerhub I also build these continuously on a private registry at r.j3ss.co for public download. (You're welcome.)
Stars: ✭ 12,213 (+8686.33%)
Mutual labels:  containers
Wordpress Operator
WordPress operator for Kubernetes
Stars: ✭ 127 (-8.63%)
Mutual labels:  kubernetes-controller
Cwl Airflow
Python package to extend Airflow functionality with CWL1.1 support
Stars: ✭ 130 (-6.47%)
Mutual labels:  containers
Jib
🏗 Build container images for your Java applications.
Stars: ✭ 11,370 (+8079.86%)
Mutual labels:  containers
Kubler
A generic, extendable build orchestrator.
Stars: ✭ 126 (-9.35%)
Mutual labels:  containers
Captain
A Helm 3 Controller
Stars: ✭ 129 (-7.19%)
Mutual labels:  kubernetes-controller
Containers
This library provides various containers. Each container has utility functions to manipulate the data it holds. This is an abstraction as to not have to manually manage and reallocate memory.
Stars: ✭ 125 (-10.07%)
Mutual labels:  containers
Ns Process
Code to accompany the "Namespaces in Go" series of articles.
Stars: ✭ 132 (-5.04%)
Mutual labels:  containers
Training
Container, Monitoring & Logging, Cloud & DevOps Tutorials and Labs
Stars: ✭ 121 (-12.95%)
Mutual labels:  containers
Linuxdeploy Cli
Linux Deploy CLI
Stars: ✭ 127 (-8.63%)
Mutual labels:  containers
Hyperstart
The tiny Init service for HyperContainer
Stars: ✭ 135 (-2.88%)
Mutual labels:  containers
St2 Docker
StackStorm docker-compose deployment
Stars: ✭ 133 (-4.32%)
Mutual labels:  containers
Kubernetes Reflector
Custom Kubernetes controller that can be used to replicate secrets, configmaps and certificates.
Stars: ✭ 129 (-7.19%)
Mutual labels:  kubernetes-controller

Microsoft OpenPAI FrameworkController

Build Status Latest Release Docker Pulls License

As one standalone component of Microsoft OpenPAI, FrameworkController (FC) is built to orchestrate all kinds of applications on Kubernetes by a single controller, especially for DeepLearning applications.

These kinds of applications include but not limited to:

Why Need It

Problem

In the open source community, there are so many specialized Kubernetes Pod controllers which are built for a specific kind of application, such as Kubernetes StatefulSet Controller, Kubernetes Job Controller, KubeFlow TensorFlow Operator, KubeFlow PyTorch Operator. However, no one is built for all kinds of applications and combination of the existing ones still cannot support some kinds of applications. So, we have to learn, use, develop, deploy and maintain so many Pod controllers.

Solution

Build a General-Purpose Kubernetes Pod Controller: FrameworkController.

And then we can get below benefits from it:

Architecture

Architecture

Feature

Framework Feature

A Framework represents an application with a set of Tasks:

  1. Executed by Kubernetes Pod
  2. Partitioned to different heterogeneous TaskRoles which share the same lifecycle
  3. Ordered in the same homogeneous TaskRole by TaskIndex
  4. With consistent identity {FrameworkName}-{TaskRoleName}-{TaskIndex} as PodName
  5. With fine grained ExecutionType to Start/Stop the whole Framework
  6. With fine grained RetryPolicy for each Task and the whole Framework
  7. With fine grained FrameworkAttemptCompletionPolicy for each TaskRole
  8. With PodGracefulDeletionTimeoutSec for each Task to tune Consistency vs Availability
  9. With fine grained Status for each TaskAttempt/Task, each TaskRole and the whole FrameworkAttempt/Framework

Controller Feature

  1. Highly generalized as it is built for all kinds of applications
  2. Light-weight as it is only responsible for Pod orchestration
  3. Well-defined Framework Consistency vs Availability, State Machine and Failure Model
  4. Tolerate Pod/ConfigMap unexpected deletion, Node/Network/FrameworkController/Kubernetes failure
  5. Support to specify how to classify and summarize Pod failures
  6. Support to ScaleUp/ScaleDown Framework with Strong Safety Guarantee
  7. Support to expose Framework and Pod history snapshots to external systems
  8. Easy to leverage FrameworkBarrier to achieve light-weight Gang Execution and Service Discovery
  9. Easy to leverage HiveDScheduler to achieve GPU Topology-Aware, Multi-Tenant, Priority and Gang Scheduling
  10. Compatible with other Kubernetes features, such as Kubernetes Service, Gpu Scheduling, Volume, Logging
  11. Idiomatic with Kubernetes official controllers, such as Pod Spec
  12. Aligned with Kubernetes Controller Design Guidelines and API Conventions

Prerequisite

  1. A Kubernetes cluster, v1.14.2 or above, on-cloud or on-premise.

Quick Start

  1. Run Controller
  2. Submit Framework

Doc

  1. User Manual
  2. Known Issue and Upcoming Feature
  3. FAQ
  4. Release Note

Official Image

Related Project

Third Party Controller Wrapper

A specialized wrapper can be built on top of FrameworkController to optimize for a specific kind of application:

Recommended Kubernetes Scheduler

FrameworkController can directly leverage many Kubernetes Schedulers and among them we recommend these best fits:

Similar Offering On Other Cluster Manager

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.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].