I agree that vttablets should be managed by replication controllers. It's another thing on my To Do list. :)
Ideally we could have one RC to produce all the replicas for a given shard. The missing piece when I last looked at it was that there's no concept of identity for replicas. Currently we use the vttablet-up.sh script to assign each tablet a unique ID, which is used to track the tablet in topology. I had to do that because replication controllers didn't have any way to assign unique IDs in a deterministic way.
We can't use random IDs because each tablet records its existence in topology by its ID. If that tablet disappears, we currently have no way to guarantee that it will be removed from topology. We get around that by having an external system that assigns consistent IDs - that is, the process that is brought up to replace the tablet that disappeared will be assigned the same ID as the one that disappeared. That way the new process knows which ID to clean up and take ownership of in topology.
Our options are to figure out a way to not need consistent IDs assigned from outside, or to somehow get replication controllers to assign them. A few months ago, I talked to some Kubernetes folks who said the latter is a use case that they've seen come up in various situations. So they are interested in having an answer for it, although they were not sure what form it would take. I haven't checked yet whether there has been any progress on that front.
One thing that was pointed out to me is that normally if a container or pod fails, even if there is no replication controller, the kubelet will take care of restarting it with the same configuration on the same node. Using the current naive vttablet-up.sh script, the only way you could end up with a tablet failing and not getting replaced is if the node itself fails.
Let us know if you have any suggestions or find anything that might help here.
Thanks,
Anthony