Scaling of apps

bar1

Contributor
Joined
Dec 18, 2018
Messages
115
Hi, so currently i have 2 scale servers running.
how do i use Kubernetes to scale apps between the 2?
do i need to replicate ix-applications between the 2 servers and set Desired Replicas to 2?
thanks
 

sretalla

Powered by Neutrality
Moderator
Joined
Jan 1, 2016
Messages
9,703

gsrcrxsi

Explorer
Joined
Apr 15, 2018
Messages
86
I have a sort of related question about the scaling, when it is eventually available.

will the scaling be additive? or redundant?

for example, say you have two identical systems each with 4 CPU cores. will a single app be able to utilize all resources from both systems (8 cores)? or will this just be for failover protection allowing one app to seamlessly exist on either system if one goes down?

just want to understand the limitations.
 

truecharts

Guru
Joined
Aug 19, 2021
Messages
788
I have a sort of related question about the scaling, when it is eventually available.

will the scaling be additive? or redundant?

for example, say you have two identical systems each with 4 CPU cores. will a single app be able to utilize all resources from both systems (8 cores)? or will this just be for failover protection allowing one app to seamlessly exist on either system if one goes down?

just want to understand the limitations.

There is no App clustering in any way, shape or from in the current release of SCALE.
Nor is there a completed formal design draft internally at iX Systems.

But generally speaking about kubernetes it's neighter.
It's just spreading containers (of which there can be multiple, including copies in an App) over the hosts.
 

gsrcrxsi

Explorer
Joined
Apr 15, 2018
Messages
86
Thanks. That’s what I was getting at. If it would be (I’m aware there’s no clustering NOW) the ability for a single app to use all resources of the entire cluster.

Based on your reply, sounds like it won’t be possible.
 

sretalla

Powered by Neutrality
Moderator
Joined
Jan 1, 2016
Messages
9,703
sounds like it won’t be possible.
Not currently...

If the "app" is something that can run multiple instances of a container (kubernetes pod scaled to greater than 1 instance across multiple hosts), that will be possible in future releases.
 

gsrcrxsi

Explorer
Joined
Apr 15, 2018
Messages
86
Yeah sounds like previous implementations

This is a little off topic, but outside of TrueNAS, is there any OS or management software that DOES allow clustering of multiple hosts where the resources are all available to a single app? Where two 4-core hosts could pool together and some application could have all 8 cores to use for computation tasks.
 

truecharts

Guru
Joined
Aug 19, 2021
Messages
788
Yeah sounds like previous implementations

There never has been application clustering on SCALE, not now and not previously.

Yeah sounds like previous implementations

This is a little off topic, but outside of TrueNAS, is there any OS or management software that DOES allow clustering of multiple hosts where the resources are all available to a single app? Where two 4-core hosts could pool together and some application could have all 8 cores to use for computation tasks.

As explained by @sretalla it is theoretically possible with kubernetes IF the application/container(s) you deploy support it.
 

sretalla

Powered by Neutrality
Moderator
Joined
Jan 1, 2016
Messages
9,703
What you're talking about might be closer to grid computing... a very specific setup which allows multiple hardware to act on a single set of data with all CPU and memory pooled, but you can't just run any old application on a grid, it needs to have been written for it.



