[reposted from kubernetes-sig-cluster-lifecycle]


Knowing the community is discussing about different cluster deployment 
tools and joining efforts of them, We'd like to share our thoughts and 
approach, and hear some feedbacks from you guys. Thanks


Introducing Archon

Archon <https://github.com/kubeup/archon> is an open-source cloud operator 
that brings physical instance management into Kubernetes. No matter if it's 
a cloud instance or a baremetal one, Archon manages its lifecycle. 

Most importantly it defines the Instance and the InstanceGroup resources 
which represent a physical instance and an operator controlled group of 
instances similar to a ReplicaSet respectively. Each InstanceGroup has an 
Instance template which defines the ways to allocate, provision, shutdown, 
and dispose of an owned Instance. Implementation details aside, this design 
has several advantages:

**Allow easy scaling of Kubernetes nodes**

Just by modifying the `replicas` field on the InstanceGroup resource, one 
can easily manage the numbers of nodes needed. Better yet something like 
ASG can be easily achieved without any help of the cloud provider and can 
be smarter.

**Allow self-provisioned cluster**

Archon runs as a controller in an existing Kubernetes cluster but with 
minikube integrated, it can provision a Kubernetes cluster in a similar 
fashion of bootkube creating a self-hosted cluster. It can start itself 
with minikube, create the instances needed, provision a master, transfer 
the related resources (Instances, InstanceGroups etc.) to the newly started 
master and start another instance of Archon operator in that master to 
finish the job.

**Allow easy rolling-update**

Rolling-update of OS level components becomes easy as you just need to spin 
up a new InstanceGroup with new templates and progressively drain the old 
one. Something like a Deployment controller will coordinate the new and old 
InstanceGroups and make sure the load is transferred smoothly. 

**Allow provisioning of other clustered applications**

Because the Instance template is bootstrap method agnostic, it can be used 
to provision any cluster. An etcd cluster, a tensorflow cluster, a 
glusterfs cluster... And the best thing is it can work with existing deploy 
tools. It just does the instance creation/shutdown for them. This makes it 
the best companion of tools like bootkube and kubeadm.

**Allow other operators to provision instances**

Instances are just resources. Its interface benefits from all goodies that 
Kubernetes has to offer: auth, admission, patch, watch etc.. Other 
operators can effortlessly work with it to provision non-k8s applications 
on k8s-managed instances. For example, maybe a storage operator can 
provision a glusterfs cluster by creating a new InstanceGroup and provide 
the storage as PVs to Kubernetes. 

------------------------------


Besides the two core concepts, Archon also brings several useful concepts 
into Kubernetes as resources:

**Network**

A subnet in the cluster network. Network can also be provisioned if 
supported by the cloud provider.

**ReservedInstance**

ReservedInstances form a pool of instances that are available to be 
selected, bound and provisioned by a InstanceGroup, similar to a PV waiting 
to be bound with PVC. Of course InstanceGroups can also choose to 
dynamically create instances if supported by the cloud provider.

------------------------------


To sum it up, Archon brings an unified interface of physical instance 
management to Kubernetes and its applications. It enabled self-provisioned, 
self-scaling Kubernetes and so much more. This is how Archon differentiates 
from other creation tools like kops and kube-aws. 

The current implementation is still under active development and lacking in 
details. It comes with examples that work with bare cloudinit, bootkube, 
kubeadm under CoreOS, Ubuntu and CentOS on three providers which are AWS, 
Aliyun and Matchbox for baremetal. 

Any thoughts are welcome.

-- 
You received this message because you are subscribed to the Google Groups 
"Kubernetes user discussion and Q&A" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to kubernetes-users+unsubscr...@googlegroups.com.
To post to this group, send email to kubernetes-users@googlegroups.com.
Visit this group at https://groups.google.com/group/kubernetes-users.
For more options, visit https://groups.google.com/d/optout.

Reply via email to