cmd/flagger/main.go
我们看到有一段:
cfg, err := clientcmd.BuildConfigFromFlags(masterURL, kubeconfig) if err != nil { logger.Fatalf("Error building kubeconfig: %v", err) }
BuildConfigFromFlags函数:
func BuildConfigFromFlags(masterUrl, kubeconfigPath string) (*restclient.Config, error) {
// 如果未指定集群的masterUrl且kubeconfigPath也为空
if kubeconfigPath == "" && masterUrl == "" {
klog.Warning("Neither --kubeconfig nor --master was specified. Using the inClusterConfig. This might not work.")
kubeconfig, err := restclient.InClusterConfig()
if err == nil {
// 返回
return kubeconfig, nil
}
klog.Warning("error creating inClusterConfig, falling back to default config: ", err)
}
return NewNonInteractiveDeferredLoadingClientConfig(
&ClientConfigLoadingRules{
ExplicitPath: kubeconfigPath,
},
&ConfigOverrides{
ClusterInfo: clientcmdapi.Cluster{
Server: masterUrl,
},
}).ClientConfig()
}