The above two solutions basically work in almost in a similar model (wherein the Grid size upscales and downscales depending on the load), but involves at-least the hub being spun off separately. Maybe you could have your Jenkins job spin off the Hub as a pre-execution step before the tests run and have a post execution step which terminates the hub.
Depending on your test script volume you can decide which route you would like to take.
Also there are selenium grid jenkins plugin itself which basically transforms your currently available Jenkins cluster into a Grid farm as well.
I am not sure if spinning off Kubernetes by a Jenkins job is a good idea. Ideally speaking you might want to have a K8 cluster up and running and then work with the k8 APIs to upscale or downscale your nodes.