No "legacy" application (one that wasn't written to be cloud or cluster native) will be able to run across any kind of cluster which involves separate nodes. At best, you would be able to have higher availability by failing the application from one node to another, but without the right application structure, it won't cope with more than one host.
 

bar1

Contributor
Joined
Dec 18, 2018
Messages
115
so for my home lab, i just need something if a server is down even if it's not proper scaling/clustering.
I assume i can replicate ix-applications between my 2 truenas servers?
is it possible to replicate only SOME apps?
 

sretalla

Powered by Neutrality
Moderator
Joined
Jan 1, 2016
Messages
9,703
If you want kubernetes clustering, you can start with the new bluefin nightly images (and learn the CLI for that as the TrueCOmmand UI isn't yet available for it).

As we already said, clustering isn't yet available on the released version.

You can replicate datasets, but the datasets for applications is a bit complicated, so you'll need to do some research to understand how to make that work for you. (or wait for the release of Bluefin)
 

gsrcrxsi

Explorer
Joined
Apr 15, 2018
Messages
86
There never has been application clustering on SCALE, not now and not previously.

I'm aware. I mean previous implementations of kubernetes that I've read about (RPi clusters), not TrueNAS specifically.
 

sretalla

Powered by Neutrality
Moderator
Joined
Jan 1, 2016
Messages
9,703
You can always build a cluster of docker VMs using something like docker swarm or Rancher (or if you want to pay, VMware Tanzu).

Those options don't really play directly on SCALE as there's iX's own front-end doing that job that doesn't yet offer the options you're after, but already consuming the kubernetes endpoint.
 

gsrcrxsi

Explorer
Joined
Apr 15, 2018
Messages
86
thanks, I'm not really looking for anything right now, just find the concepts interesting if I ever wanted it in the future.

a potential application for something like this that I had in mind was BOINC. BOINC performance scales linearly with number of threads since each job only occupies a single thread. if you could pool together two systems for greater number of threads you can run more jobs concurrently. At the moment you'd need to install separate instances for each host. there are people with hundreds or thousands of hosts and indeed they have a separate application instance for each one. deployment and management is a large undertaking. since it doesnt require all threads to work on the same job, node to node latency should be no issue. think of something like a middle man that is between the project and the various hosts,it gets work and distributes it to any available thread no matter what node it's on. it just sends the job to an available core, then the results come back to be sent back to the project. to the project it looks like a single system when it's really many on the backend. currently the BOINC application itself can only really detect and use the resources of the host it's on. but if you could group multiple systems together it might be an interesting solution for mass deployments.

I do a lot of BOINC processing, but honestly my focus is on GPU computing, though I do a bit of CPU crunching as well with a dual 48-core (192 thread) EPYC system. I only have a handful of hosts at the moment so it's not too troublesome for me to just have separate instances. I was just thinking out loud about what is currently possible.
 

truecharts

Guru
Joined
Aug 19, 2021
Messages
788
thanks, I'm not really looking for anything right now, just find the concepts interesting if I ever wanted it in the future.

a potential application for something like this that I had in mind was BOINC. BOINC performance scales linearly with number of threads since each job only occupies a single thread. if you could pool together two systems for greater number of threads you can run more jobs concurrently. At the moment you'd need to install separate instances for each host. there are people with hundreds or thousands of hosts and indeed they have a separate application instance for each one. deployment and management is a large undertaking. since it doesnt require all threads to work on the same job, node to node latency should be no issue. think of something like a middle man that is between the project and the various hosts,it gets work and distributes it to any available thread no matter what node it's on. it just sends the job to an available core, then the results come back to be sent back to the project. to the project it looks like a single system when it's really many on the backend. currently the BOINC application itself can only really detect and use the resources of the host it's on. but if you could group multiple systems together it might be an interesting solution for mass deployments.

I do a lot of BOINC processing, but honestly my focus is on GPU computing, though I do a bit of CPU crunching as well with a dual 48-core (192 thread) EPYC system. I only have a handful of hosts at the moment so it's not too troublesome for me to just have separate instances. I was just thinking out loud about what is currently possible.

For BOINC there are great kubernetes solutions possible, but that does not require what you are suggested you needed previously.
Please just wait till people that know how to do the things you want, offer an App that does what you want it to do.

Anyway, that is of totally irrelevant at the moment as it's not something that is supported anyway.
 

truecharts

Guru
Joined
Aug 19, 2021
Messages
788
If you want kubernetes clustering, you can start with the new bluefin nightly images (and learn the CLI for that as the TrueCOmmand UI isn't yet available for it).

As we already said, clustering isn't yet available on the released version.

You can replicate datasets, but the datasets for applications is a bit complicated, so you'll need to do some research to understand how to make that work for you. (or wait for the release of Bluefin)

There is no kubernetes clustering in the Nightly either.
The internal design draft was not even finished as-of 2 days ago.

Nor is it 100% clear what is going to be TrueCommand based and what's not.
 

sretalla

Powered by Neutrality
Moderator
Joined
Jan 1, 2016
Messages
9,703

truecharts

Guru
Joined
Aug 19, 2021
Messages
788
Top