<p>I would like to setup a HA swarm / kubernetes cluster based on low power architecture (arm).
My main objective is to learn how works a HA web cluster, how it reacts to failures and recover from them, how easy it is to scale.</p>

<p>I would like to host a blog on it as well as other services once it is working (git / custom services / home automation / CI server / ...).</p>

<p>Here are my first questions:</p>

<ol>
<li><p>Regading the hardware, which is the more appropriate ? Rpi3 or Odroid-C2 or something else? I intend to have 4-6 nodes to start. Low power consumption is important to me since it will be running 24/7 at home </p></li>
<li><p>What is the best architecure to follow ? I would like to run everything in container (for scalability and redudancy), and have redundant load balancer, web servers and databases. Something like this: <a href="https://i.stack.imgur.com/TFu4G.png" rel="nofollow noreferrer">architecture</a> </p></li>
<li><p>Would it be possible to have web server / databases distributed on all the cluster, and load balancing on 2-3 nodes ? Or is it better to separate it physically? </p></li>
<li><p>Which technology is the more suited (swarm / kubernetes / ansible to deploy / flocker for storage) ? I read about this topic a lot lately, but there are a lot of choices.</p></li>
</ol>

<p>Thanks for your answers !</p>

<hr>

<h2>EDIT1: infrastructure deployment and management</h2>

<p>I have almost all the material and I am now looking in a way to easily manage and deploy the 5 (or more) PIs. I want the procedure to be as scalable as possible.</p>

<p>Is there some way to:</p>

<ul>
<li>retrieve an image from network the first time (PXE boot like)</li>
<li>apply custom settings for each node: network config (IP), SSH access, ...</li>
<li>automatically deploy / update new software on servers </li>
<li>easily add new nodes on the cluster</li>
</ul>

<p>I can have a dedicated PI or my PC that would act as deployment server.</p>

<p>Thanks for your inputs !</p>

<p>Raspberry Pi, ODroid, CHIP, BeagleBoard are all suitable hardware.
Note that flash card has a limited lifetime if you constantly read/write to them.</p>

<p>Kubernetes is a great option to learn clustering containers. 
Docker Swarm is also good.
None of these solutions provide distributed storage, so if you're talking about a PHP type web server and SQL database which are not distributed, then you can't really be redundant even with Kubernetes or Swarm.
To be effectively redundant, you need master/slave setup for the DB, or better a clustered database like elasticsearch or maybe the cluster version of MariaDB for SQL, so you have redundancy provided by the database cluster itself (which is not a replacement for backups, but it better than a single container)</p>

<p>For real distributed storage, you need to look at technologies like Ceph or GlusterFS. These do not work well with Kubernetes or Swarm because they need to be tied to the hardware. There is a docker/kubernetes Ceph project on Github, but I'd say it is still a bit hacky.
Better provision this separately, or directly on the host.</p>

<p>As far as load balancing is concerned, you ay want to have a couple nodes with external load balancers for redundancy, if you build a Kubernetes cluster you don't really chose what else may run on the same node, except by specifying CPU/RAM quota and limits, or affinity.</p>
