Service discovery
As we discussed earlier, the Kubernetes master keeps track of all service definitions and updates. Discovery can occur in one of three ways. The first two methods use Linux environment variables. There is support for the Docker link style of environment variables, but Kubernetes also has its own naming convention. Here is an example of what our node-js
service example might look like using K8s environment variables (note that IPs will vary):
NODE_JS_PORT_80_TCP=tcp://10.0.103.215:80 NODE_JS_PORT=tcp://10.0.103.215:80 NODE_JS_PORT_80_TCP_PROTO=tcp NODE_JS_PORT_80_TCP_PORT=80 NODE_JS_SERVICE_HOST=10.0.103.215 NODE_JS_PORT_80_TCP_ADDR=10.0.103.215 NODE_JS_SERVICE_PORT=80
Another option for discovery is through DNS. While environment variables can be useful when DNS is not available, it has drawbacks. The system only creates variables at creation time, so services that come online later will not be discovered or will require some additional tooling to update all the system...