From the systemd man page:
Use "${FOO}" as part of a word, or as a word of its own, on the command
line, in which case it will be
replaced by the value of the environment variable including
all whitespace it contains, resulting in a single argument.
Use "$FOO" as a separate word on the
command line, in which case it will be replaced
by the value of the environment variable split at
whitespace, resulting in zero or more arguments.
Since we want people to be able to use these for multiple arguments we
need to make sure we don't use {} around the env vars...
Some image based OS do not allow writing to /. Since the kubelet looks
for .dockercfg files in the working dir and uses / as the working dir,
this means one can never set a .dockercfg on those distros. This moves
the kubelet working dir to /var/lib/kubelet, where the kubelet naturally
does its work.
Some distros, include RHEL and Fedora, are doing away with the docker
socket by default in systemd units, for security reasons. Instead rely
on the docker.service being started instead of socket activation.
Rather than have to keep SkyDNS up to date with Kubernetes, use a
buddy-container "kube2sky" to watch kubernetes and sync Service records
into etcd for SkyDNS ot find. This also adds namespace support.
The built in go http.Fileserver handles If-Modified-Since in the
header by comparing it with the last modified date on the
file/directory. Since the file is unaltered when we switch to a
new container, that results in 304s when trying to fetch data.json, so
the browser doesn't fetch the new picture after doing a rolling update.
Separate issue, the Dockerfile ADD command was being interpreted as
`copy html/data.json into a directory called 'html/kitten.jpg '`,
instead of the `copy these 2 files into root`. Changed to separate
commands using COPY, per recommended dockerfile practices.