Kubernetes client (kubectl) sent a request to the API server requesting the creation of the Service based on Pods created through the go-demo-2 ReplicaSet.
Endpoint controller is watching the API server for new service events. It detected that there is a new Service object.
Endpoint controller created endpoint objects with the same name as the Service, and it used Service selector to identify endpoints (in this case the IP and the port of go-demo-2 Pods).
kube-proxy is watching for service and endpoint objects. It detected that there is a new Service and a new endpoint object.
kube-proxy added iptables rules which capture traffic to the Service port and redirect it to endpoints. For each endpoint object, it adds iptables rule which selects a Pod.
The kube-dns add-on is watching for Service. It detected that there is a new service.
The kube-dns added db's record to the dns server (skydns).