Hello Ryan,

Astonishing. Thanks for contributing this step-by-step guidance! We'll
prepare a special documentation page for that:
https://issues.apache.org/jira/browse/IGNITE-6241

--
Denis

On Fri, Apr 6, 2018 at 6:17 AM, Ryan Samo <one70...@gmail.com> wrote:

> Denis,
> Sorry for the late reply as I have been away from a computer for a few
> days.
> Today, I do not use Kubernetes in production, it is only in use for POC
> work
> so that I can understand how to utilize the K8s platform and test if it
> works well with Ignite. So far, Ignite seems to be playing nicely with
> Kubernetes although I have not fully tested the performance, etc.
>
> The POC environment is running Kubernetes 1.9.6 with Ignite Fabric 2.4. I
> am
> using Statefulsets to make sure Ignite has some stickiness to the nodes in
> case of failures, etc. I am also utilizing local storage on each of the K8s
> nodes so that Ignite persistence will work and it does, very well in fact.
>
> *Making it work*
>
> The following link will give you everything you need to know to enable
> local
> stoarage on Kubernetes:
> https://github.com/kubernetes-incubator/external-storage/
> tree/master/local-volume
> <https://github.com/kubernetes-incubator/external-
> storage/tree/master/local-volume>
>
> - In order to use persistence, you have to have K8s version 1.9.3 and
> above.
> This is because there are some "feature-gates" that you must enable to
> allow
> for the persistence to operate properly. If your K8s version is >= 1.9.3
> and
> < 1.10.0 then you need "feature-gates:
> PersistentLocalVolumes=true,VolumeScheduling=true,MountPropagation=true".
> If
> your K8s version is >= 1.10.0 then you only need "feature-gates:
> BlockVolume=true".
>
> - Next you will need to create a StorageClass where "volumeBindingMode:
> WaitForFirstConsumer". This allows us to bind to a storage class and wait
> for it to be picked up by a volume claim before it can be used.
>
> - Now we need a DaemonSet that monitors the disk that we want to use for
> local storage and checks for mounts. When it sees a new mount, it will
> create a PersistentVolume(PV) in K8s. Fortunately Quay has a docker image
> that does everything we need,
> "quay.io/external_storage/local-volume-provisioner". This is awesome
> because
> we can add more storage or mounts or both and our DaemonSet will pick it up
> automatically!
>
> - Now you just need to create a StatefulSet that uses an Ignite docker
> image, has a "volumeClaimTemplates" section which points to a the
> "volume.beta.kubernetes.io/storage-class" we specified earlier, and a
> "volumeMounts" section which points to a mount point that was
> auto-discovered by the DaemonSet above. When you start the StatefulSet, it
> will create a PersistentVolumeClaim for the mount you specified and bind
> that to the StatefulSet.
>
> Bingo, you have persistent storage!
>
> As to your request for contributing to the cause on external K8s discovery,
> I would love to do so, but at this time I will have to respectfully decline
> as I have many irons in the fire. I appreciate the gesture and hope to help
> the community in the future!
>
> I also hope this post helps everyone in their K8s Ignite adventures!
>
>
>
> --
> Sent from: http://apache-ignite-users.70518.x6.nabble.com/
>

Reply via email to