Read BoundPods from etcd instead of ContainerManifestList

There are three values that uniquely identify a pod on a host - the    configuration source (etcd, file, http), the pod name, and the pod    namespace. This change ensures that configuration properly makes those
    names unique by changing podFullName to contain both name (currently ID in    v1beta1, Name in v1beta3) and namespace.

The Kubelet does not properly handle information requests for pods not in the default namespace at this time.

When complete, this will represent a breaking schema change for etcd. Only the last commit two commits are new, the others are covered.

Extracted from #1600
All pods are required to have a namespace ("default" should be set at create) - the lack of a namespace is not allowed.

----- Original Message -----
> > @@ -433,3 +433,25 @@ func ValidateReadOnlyPersistentDisks(volumes
> > []api.Volume) errs.ErrorList {
> >  	}
> >  	return allErrs
> >  }
> > +
> > +// ValidateBoundPod tests if required fields on a bound pod are set.
> > +func ValidateBoundPod(pod *api.BoundPod) (errors []error) {
> > +	if !util.IsDNSSubdomain(pod.ID) {
> > +		errors = append(errors, errs.NewFieldInvalid("id", pod.ID))
> > +	}
> > +	if !util.IsDNSSubdomain(pod.Namespace) {
> 
> I thought namespace could be empty?
> 
> ---
> Reply to this email directly or view it on GitHub:
> https://github.com/GoogleCloudPlatform/kubernetes/pull/1662/files#r18808403