As of kubernetes 0.8.0, there's no official way to restrict traffic to kube-proxy.
I'm using the following iptables rule to restrict traffic only from local network and docker containers.
# These rules should be before `-j KUBE-PORTALS-CONTAINER` and `-j KUBE-PORTALS-HOST`
-t nat -A PREROUTING -i docker0 -d YOUR_PORTAL_NET j MARK --set-mark 8820
-t nat -A PREROUTING -s YOUR_LOCAL_NET -d YOUR_PORTAL_NET -j MARK --set-mark 8820
-t nat -A OUTPUT -s YOUR_LOCAL_NET -d YOUR_PORTAL_NET -j MARK --set-mark 8820
# Allow marked packets
-A INPUT -i docker0 -m mark --mark YOUR_FAVORITE_MARK -j ACCEPT
-A INPUT -s YOUR_LOCAL_NET -m mark --mark YOUR_FAVORITE_MARK -j ACCEPT
Replace YOUR_LOCAL_NET
with your local network (e.g. 192.168.0.0/24
), and YOUR_PORTAL_NET
with your kube-apiserver
's -portal_net
configuration.