Issue title: Default Storage Classes can't easily be disabled
 Issue body: PR https://github.com/kubernetes/kubernetes/pull/31617/files introduced default storage classes for 1.6. They are created with cluster addon which can not easily be modified by end users (requires access to the master).

We should improve experience before 1.6 goes out.

CC @kubernetes/sig-storage-misc 
 Comments: 
 Comment 0: @mikedanese another call for addon manager to distinguish initial values
from re-asserted values.

On Fri, Jan 6, 2017 at 6:01 PM, Saad Ali <elizabeth78@example.org> wrote:

> PR https://github.com/kubernetes/kubernetes/pull/31617/files introduced
> default storage classes for 1.6. They are created with cluster addon which
> can not easily be modified by end users (requires access to the master).
>
> We should improve experience before 1.6 goes out.
>
> CC @kubernetes/sig-storage-misc
> <https://github.com/orgs/kubernetes/teams/sig-storage-misc>
>
> —
> You are receiving this because you are on a team that was mentioned.
> Reply to this email directly, view it on GitHub
> <https://github.com/kubernetes/kubernetes/issues/39561>, or mute the
> thread
> <https://github.com/notifications/unsubscribe-auth/AFVgVAybLiaYg14LhlDdfo0t_EgrVJ27ks5rPvHvgaJpZM4LdS3s>
> .
>

 Comment 1: @msau42 can help out with this
 Comment 2: @mrhohn @mikedanese who among us feels the most ownership of addon
manager?  This is reaching a boiling point.

On Wed, Jan 11, 2017 at 3:26 PM, Saad Ali <elizabeth78@example.org> wrote:

> @msau42 <https://github.com/msau42> can help out with this
>
> —
> You are receiving this because you are on a team that was mentioned.
> Reply to this email directly, view it on GitHub
> <https://github.com/kubernetes/kubernetes/issues/39561#issuecomment-272028640>,
> or mute the thread
> <https://github.com/notifications/unsubscribe-auth/AFVgVAYw8s87qt63mJQjP5YAJ1540dzsks5rRWU_gaJpZM4LdS3s>
> .
>

 Comment 3: As @mikedanese [mentioned before](https://github.com/kubernetes/kubernetes/pull/34639#issuecomment-253858033), it wouldn't be hard to implement an "oneshot" functionality. I also had [a short proposal](https://github.com/kubernetes/kubernetes/pull/34639#issuecomment-253717529) for this.

If we agree this is the proper way to go with, I can also help out. The required work I expect would be putting couple more startup logics into [kube-addon.sh](https://github.com/kubernetes/kubernetes/blob/master/cluster/addons/addon-manager/kube-addons.sh) that carefully handle upgrade/restart cases.
 Comment 4: Other that StorageClass (which I guess an admin *might* want to remove) I
don't think oneshot is what we want.  Maybe we just want to ensure that an
object exists and if it doesn't, create it with a known base-config.  Is
that sufficient?

On Wed, Jan 11, 2017 at 11:06 PM, Zihong Zheng <elizabeth78@example.org>
wrote:

> As @mikedanese <https://github.com/mikedanese> mentioned before
> <https://github.com/kubernetes/kubernetes/pull/34639#issuecomment-253858033>,
> it wouldn't be hard to implement an "oneshot" functionality. I also had a
> short proposal
> <https://github.com/kubernetes/kubernetes/pull/34639#issuecomment-253717529>
> for this.
>
> If we agree this is the proper way to go with, I can also help out. The
> required work I expect would be putting couple more startup logics into
> kube-addon.sh
> <https://github.com/kubernetes/kubernetes/blob/master/cluster/addons/addon-manager/kube-addons.sh>
> that carefully handle upgrade/restart cases.
>
> —
> You are receiving this because you are on a team that was mentioned.
> Reply to this email directly, view it on GitHub
> <https://github.com/kubernetes/kubernetes/issues/39561#issuecomment-272092186>,
> or mute the thread
> <https://github.com/notifications/unsubscribe-auth/AFVgVDgefO9HwhtP6Flw-I-tM7CMMU91ks5rRdEPgaJpZM4LdS3s>
> .
>

 Comment 5: Ensure exist sounds good. What about two classes: one that reconcile, the other ensure exist?
 Comment 6: That sounds acceptable.  We mainly need:

1. A way to be able to change the default-class annotation
2. That change should persist across upgrades

I think it is ok if the deletion case is not supported.  Changing the default-class is sufficient to get the behavior we want.
 Comment 7: @msau42, can I help you in any way? I know very little about addon manager and its internals.
 Comment 8: Thanks, I plan to coordinate with addon folks to make the change.  It may end up being that all the changes are only in the addon component.
{'source': 'GithubIssues', 'repo_name_with_owner': 'kubernetes/kubernetes', 'issue_id': 199332906, 'repo_stars': 87466.0}