|
|
|
@ -7,7 +7,9 @@ import (
|
|
|
|
|
"os"
|
|
|
|
|
"path/filepath"
|
|
|
|
|
"strings"
|
|
|
|
|
"time"
|
|
|
|
|
|
|
|
|
|
"github.com/Microsoft/hcsshim"
|
|
|
|
|
"github.com/k3s-io/k3s/pkg/daemons/config"
|
|
|
|
|
"github.com/k3s-io/k3s/pkg/util"
|
|
|
|
|
"github.com/sirupsen/logrus"
|
|
|
|
@ -15,6 +17,9 @@ import (
|
|
|
|
|
"k8s.io/kubernetes/pkg/kubeapiserver/authorizer/modes"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// NetworkName may be overridden at runtime in downstream projects
|
|
|
|
|
var NetworkName = "vxlan0"
|
|
|
|
|
|
|
|
|
|
const (
|
|
|
|
|
socketPrefix = "npipe://"
|
|
|
|
|
)
|
|
|
|
@ -35,6 +40,10 @@ func kubeProxyArgs(cfg *config.Agent) map[string]string {
|
|
|
|
|
argsMap["hostname-override"] = cfg.NodeName
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if sourceVip := waitForManagementIP(NetworkName); sourceVip != "" {
|
|
|
|
|
argsMap["source-vip"] = sourceVip
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return argsMap
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -124,3 +133,18 @@ func kubeletArgs(cfg *config.Agent) map[string]string {
|
|
|
|
|
}
|
|
|
|
|
return argsMap
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func waitForManagementIP(networkName string) string {
|
|
|
|
|
for range time.Tick(time.Second * 5) {
|
|
|
|
|
network, err := hcsshim.GetHNSNetworkByName(networkName)
|
|
|
|
|
if err != nil {
|
|
|
|
|
logrus.WithError(err).Warning("can't find HNS network, retrying", networkName)
|
|
|
|
|
continue
|
|
|
|
|
}
|
|
|
|
|
if network.ManagementIP == "" {
|
|
|
|
|
continue
|
|
|
|
|
}
|
|
|
|
|
return network.ManagementIP
|
|
|
|
|
}
|
|
|
|
|
return ""
|
|
|
|
|
}
|
|
|
|
|