Hi All, Past couple of days I was working on a POC for the $subject.
Following is the current model that AppCloud use to create application / services. Basically for each application / service AppCloud will create a *Deployment >> ReplicaSet >> Pod* in Kubernetes cluster. At this point each ReplicaSet created has only one replica which is a Pod. This deployment does not scale up or scale down under any circumstances. This effort is to bring up a new feature to autoscale the application / service deployed in AppCloud according to certain metrics. Basically as usual AppCloud will create a *Deployment >> RS >> Pod* in Kubernetes for each application / service created as in above scenario. With the new feature, user can set auto-scaling parameters in the application settings level. We are using Kubernetes v1.3.4, and by default it accepts following parameters for *Horizontal Pod Autoscaler* (HPA). 1. Minimum # of pods 2. Maximum # of pods 3. Target CPU Utilization and the autoscaling logic will be following, TargetNumOfPods = ceil(sum(CurrentPodsCPUUtilization) / TargetCPUUtilization) But target number of pods will be bounded by the values provided for the MinPods and MaxPods values. MinPods <= TargetNumOfPods <= MaxPods When user set the auto scale parameters AppCloud will basically create a Kubernetes HPA kind for the particular appllication / service version (This is on demand. we do not create an HPA kind for each application / service version that user creates.). So that HPA for that particular version will take responsibility of scaling up, scaling down of pods according to the given threshold. Following will be the model that we are using in Kubernetes with the autoscaling feature in AppCloud. Your thoughts and comments are welcome on this. Thanks, Kasun -- *Kasun de Silva* Senior Software Engineer | Cloud TG WSO2 Inc <http://wso2.com>*. *|* E*mail : kas...@wso2.com | Mobile: +94 77 794 4260
_______________________________________________ Architecture mailing list Architecture@wso2.org https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture