func init() { … } type proxyRun … // NewProxyCommand creates a *cobra.Command object with default parameters func NewProxyCommand() *cobra.Command { … } type ProxyServer … // newProxyServer creates a ProxyServer based on the given config func newProxyServer(ctx context.Context, config *kubeproxyconfig.KubeProxyConfiguration, master string, initOnly bool) (*ProxyServer, error) { … } // checkBadConfig checks for bad/deprecated configuation func checkBadConfig(s *ProxyServer) error { … } // checkBadIPConfig checks for bad configuration relative to s.PrimaryIPFamily. // Historically, we did not check most of the config options, so we cannot retroactively // make IP family mismatches in those options be fatal. When we add new options to check // here, we should make problems with those options be fatal. func checkBadIPConfig(s *ProxyServer, dualStackSupported bool) (err error, fatal bool) { … } // badCIDRs returns true if cidrs is a non-empty list of CIDRs, all of wrongFamily. func badCIDRs(cidrs []string, wrongFamily netutils.IPFamily) bool { … } // badBindAddress returns true if bindAddress is an "IP:port" string where IP is a // non-zero IP of wrongFamily. func badBindAddress(bindAddress string, wrongFamily netutils.IPFamily) bool { … } // createClient creates a kube client from the given config and masterOverride. // TODO remove masterOverride when CLI flags are removed. func createClient(ctx context.Context, config componentbaseconfig.ClientConnectionConfiguration, masterOverride string) (clientset.Interface, error) { … } func serveHealthz(ctx context.Context, hz *healthcheck.ProxierHealthServer, errCh chan error) { … } func serveMetrics(ctx context.Context, bindAddress string, proxyMode kubeproxyconfig.ProxyMode, enableProfiling bool, errCh chan error) { … } // Run runs the specified ProxyServer. This should never exit (unless CleanupAndExit is set). // TODO: At the moment, Run() cannot return a nil error, otherwise it's caller will never exit. Update callers of Run to handle nil errors. func (s *ProxyServer) Run(ctx context.Context) error { … } func (s *ProxyServer) birthCry() { … } // (Note that on Linux, the node IPs are used only to determine whether a given // LoadBalancerSourceRanges value matches the node or not. In particular, they are *not* // used for NodePort handling.) // // The order of precedence is: // 1. if bindAddress is not 0.0.0.0 or ::, then it is used as the primary IP. // 2. if rawNodeIPs is not empty, then its address(es) is/are used // 3. otherwise the node IPs are 127.0.0.1 and ::1 func detectNodeIPs(ctx context.Context, rawNodeIPs []net.IP, bindAddress string) (v1.IPFamily, map[v1.IPFamily]net.IP) { … } // getNodeIP returns IPs for the node with the provided name. If // required, it will wait for the node to be created. func getNodeIPs(ctx context.Context, client clientset.Interface, name string) []net.IP { … }