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