Instead of endpoints being a flat list, it is now a list of "subsets"
where each is a struct of {Addresses, Ports}. To generate the list of
endpoints you need to take union of the Cartesian products of the
subsets. This is compact in the vast majority of cases, yet still
represents named ports and corner cases (e.g. each pod has a different
port number).
This also stores subsets in a deterministic order (sorted by hash) to
avoid spurious updates and comparison problems.
This is a fully compatible change - old objects and clients will
keepworking as long as they don't need the new functionality.
This is the prep for multi-port Services, which will add API to produce
endpoints in this new structure.
only set the etcd servers in the apiserver config
set the --master= in the global config
still need --api_servers= different in kubelet because, ummmm, we do
comment out the apiserver config in controller and scheduler, not needed
point the proxy to api, not to etcd
It's just easier to package if we keep all the tmpfiles in one place
(even though there is only one)
All of the kube code uses /var/run/ not /run. Even though /var/run is
a link to /run on all systemd systems, it makes sense to me to keep our
codebase consistent.
Works:
--api_servers=127.0.0.1:8080
--api_servers=http://127.0.0.1:8080
--api_servers=http://localhost:8080
Fails:
--api_servers=localhost:8080
Include the http:// in the example, so users aren't likely to hit the
problem
requirement for the parameter. Sans parameter the kubelet will fail
silently trying to obtain service setting that are placed into the
ENV of the PODS.
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...