mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-22 11:21:47 +00:00
Convert for util.IP to just use a net.IP
pflag can handle IP addresses so use the pflag code instead of doing it ourselves. This means our code just uses net.IP and we don't have all of the useless casting back and forth!
This commit is contained in:
parent
65bff3d187
commit
fe6b633e2a
@ -62,10 +62,10 @@ const (
|
|||||||
|
|
||||||
// APIServer runs a kubernetes api server.
|
// APIServer runs a kubernetes api server.
|
||||||
type APIServer struct {
|
type APIServer struct {
|
||||||
InsecureBindAddress util.IP
|
InsecureBindAddress net.IP
|
||||||
InsecurePort int
|
InsecurePort int
|
||||||
BindAddress util.IP
|
BindAddress net.IP
|
||||||
AdvertiseAddress util.IP
|
AdvertiseAddress net.IP
|
||||||
SecurePort int
|
SecurePort int
|
||||||
ExternalHost string
|
ExternalHost string
|
||||||
APIRate float32
|
APIRate float32
|
||||||
@ -114,8 +114,8 @@ type APIServer struct {
|
|||||||
func NewAPIServer() *APIServer {
|
func NewAPIServer() *APIServer {
|
||||||
s := APIServer{
|
s := APIServer{
|
||||||
InsecurePort: 8080,
|
InsecurePort: 8080,
|
||||||
InsecureBindAddress: util.IP(net.ParseIP("127.0.0.1")),
|
InsecureBindAddress: net.ParseIP("127.0.0.1"),
|
||||||
BindAddress: util.IP(net.ParseIP("0.0.0.0")),
|
BindAddress: net.ParseIP("0.0.0.0"),
|
||||||
SecurePort: 6443,
|
SecurePort: 6443,
|
||||||
APIRate: 10.0,
|
APIRate: 10.0,
|
||||||
APIBurst: 200,
|
APIBurst: 200,
|
||||||
@ -151,20 +151,20 @@ func (s *APIServer) AddFlags(fs *pflag.FlagSet) {
|
|||||||
"the cluster and that port 443 on the cluster's public address is proxied to this "+
|
"the cluster and that port 443 on the cluster's public address is proxied to this "+
|
||||||
"port. This is performed by nginx in the default setup.")
|
"port. This is performed by nginx in the default setup.")
|
||||||
fs.IntVar(&s.InsecurePort, "port", s.InsecurePort, "DEPRECATED: see --insecure-port instead")
|
fs.IntVar(&s.InsecurePort, "port", s.InsecurePort, "DEPRECATED: see --insecure-port instead")
|
||||||
fs.Var(&s.InsecureBindAddress, "insecure-bind-address", ""+
|
fs.IPVar(&s.InsecureBindAddress, "insecure-bind-address", s.InsecureBindAddress, ""+
|
||||||
"The IP address on which to serve the --insecure-port (set to 0.0.0.0 for all interfaces). "+
|
"The IP address on which to serve the --insecure-port (set to 0.0.0.0 for all interfaces). "+
|
||||||
"Defaults to localhost.")
|
"Defaults to localhost.")
|
||||||
fs.Var(&s.InsecureBindAddress, "address", "DEPRECATED: see --insecure-bind-address instead")
|
fs.IPVar(&s.InsecureBindAddress, "address", s.InsecureBindAddress, "DEPRECATED: see --insecure-bind-address instead")
|
||||||
fs.Var(&s.BindAddress, "bind-address", ""+
|
fs.IPVar(&s.BindAddress, "bind-address", s.BindAddress, ""+
|
||||||
"The IP address on which to serve the --read-only-port and --secure-port ports. The "+
|
"The IP address on which to serve the --read-only-port and --secure-port ports. The "+
|
||||||
"associated interface(s) must be reachable by the rest of the cluster, and by CLI/web "+
|
"associated interface(s) must be reachable by the rest of the cluster, and by CLI/web "+
|
||||||
"clients. If blank, all interfaces will be used (0.0.0.0).")
|
"clients. If blank, all interfaces will be used (0.0.0.0).")
|
||||||
fs.Var(&s.AdvertiseAddress, "advertise-address", ""+
|
fs.IPVar(&s.AdvertiseAddress, "advertise-address", s.AdvertiseAddress, ""+
|
||||||
"The IP address on which to advertise the apiserver to members of the cluster. This "+
|
"The IP address on which to advertise the apiserver to members of the cluster. This "+
|
||||||
"address must be reachable by the rest of the cluster. If blank, the --bind-address "+
|
"address must be reachable by the rest of the cluster. If blank, the --bind-address "+
|
||||||
"will be used. If --bind-address is unspecified, the host's default interface will "+
|
"will be used. If --bind-address is unspecified, the host's default interface will "+
|
||||||
"be used.")
|
"be used.")
|
||||||
fs.Var(&s.BindAddress, "public-address-override", "DEPRECATED: see --bind-address instead")
|
fs.IPVar(&s.BindAddress, "public-address-override", s.BindAddress, "DEPRECATED: see --bind-address instead")
|
||||||
fs.IntVar(&s.SecurePort, "secure-port", s.SecurePort, ""+
|
fs.IntVar(&s.SecurePort, "secure-port", s.SecurePort, ""+
|
||||||
"The port on which to serve HTTPS with authentication and authorization. If 0, "+
|
"The port on which to serve HTTPS with authentication and authorization. If 0, "+
|
||||||
"don't serve HTTPS at all.")
|
"don't serve HTTPS at all.")
|
||||||
@ -257,7 +257,7 @@ func (s *APIServer) Run(_ []string) error {
|
|||||||
// If advertise-address is not specified, use bind-address. If bind-address
|
// If advertise-address is not specified, use bind-address. If bind-address
|
||||||
// is also unset (or 0.0.0.0), setDefaults() in pkg/master/master.go will
|
// is also unset (or 0.0.0.0), setDefaults() in pkg/master/master.go will
|
||||||
// do the right thing and use the host's default interface.
|
// do the right thing and use the host's default interface.
|
||||||
if s.AdvertiseAddress == nil || net.IP(s.AdvertiseAddress).IsUnspecified() {
|
if s.AdvertiseAddress == nil || s.AdvertiseAddress.IsUnspecified() {
|
||||||
s.AdvertiseAddress = s.BindAddress
|
s.AdvertiseAddress = s.BindAddress
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -394,7 +394,7 @@ func (s *APIServer) Run(_ []string) error {
|
|||||||
ExpAPIPrefix: s.ExpAPIPrefix,
|
ExpAPIPrefix: s.ExpAPIPrefix,
|
||||||
CorsAllowedOriginList: s.CorsAllowedOriginList,
|
CorsAllowedOriginList: s.CorsAllowedOriginList,
|
||||||
ReadWritePort: s.SecurePort,
|
ReadWritePort: s.SecurePort,
|
||||||
PublicAddress: net.IP(s.AdvertiseAddress),
|
PublicAddress: s.AdvertiseAddress,
|
||||||
Authenticator: authenticator,
|
Authenticator: authenticator,
|
||||||
SupportsBasicAuth: len(s.BasicAuthFile) > 0,
|
SupportsBasicAuth: len(s.BasicAuthFile) > 0,
|
||||||
Authorizer: authorizer,
|
Authorizer: authorizer,
|
||||||
|
@ -56,7 +56,7 @@ import (
|
|||||||
// CMServer is the main context object for the controller manager.
|
// CMServer is the main context object for the controller manager.
|
||||||
type CMServer struct {
|
type CMServer struct {
|
||||||
Port int
|
Port int
|
||||||
Address util.IP
|
Address net.IP
|
||||||
CloudProvider string
|
CloudProvider string
|
||||||
CloudConfigFile string
|
CloudConfigFile string
|
||||||
ConcurrentEndpointSyncs int
|
ConcurrentEndpointSyncs int
|
||||||
@ -90,7 +90,7 @@ type CMServer struct {
|
|||||||
func NewCMServer() *CMServer {
|
func NewCMServer() *CMServer {
|
||||||
s := CMServer{
|
s := CMServer{
|
||||||
Port: ports.ControllerManagerPort,
|
Port: ports.ControllerManagerPort,
|
||||||
Address: util.IP(net.ParseIP("127.0.0.1")),
|
Address: net.ParseIP("127.0.0.1"),
|
||||||
ConcurrentEndpointSyncs: 5,
|
ConcurrentEndpointSyncs: 5,
|
||||||
ConcurrentRCSyncs: 5,
|
ConcurrentRCSyncs: 5,
|
||||||
ServiceSyncPeriod: 5 * time.Minute,
|
ServiceSyncPeriod: 5 * time.Minute,
|
||||||
@ -108,7 +108,7 @@ func NewCMServer() *CMServer {
|
|||||||
// AddFlags adds flags for a specific CMServer to the specified FlagSet
|
// AddFlags adds flags for a specific CMServer to the specified FlagSet
|
||||||
func (s *CMServer) AddFlags(fs *pflag.FlagSet) {
|
func (s *CMServer) AddFlags(fs *pflag.FlagSet) {
|
||||||
fs.IntVar(&s.Port, "port", s.Port, "The port that the controller-manager's http service runs on")
|
fs.IntVar(&s.Port, "port", s.Port, "The port that the controller-manager's http service runs on")
|
||||||
fs.Var(&s.Address, "address", "The IP address to serve on (set to 0.0.0.0 for all interfaces)")
|
fs.IPVar(&s.Address, "address", s.Address, "The IP address to serve on (set to 0.0.0.0 for all interfaces)")
|
||||||
fs.StringVar(&s.CloudProvider, "cloud-provider", s.CloudProvider, "The provider for cloud services. Empty string for no provider.")
|
fs.StringVar(&s.CloudProvider, "cloud-provider", s.CloudProvider, "The provider for cloud services. Empty string for no provider.")
|
||||||
fs.StringVar(&s.CloudConfigFile, "cloud-config", s.CloudConfigFile, "The path to the cloud provider configuration file. Empty string for no configuration file.")
|
fs.StringVar(&s.CloudConfigFile, "cloud-config", s.CloudConfigFile, "The path to the cloud provider configuration file. Empty string for no configuration file.")
|
||||||
fs.IntVar(&s.ConcurrentEndpointSyncs, "concurrent-endpoint-syncs", s.ConcurrentEndpointSyncs, "The number of endpoint syncing operations that will be done concurrently. Larger number = faster endpoint updating, but more CPU (and network) load")
|
fs.IntVar(&s.ConcurrentEndpointSyncs, "concurrent-endpoint-syncs", s.ConcurrentEndpointSyncs, "The number of endpoint syncing operations that will be done concurrently. Larger number = faster endpoint updating, but more CPU (and network) load")
|
||||||
|
@ -42,9 +42,9 @@ import (
|
|||||||
|
|
||||||
// ProxyServer contains configures and runs a Kubernetes proxy server
|
// ProxyServer contains configures and runs a Kubernetes proxy server
|
||||||
type ProxyServer struct {
|
type ProxyServer struct {
|
||||||
BindAddress util.IP
|
BindAddress net.IP
|
||||||
HealthzPort int
|
HealthzPort int
|
||||||
HealthzBindAddress util.IP
|
HealthzBindAddress net.IP
|
||||||
OOMScoreAdj int
|
OOMScoreAdj int
|
||||||
ResourceContainer string
|
ResourceContainer string
|
||||||
Master string
|
Master string
|
||||||
@ -55,9 +55,9 @@ type ProxyServer struct {
|
|||||||
// NewProxyServer creates a new ProxyServer object with default parameters
|
// NewProxyServer creates a new ProxyServer object with default parameters
|
||||||
func NewProxyServer() *ProxyServer {
|
func NewProxyServer() *ProxyServer {
|
||||||
return &ProxyServer{
|
return &ProxyServer{
|
||||||
BindAddress: util.IP(net.ParseIP("0.0.0.0")),
|
BindAddress: net.ParseIP("0.0.0.0"),
|
||||||
HealthzPort: 10249,
|
HealthzPort: 10249,
|
||||||
HealthzBindAddress: util.IP(net.ParseIP("127.0.0.1")),
|
HealthzBindAddress: net.ParseIP("127.0.0.1"),
|
||||||
OOMScoreAdj: qos.KubeProxyOomScoreAdj,
|
OOMScoreAdj: qos.KubeProxyOomScoreAdj,
|
||||||
ResourceContainer: "/kube-proxy",
|
ResourceContainer: "/kube-proxy",
|
||||||
}
|
}
|
||||||
@ -65,10 +65,10 @@ func NewProxyServer() *ProxyServer {
|
|||||||
|
|
||||||
// AddFlags adds flags for a specific ProxyServer to the specified FlagSet
|
// AddFlags adds flags for a specific ProxyServer to the specified FlagSet
|
||||||
func (s *ProxyServer) AddFlags(fs *pflag.FlagSet) {
|
func (s *ProxyServer) AddFlags(fs *pflag.FlagSet) {
|
||||||
fs.Var(&s.BindAddress, "bind-address", "The IP address for the proxy server to serve on (set to 0.0.0.0 for all interfaces)")
|
fs.IPVar(&s.BindAddress, "bind-address", s.BindAddress, "The IP address for the proxy server to serve on (set to 0.0.0.0 for all interfaces)")
|
||||||
fs.StringVar(&s.Master, "master", s.Master, "The address of the Kubernetes API server (overrides any value in kubeconfig)")
|
fs.StringVar(&s.Master, "master", s.Master, "The address of the Kubernetes API server (overrides any value in kubeconfig)")
|
||||||
fs.IntVar(&s.HealthzPort, "healthz-port", s.HealthzPort, "The port to bind the health check server. Use 0 to disable.")
|
fs.IntVar(&s.HealthzPort, "healthz-port", s.HealthzPort, "The port to bind the health check server. Use 0 to disable.")
|
||||||
fs.Var(&s.HealthzBindAddress, "healthz-bind-address", "The IP address for the health check server to serve on, defaulting to 127.0.0.1 (set to 0.0.0.0 for all interfaces)")
|
fs.IPVar(&s.HealthzBindAddress, "healthz-bind-address", s.HealthzBindAddress, "The IP address for the health check server to serve on, defaulting to 127.0.0.1 (set to 0.0.0.0 for all interfaces)")
|
||||||
fs.IntVar(&s.OOMScoreAdj, "oom-score-adj", s.OOMScoreAdj, "The oom_score_adj value for kube-proxy process. Values must be within the range [-1000, 1000]")
|
fs.IntVar(&s.OOMScoreAdj, "oom-score-adj", s.OOMScoreAdj, "The oom_score_adj value for kube-proxy process. Values must be within the range [-1000, 1000]")
|
||||||
fs.StringVar(&s.ResourceContainer, "resource-container", s.ResourceContainer, "Absolute name of the resource-only container to create and run the Kube-proxy in (Default: /kube-proxy).")
|
fs.StringVar(&s.ResourceContainer, "resource-container", s.ResourceContainer, "Absolute name of the resource-only container to create and run the Kube-proxy in (Default: /kube-proxy).")
|
||||||
fs.StringVar(&s.Kubeconfig, "kubeconfig", s.Kubeconfig, "Path to kubeconfig file with authorization information (the master location is set by the master flag).")
|
fs.StringVar(&s.Kubeconfig, "kubeconfig", s.Kubeconfig, "Path to kubeconfig file with authorization information (the master location is set by the master flag).")
|
||||||
@ -94,11 +94,11 @@ func (s *ProxyServer) Run(_ []string) error {
|
|||||||
endpointsConfig := config.NewEndpointsConfig()
|
endpointsConfig := config.NewEndpointsConfig()
|
||||||
|
|
||||||
protocol := iptables.ProtocolIpv4
|
protocol := iptables.ProtocolIpv4
|
||||||
if net.IP(s.BindAddress).To4() == nil {
|
if s.BindAddress.To4() == nil {
|
||||||
protocol = iptables.ProtocolIpv6
|
protocol = iptables.ProtocolIpv6
|
||||||
}
|
}
|
||||||
loadBalancer := userspace.NewLoadBalancerRR()
|
loadBalancer := userspace.NewLoadBalancerRR()
|
||||||
proxier, err := userspace.NewProxier(loadBalancer, net.IP(s.BindAddress), iptables.New(exec.New(), protocol), s.PortRange)
|
proxier, err := userspace.NewProxier(loadBalancer, s.BindAddress, iptables.New(exec.New(), protocol), s.PortRange)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
glog.Fatalf("Unable to create proxer: %v", err)
|
glog.Fatalf("Unable to create proxer: %v", err)
|
||||||
}
|
}
|
||||||
|
@ -73,7 +73,7 @@ type KubeletServer struct {
|
|||||||
ManifestURL string
|
ManifestURL string
|
||||||
ManifestURLHeader string
|
ManifestURLHeader string
|
||||||
EnableServer bool
|
EnableServer bool
|
||||||
Address util.IP
|
Address net.IP
|
||||||
Port uint
|
Port uint
|
||||||
ReadOnlyPort uint
|
ReadOnlyPort uint
|
||||||
HostnameOverride string
|
HostnameOverride string
|
||||||
@ -93,14 +93,14 @@ type KubeletServer struct {
|
|||||||
KubeConfig util.StringFlag
|
KubeConfig util.StringFlag
|
||||||
CadvisorPort uint
|
CadvisorPort uint
|
||||||
HealthzPort int
|
HealthzPort int
|
||||||
HealthzBindAddress util.IP
|
HealthzBindAddress net.IP
|
||||||
OOMScoreAdj int
|
OOMScoreAdj int
|
||||||
APIServerList []string
|
APIServerList []string
|
||||||
RegisterNode bool
|
RegisterNode bool
|
||||||
StandaloneMode bool
|
StandaloneMode bool
|
||||||
ClusterDomain string
|
ClusterDomain string
|
||||||
MasterServiceNamespace string
|
MasterServiceNamespace string
|
||||||
ClusterDNS util.IP
|
ClusterDNS net.IP
|
||||||
StreamingConnectionIdleTimeout time.Duration
|
StreamingConnectionIdleTimeout time.Duration
|
||||||
ImageGCHighThresholdPercent int
|
ImageGCHighThresholdPercent int
|
||||||
ImageGCLowThresholdPercent int
|
ImageGCLowThresholdPercent int
|
||||||
@ -153,7 +153,7 @@ func NewKubeletServer() *KubeletServer {
|
|||||||
FileCheckFrequency: 20 * time.Second,
|
FileCheckFrequency: 20 * time.Second,
|
||||||
HTTPCheckFrequency: 20 * time.Second,
|
HTTPCheckFrequency: 20 * time.Second,
|
||||||
EnableServer: true,
|
EnableServer: true,
|
||||||
Address: util.IP(net.ParseIP("0.0.0.0")),
|
Address: net.ParseIP("0.0.0.0"),
|
||||||
Port: ports.KubeletPort,
|
Port: ports.KubeletPort,
|
||||||
ReadOnlyPort: ports.KubeletReadOnlyPort,
|
ReadOnlyPort: ports.KubeletReadOnlyPort,
|
||||||
PodInfraContainerImage: dockertools.PodInfraContainerImage,
|
PodInfraContainerImage: dockertools.PodInfraContainerImage,
|
||||||
@ -167,7 +167,7 @@ func NewKubeletServer() *KubeletServer {
|
|||||||
KubeConfig: util.NewStringFlag("/var/lib/kubelet/kubeconfig"),
|
KubeConfig: util.NewStringFlag("/var/lib/kubelet/kubeconfig"),
|
||||||
CadvisorPort: 4194,
|
CadvisorPort: 4194,
|
||||||
HealthzPort: 10248,
|
HealthzPort: 10248,
|
||||||
HealthzBindAddress: util.IP(net.ParseIP("127.0.0.1")),
|
HealthzBindAddress: net.ParseIP("127.0.0.1"),
|
||||||
RegisterNode: true, // will be ignored if no apiserver is configured
|
RegisterNode: true, // will be ignored if no apiserver is configured
|
||||||
OOMScoreAdj: qos.KubeletOomScoreAdj,
|
OOMScoreAdj: qos.KubeletOomScoreAdj,
|
||||||
MasterServiceNamespace: api.NamespaceDefault,
|
MasterServiceNamespace: api.NamespaceDefault,
|
||||||
@ -198,7 +198,7 @@ func (s *KubeletServer) AddFlags(fs *pflag.FlagSet) {
|
|||||||
fs.StringVar(&s.ManifestURL, "manifest-url", s.ManifestURL, "URL for accessing the container manifest")
|
fs.StringVar(&s.ManifestURL, "manifest-url", s.ManifestURL, "URL for accessing the container manifest")
|
||||||
fs.StringVar(&s.ManifestURLHeader, "manifest-url-header", s.ManifestURLHeader, "HTTP header to use when accessing the manifest URL, with the key separated from the value with a ':', as in 'key:value'")
|
fs.StringVar(&s.ManifestURLHeader, "manifest-url-header", s.ManifestURLHeader, "HTTP header to use when accessing the manifest URL, with the key separated from the value with a ':', as in 'key:value'")
|
||||||
fs.BoolVar(&s.EnableServer, "enable-server", s.EnableServer, "Enable the Kubelet's server")
|
fs.BoolVar(&s.EnableServer, "enable-server", s.EnableServer, "Enable the Kubelet's server")
|
||||||
fs.Var(&s.Address, "address", "The IP address for the Kubelet to serve on (set to 0.0.0.0 for all interfaces)")
|
fs.IPVar(&s.Address, "address", s.Address, "The IP address for the Kubelet to serve on (set to 0.0.0.0 for all interfaces)")
|
||||||
fs.UintVar(&s.Port, "port", s.Port, "The port for the Kubelet to serve on. Note that \"kubectl logs\" will not work if you set this flag.") // see #9325
|
fs.UintVar(&s.Port, "port", s.Port, "The port for the Kubelet to serve on. Note that \"kubectl logs\" will not work if you set this flag.") // see #9325
|
||||||
fs.UintVar(&s.ReadOnlyPort, "read-only-port", s.ReadOnlyPort, "The read-only port for the Kubelet to serve on (set to 0 to disable)")
|
fs.UintVar(&s.ReadOnlyPort, "read-only-port", s.ReadOnlyPort, "The read-only port for the Kubelet to serve on (set to 0 to disable)")
|
||||||
fs.StringVar(&s.TLSCertFile, "tls-cert-file", s.TLSCertFile, ""+
|
fs.StringVar(&s.TLSCertFile, "tls-cert-file", s.TLSCertFile, ""+
|
||||||
@ -226,13 +226,13 @@ func (s *KubeletServer) AddFlags(fs *pflag.FlagSet) {
|
|||||||
fs.Var(&s.KubeConfig, "kubeconfig", "Path to a kubeconfig file, specifying how to authenticate to API server (the master location is set by the api-servers flag).")
|
fs.Var(&s.KubeConfig, "kubeconfig", "Path to a kubeconfig file, specifying how to authenticate to API server (the master location is set by the api-servers flag).")
|
||||||
fs.UintVar(&s.CadvisorPort, "cadvisor-port", s.CadvisorPort, "The port of the localhost cAdvisor endpoint")
|
fs.UintVar(&s.CadvisorPort, "cadvisor-port", s.CadvisorPort, "The port of the localhost cAdvisor endpoint")
|
||||||
fs.IntVar(&s.HealthzPort, "healthz-port", s.HealthzPort, "The port of the localhost healthz endpoint")
|
fs.IntVar(&s.HealthzPort, "healthz-port", s.HealthzPort, "The port of the localhost healthz endpoint")
|
||||||
fs.Var(&s.HealthzBindAddress, "healthz-bind-address", "The IP address for the healthz server to serve on, defaulting to 127.0.0.1 (set to 0.0.0.0 for all interfaces)")
|
fs.IPVar(&s.HealthzBindAddress, "healthz-bind-address", s.HealthzBindAddress, "The IP address for the healthz server to serve on, defaulting to 127.0.0.1 (set to 0.0.0.0 for all interfaces)")
|
||||||
fs.IntVar(&s.OOMScoreAdj, "oom-score-adj", s.OOMScoreAdj, "The oom-score-adj value for kubelet process. Values must be within the range [-1000, 1000]")
|
fs.IntVar(&s.OOMScoreAdj, "oom-score-adj", s.OOMScoreAdj, "The oom-score-adj value for kubelet process. Values must be within the range [-1000, 1000]")
|
||||||
fs.StringSliceVar(&s.APIServerList, "api-servers", []string{}, "List of Kubernetes API servers for publishing events, and reading pods and services. (ip:port), comma separated.")
|
fs.StringSliceVar(&s.APIServerList, "api-servers", []string{}, "List of Kubernetes API servers for publishing events, and reading pods and services. (ip:port), comma separated.")
|
||||||
fs.BoolVar(&s.RegisterNode, "register-node", s.RegisterNode, "Register the node with the apiserver (defaults to true if --api-server is set)")
|
fs.BoolVar(&s.RegisterNode, "register-node", s.RegisterNode, "Register the node with the apiserver (defaults to true if --api-server is set)")
|
||||||
fs.StringVar(&s.ClusterDomain, "cluster-domain", s.ClusterDomain, "Domain for this cluster. If set, kubelet will configure all containers to search this domain in addition to the host's search domains")
|
fs.StringVar(&s.ClusterDomain, "cluster-domain", s.ClusterDomain, "Domain for this cluster. If set, kubelet will configure all containers to search this domain in addition to the host's search domains")
|
||||||
fs.StringVar(&s.MasterServiceNamespace, "master-service-namespace", s.MasterServiceNamespace, "The namespace from which the kubernetes master services should be injected into pods")
|
fs.StringVar(&s.MasterServiceNamespace, "master-service-namespace", s.MasterServiceNamespace, "The namespace from which the kubernetes master services should be injected into pods")
|
||||||
fs.Var(&s.ClusterDNS, "cluster-dns", "IP address for a cluster DNS server. If set, kubelet will configure all containers to use this for DNS resolution in addition to the host's DNS servers")
|
fs.IPVar(&s.ClusterDNS, "cluster-dns", s.ClusterDNS, "IP address for a cluster DNS server. If set, kubelet will configure all containers to use this for DNS resolution in addition to the host's DNS servers")
|
||||||
fs.DurationVar(&s.StreamingConnectionIdleTimeout, "streaming-connection-idle-timeout", 0, "Maximum time a streaming connection can be idle before the connection is automatically closed. Example: '5m'")
|
fs.DurationVar(&s.StreamingConnectionIdleTimeout, "streaming-connection-idle-timeout", 0, "Maximum time a streaming connection can be idle before the connection is automatically closed. Example: '5m'")
|
||||||
fs.DurationVar(&s.NodeStatusUpdateFrequency, "node-status-update-frequency", s.NodeStatusUpdateFrequency, "Specifies how often kubelet posts node status to master. Note: be cautious when changing the constant, it must work with nodeMonitorGracePeriod in nodecontroller. Default: 10s")
|
fs.DurationVar(&s.NodeStatusUpdateFrequency, "node-status-update-frequency", s.NodeStatusUpdateFrequency, "Specifies how often kubelet posts node status to master. Note: be cautious when changing the constant, it must work with nodeMonitorGracePeriod in nodecontroller. Default: 10s")
|
||||||
fs.IntVar(&s.ImageGCHighThresholdPercent, "image-gc-high-threshold", s.ImageGCHighThresholdPercent, "The percent of disk usage after which image garbage collection is always run. Default: 90%%")
|
fs.IntVar(&s.ImageGCHighThresholdPercent, "image-gc-high-threshold", s.ImageGCHighThresholdPercent, "The percent of disk usage after which image garbage collection is always run. Default: 90%%")
|
||||||
@ -568,7 +568,7 @@ func SimpleKubelet(client *client.Client,
|
|||||||
ManifestURL: manifestURL,
|
ManifestURL: manifestURL,
|
||||||
PodInfraContainerImage: dockertools.PodInfraContainerImage,
|
PodInfraContainerImage: dockertools.PodInfraContainerImage,
|
||||||
Port: port,
|
Port: port,
|
||||||
Address: util.IP(net.ParseIP(address)),
|
Address: net.ParseIP(address),
|
||||||
EnableServer: true,
|
EnableServer: true,
|
||||||
EnableDebuggingHandlers: true,
|
EnableDebuggingHandlers: true,
|
||||||
HTTPCheckFrequency: 1 * time.Second,
|
HTTPCheckFrequency: 1 * time.Second,
|
||||||
@ -672,12 +672,12 @@ func startKubelet(k KubeletBootstrap, podCfg *config.PodConfig, kc *KubeletConfi
|
|||||||
// start the kubelet server
|
// start the kubelet server
|
||||||
if kc.EnableServer {
|
if kc.EnableServer {
|
||||||
go util.Forever(func() {
|
go util.Forever(func() {
|
||||||
k.ListenAndServe(net.IP(kc.Address), kc.Port, kc.TLSOptions, kc.EnableDebuggingHandlers)
|
k.ListenAndServe(kc.Address, kc.Port, kc.TLSOptions, kc.EnableDebuggingHandlers)
|
||||||
}, 0)
|
}, 0)
|
||||||
}
|
}
|
||||||
if kc.ReadOnlyPort > 0 {
|
if kc.ReadOnlyPort > 0 {
|
||||||
go util.Forever(func() {
|
go util.Forever(func() {
|
||||||
k.ListenAndServeReadOnly(net.IP(kc.Address), kc.ReadOnlyPort)
|
k.ListenAndServeReadOnly(kc.Address, kc.ReadOnlyPort)
|
||||||
}, 0)
|
}, 0)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -710,7 +710,7 @@ type KubeletConfig struct {
|
|||||||
KubeClient *client.Client
|
KubeClient *client.Client
|
||||||
DockerClient dockertools.DockerInterface
|
DockerClient dockertools.DockerInterface
|
||||||
CadvisorInterface cadvisor.Interface
|
CadvisorInterface cadvisor.Interface
|
||||||
Address util.IP
|
Address net.IP
|
||||||
AllowPrivileged bool
|
AllowPrivileged bool
|
||||||
HostNetworkSources []string
|
HostNetworkSources []string
|
||||||
HostnameOverride string
|
HostnameOverride string
|
||||||
@ -732,7 +732,7 @@ type KubeletConfig struct {
|
|||||||
RegisterNode bool
|
RegisterNode bool
|
||||||
StandaloneMode bool
|
StandaloneMode bool
|
||||||
ClusterDomain string
|
ClusterDomain string
|
||||||
ClusterDNS util.IP
|
ClusterDNS net.IP
|
||||||
EnableServer bool
|
EnableServer bool
|
||||||
EnableDebuggingHandlers bool
|
EnableDebuggingHandlers bool
|
||||||
Port uint
|
Port uint
|
||||||
@ -795,7 +795,7 @@ func createAndInitKubelet(kc *KubeletConfig) (k KubeletBootstrap, pc *config.Pod
|
|||||||
kc.RegisterNode,
|
kc.RegisterNode,
|
||||||
kc.StandaloneMode,
|
kc.StandaloneMode,
|
||||||
kc.ClusterDomain,
|
kc.ClusterDomain,
|
||||||
net.IP(kc.ClusterDNS),
|
kc.ClusterDNS,
|
||||||
kc.MasterServiceNamespace,
|
kc.MasterServiceNamespace,
|
||||||
kc.VolumePlugins,
|
kc.VolumePlugins,
|
||||||
kc.NetworkPlugins,
|
kc.NetworkPlugins,
|
||||||
|
@ -96,7 +96,7 @@ func NewKubeletExecutorServer() *KubeletExecutorServer {
|
|||||||
} else {
|
} else {
|
||||||
k.RootDirectory = pwd // mesos sandbox dir
|
k.RootDirectory = pwd // mesos sandbox dir
|
||||||
}
|
}
|
||||||
k.Address = util.IP(net.ParseIP(defaultBindingAddress()))
|
k.Address = net.ParseIP(defaultBindingAddress())
|
||||||
k.ShutdownFD = -1 // indicates unspecified FD
|
k.ShutdownFD = -1 // indicates unspecified FD
|
||||||
|
|
||||||
return k
|
return k
|
||||||
@ -404,7 +404,7 @@ func (ks *KubeletExecutorServer) createAndInitKubelet(
|
|||||||
dconfig := bindings.DriverConfig{
|
dconfig := bindings.DriverConfig{
|
||||||
Executor: exec,
|
Executor: exec,
|
||||||
HostnameOverride: ks.HostnameOverride,
|
HostnameOverride: ks.HostnameOverride,
|
||||||
BindingAddress: net.IP(ks.Address),
|
BindingAddress: ks.Address,
|
||||||
}
|
}
|
||||||
if driver, err := bindings.NewMesosExecutorDriver(dconfig); err != nil {
|
if driver, err := bindings.NewMesosExecutorDriver(dconfig); err != nil {
|
||||||
log.Fatalf("failed to create executor driver: %v", err)
|
log.Fatalf("failed to create executor driver: %v", err)
|
||||||
@ -427,7 +427,7 @@ type kubeletExecutor struct {
|
|||||||
*kubelet.Kubelet
|
*kubelet.Kubelet
|
||||||
initialize sync.Once
|
initialize sync.Once
|
||||||
driver bindings.ExecutorDriver
|
driver bindings.ExecutorDriver
|
||||||
address util.IP
|
address net.IP
|
||||||
dockerClient dockertools.DockerInterface
|
dockerClient dockertools.DockerInterface
|
||||||
hks hyperkube.Interface
|
hks hyperkube.Interface
|
||||||
kubeletFinished chan struct{} // closed once kubelet.Run() returns
|
kubeletFinished chan struct{} // closed once kubelet.Run() returns
|
||||||
|
@ -66,7 +66,6 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/master/ports"
|
"k8s.io/kubernetes/pkg/master/ports"
|
||||||
etcdstorage "k8s.io/kubernetes/pkg/storage/etcd"
|
etcdstorage "k8s.io/kubernetes/pkg/storage/etcd"
|
||||||
"k8s.io/kubernetes/pkg/tools"
|
"k8s.io/kubernetes/pkg/tools"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@ -82,7 +81,7 @@ const (
|
|||||||
|
|
||||||
type SchedulerServer struct {
|
type SchedulerServer struct {
|
||||||
Port int
|
Port int
|
||||||
Address util.IP
|
Address net.IP
|
||||||
EnableProfiling bool
|
EnableProfiling bool
|
||||||
AuthPath string
|
AuthPath string
|
||||||
APIServerList []string
|
APIServerList []string
|
||||||
@ -125,10 +124,10 @@ type SchedulerServer struct {
|
|||||||
FrameworkWebURI string
|
FrameworkWebURI string
|
||||||
HA bool
|
HA bool
|
||||||
AdvertisedAddress string
|
AdvertisedAddress string
|
||||||
ServiceAddress util.IP
|
ServiceAddress net.IP
|
||||||
HADomain string
|
HADomain string
|
||||||
KMPath string
|
KMPath string
|
||||||
ClusterDNS util.IP
|
ClusterDNS net.IP
|
||||||
ClusterDomain string
|
ClusterDomain string
|
||||||
KubeletRootDirectory string
|
KubeletRootDirectory string
|
||||||
KubeletDockerEndpoint string
|
KubeletDockerEndpoint string
|
||||||
@ -157,7 +156,7 @@ type schedulerProcessInterface interface {
|
|||||||
func NewSchedulerServer() *SchedulerServer {
|
func NewSchedulerServer() *SchedulerServer {
|
||||||
s := SchedulerServer{
|
s := SchedulerServer{
|
||||||
Port: ports.SchedulerPort,
|
Port: ports.SchedulerPort,
|
||||||
Address: util.IP(net.ParseIP("127.0.0.1")),
|
Address: net.ParseIP("127.0.0.1"),
|
||||||
FailoverTimeout: time.Duration((1 << 62) - 1).Seconds(),
|
FailoverTimeout: time.Duration((1 << 62) - 1).Seconds(),
|
||||||
|
|
||||||
RunProxy: true,
|
RunProxy: true,
|
||||||
@ -196,7 +195,7 @@ func NewSchedulerServer() *SchedulerServer {
|
|||||||
|
|
||||||
func (s *SchedulerServer) addCoreFlags(fs *pflag.FlagSet) {
|
func (s *SchedulerServer) addCoreFlags(fs *pflag.FlagSet) {
|
||||||
fs.IntVar(&s.Port, "port", s.Port, "The port that the scheduler's http service runs on")
|
fs.IntVar(&s.Port, "port", s.Port, "The port that the scheduler's http service runs on")
|
||||||
fs.Var(&s.Address, "address", "The IP address to serve on (set to 0.0.0.0 for all interfaces)")
|
fs.IPVar(&s.Address, "address", s.Address, "The IP address to serve on (set to 0.0.0.0 for all interfaces)")
|
||||||
fs.BoolVar(&s.EnableProfiling, "profiling", s.EnableProfiling, "Enable profiling via web interface host:port/debug/pprof/")
|
fs.BoolVar(&s.EnableProfiling, "profiling", s.EnableProfiling, "Enable profiling via web interface host:port/debug/pprof/")
|
||||||
fs.StringSliceVar(&s.APIServerList, "api-servers", s.APIServerList, "List of Kubernetes API servers for publishing events, and reading pods and services. (ip:port), comma separated.")
|
fs.StringSliceVar(&s.APIServerList, "api-servers", s.APIServerList, "List of Kubernetes API servers for publishing events, and reading pods and services. (ip:port), comma separated.")
|
||||||
fs.StringVar(&s.AuthPath, "auth-path", s.AuthPath, "Path to .kubernetes_auth file, specifying how to authenticate to API server.")
|
fs.StringVar(&s.AuthPath, "auth-path", s.AuthPath, "Path to .kubernetes_auth file, specifying how to authenticate to API server.")
|
||||||
@ -204,7 +203,7 @@ func (s *SchedulerServer) addCoreFlags(fs *pflag.FlagSet) {
|
|||||||
fs.StringVar(&s.EtcdConfigFile, "etcd-config", s.EtcdConfigFile, "The config file for the etcd client. Mutually exclusive with --etcd-servers.")
|
fs.StringVar(&s.EtcdConfigFile, "etcd-config", s.EtcdConfigFile, "The config file for the etcd client. Mutually exclusive with --etcd-servers.")
|
||||||
fs.BoolVar(&s.AllowPrivileged, "allow-privileged", s.AllowPrivileged, "If true, allow privileged containers.")
|
fs.BoolVar(&s.AllowPrivileged, "allow-privileged", s.AllowPrivileged, "If true, allow privileged containers.")
|
||||||
fs.StringVar(&s.ClusterDomain, "cluster-domain", s.ClusterDomain, "Domain for this cluster. If set, kubelet will configure all containers to search this domain in addition to the host's search domains")
|
fs.StringVar(&s.ClusterDomain, "cluster-domain", s.ClusterDomain, "Domain for this cluster. If set, kubelet will configure all containers to search this domain in addition to the host's search domains")
|
||||||
fs.Var(&s.ClusterDNS, "cluster-dns", "IP address for a cluster DNS server. If set, kubelet will configure all containers to use this for DNS resolution in addition to the host's DNS servers")
|
fs.IPVar(&s.ClusterDNS, "cluster-dns", s.ClusterDNS, "IP address for a cluster DNS server. If set, kubelet will configure all containers to use this for DNS resolution in addition to the host's DNS servers")
|
||||||
fs.StringVar(&s.StaticPodsConfigPath, "static-pods-config", s.StaticPodsConfigPath, "Path for specification of static pods. Path should point to dir containing the staticPods configuration files. Defaults to none.")
|
fs.StringVar(&s.StaticPodsConfigPath, "static-pods-config", s.StaticPodsConfigPath, "Path for specification of static pods. Path should point to dir containing the staticPods configuration files. Defaults to none.")
|
||||||
|
|
||||||
fs.StringVar(&s.MesosMaster, "mesos-master", s.MesosMaster, "Location of the Mesos master. The format is a comma-delimited list of of hosts like zk://host1:port,host2:port/mesos. If using ZooKeeper, pay particular attention to the leading zk:// and trailing /mesos! If not using ZooKeeper, standard URLs like http://localhost are also acceptable.")
|
fs.StringVar(&s.MesosMaster, "mesos-master", s.MesosMaster, "Location of the Mesos master. The format is a comma-delimited list of of hosts like zk://host1:port,host2:port/mesos. If using ZooKeeper, pay particular attention to the leading zk:// and trailing /mesos! If not using ZooKeeper, standard URLs like http://localhost are also acceptable.")
|
||||||
@ -225,7 +224,7 @@ func (s *SchedulerServer) addCoreFlags(fs *pflag.FlagSet) {
|
|||||||
fs.StringVar(&s.FrameworkName, "framework-name", s.FrameworkName, "The framework name to register with Mesos.")
|
fs.StringVar(&s.FrameworkName, "framework-name", s.FrameworkName, "The framework name to register with Mesos.")
|
||||||
fs.StringVar(&s.FrameworkWebURI, "framework-weburi", s.FrameworkWebURI, "A URI that points to a web-based interface for interacting with the framework.")
|
fs.StringVar(&s.FrameworkWebURI, "framework-weburi", s.FrameworkWebURI, "A URI that points to a web-based interface for interacting with the framework.")
|
||||||
fs.StringVar(&s.AdvertisedAddress, "advertised-address", s.AdvertisedAddress, "host:port address that is advertised to clients. May be used to construct artifact download URIs.")
|
fs.StringVar(&s.AdvertisedAddress, "advertised-address", s.AdvertisedAddress, "host:port address that is advertised to clients. May be used to construct artifact download URIs.")
|
||||||
fs.Var(&s.ServiceAddress, "service-address", "The service portal IP address that the scheduler should register with (if unset, chooses randomly)")
|
fs.IPVar(&s.ServiceAddress, "service-address", s.ServiceAddress, "The service portal IP address that the scheduler should register with (if unset, chooses randomly)")
|
||||||
fs.Var(&s.DefaultContainerCPULimit, "default-container-cpu-limit", "Containers without a CPU resource limit are admitted this much CPU shares")
|
fs.Var(&s.DefaultContainerCPULimit, "default-container-cpu-limit", "Containers without a CPU resource limit are admitted this much CPU shares")
|
||||||
fs.Var(&s.DefaultContainerMemLimit, "default-container-mem-limit", "Containers without a memory resource limit are admitted this much amount of memory in MB")
|
fs.Var(&s.DefaultContainerMemLimit, "default-container-mem-limit", "Containers without a memory resource limit are admitted this much amount of memory in MB")
|
||||||
|
|
||||||
@ -662,12 +661,12 @@ func (s *SchedulerServer) bootstrap(hks hyperkube.Interface, sc *schedcfg.Config
|
|||||||
Framework: info,
|
Framework: info,
|
||||||
Master: masterUri,
|
Master: masterUri,
|
||||||
Credential: cred,
|
Credential: cred,
|
||||||
BindingAddress: net.IP(s.Address),
|
BindingAddress: s.Address,
|
||||||
BindingPort: uint16(s.DriverPort),
|
BindingPort: uint16(s.DriverPort),
|
||||||
HostnameOverride: s.HostnameOverride,
|
HostnameOverride: s.HostnameOverride,
|
||||||
WithAuthContext: func(ctx context.Context) context.Context {
|
WithAuthContext: func(ctx context.Context) context.Context {
|
||||||
ctx = auth.WithLoginProvider(ctx, s.MesosAuthProvider)
|
ctx = auth.WithLoginProvider(ctx, s.MesosAuthProvider)
|
||||||
ctx = sasl.WithBindingAddress(ctx, net.IP(s.Address))
|
ctx = sasl.WithBindingAddress(ctx, s.Address)
|
||||||
return ctx
|
return ctx
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -17,30 +17,10 @@ limitations under the License.
|
|||||||
package util
|
package util
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
"net"
|
"net"
|
||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
// IP adapts net.IP for use as a flag.
|
|
||||||
type IP net.IP
|
|
||||||
|
|
||||||
func (ip IP) String() string {
|
|
||||||
return net.IP(ip).String()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (ip *IP) Set(value string) error {
|
|
||||||
*ip = IP(net.ParseIP(strings.TrimSpace(value)))
|
|
||||||
if *ip == nil {
|
|
||||||
return fmt.Errorf("invalid IP address: '%s'", value)
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*IP) Type() string {
|
|
||||||
return "ip"
|
|
||||||
}
|
|
||||||
|
|
||||||
// IPNet adapts net.IPNet for use as a flag.
|
// IPNet adapts net.IPNet for use as a flag.
|
||||||
type IPNet net.IPNet
|
type IPNet net.IPNet
|
||||||
|
|
||||||
|
@ -22,45 +22,6 @@ import (
|
|||||||
flag "github.com/spf13/pflag"
|
flag "github.com/spf13/pflag"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestIP(t *testing.T) {
|
|
||||||
testCases := []struct {
|
|
||||||
input string
|
|
||||||
success bool
|
|
||||||
expected string
|
|
||||||
}{
|
|
||||||
{"0.0.0.0", true, "0.0.0.0"},
|
|
||||||
{" 0.0.0.0 ", true, "0.0.0.0"},
|
|
||||||
{"1.2.3.4", true, "1.2.3.4"},
|
|
||||||
{"127.0.0.1", true, "127.0.0.1"},
|
|
||||||
{"255.255.255.255", true, "255.255.255.255"},
|
|
||||||
{"", false, ""},
|
|
||||||
{"0", false, ""},
|
|
||||||
{"localhost", false, ""},
|
|
||||||
{"0.0.0", false, ""},
|
|
||||||
{"0.0.0.", false, ""},
|
|
||||||
{"0.0.0.0.", false, ""},
|
|
||||||
{"0.0.0.256", false, ""},
|
|
||||||
{"0 . 0 . 0 . 0", false, ""},
|
|
||||||
}
|
|
||||||
|
|
||||||
for i := range testCases {
|
|
||||||
tc := &testCases[i]
|
|
||||||
var f flag.Value = &IP{}
|
|
||||||
err := f.Set(tc.input)
|
|
||||||
if err != nil && tc.success == true {
|
|
||||||
t.Errorf("expected success, got %q", err)
|
|
||||||
continue
|
|
||||||
} else if err == nil && tc.success == false {
|
|
||||||
t.Errorf("expected failure")
|
|
||||||
continue
|
|
||||||
} else if tc.success {
|
|
||||||
if f.String() != tc.expected {
|
|
||||||
t.Errorf("expected %q, got %q", tc.expected, f.String())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestIPNet(t *testing.T) {
|
func TestIPNet(t *testing.T) {
|
||||||
testCases := []struct {
|
testCases := []struct {
|
||||||
input string
|
input string
|
||||||
|
@ -48,7 +48,7 @@ import (
|
|||||||
// SchedulerServer has all the context and params needed to run a Scheduler
|
// SchedulerServer has all the context and params needed to run a Scheduler
|
||||||
type SchedulerServer struct {
|
type SchedulerServer struct {
|
||||||
Port int
|
Port int
|
||||||
Address util.IP
|
Address net.IP
|
||||||
AlgorithmProvider string
|
AlgorithmProvider string
|
||||||
PolicyConfigFile string
|
PolicyConfigFile string
|
||||||
EnableProfiling bool
|
EnableProfiling bool
|
||||||
@ -62,7 +62,7 @@ type SchedulerServer struct {
|
|||||||
func NewSchedulerServer() *SchedulerServer {
|
func NewSchedulerServer() *SchedulerServer {
|
||||||
s := SchedulerServer{
|
s := SchedulerServer{
|
||||||
Port: ports.SchedulerPort,
|
Port: ports.SchedulerPort,
|
||||||
Address: util.IP(net.ParseIP("127.0.0.1")),
|
Address: net.ParseIP("127.0.0.1"),
|
||||||
AlgorithmProvider: factory.DefaultProvider,
|
AlgorithmProvider: factory.DefaultProvider,
|
||||||
}
|
}
|
||||||
return &s
|
return &s
|
||||||
@ -71,7 +71,7 @@ func NewSchedulerServer() *SchedulerServer {
|
|||||||
// AddFlags adds flags for a specific SchedulerServer to the specified FlagSet
|
// AddFlags adds flags for a specific SchedulerServer to the specified FlagSet
|
||||||
func (s *SchedulerServer) AddFlags(fs *pflag.FlagSet) {
|
func (s *SchedulerServer) AddFlags(fs *pflag.FlagSet) {
|
||||||
fs.IntVar(&s.Port, "port", s.Port, "The port that the scheduler's http service runs on")
|
fs.IntVar(&s.Port, "port", s.Port, "The port that the scheduler's http service runs on")
|
||||||
fs.Var(&s.Address, "address", "The IP address to serve on (set to 0.0.0.0 for all interfaces)")
|
fs.IPVar(&s.Address, "address", s.Address, "The IP address to serve on (set to 0.0.0.0 for all interfaces)")
|
||||||
fs.StringVar(&s.AlgorithmProvider, "algorithm-provider", s.AlgorithmProvider, "The scheduling algorithm provider to use, one of: "+factory.ListAlgorithmProviders())
|
fs.StringVar(&s.AlgorithmProvider, "algorithm-provider", s.AlgorithmProvider, "The scheduling algorithm provider to use, one of: "+factory.ListAlgorithmProviders())
|
||||||
fs.StringVar(&s.PolicyConfigFile, "policy-config-file", s.PolicyConfigFile, "File with scheduler policy configuration")
|
fs.StringVar(&s.PolicyConfigFile, "policy-config-file", s.PolicyConfigFile, "File with scheduler policy configuration")
|
||||||
fs.BoolVar(&s.EnableProfiling, "profiling", true, "Enable profiling via web interface host:port/debug/pprof/")
|
fs.BoolVar(&s.EnableProfiling, "profiling", true, "Enable profiling via web interface host:port/debug/pprof/")
|
||||||
|
Loading…
Reference in New Issue
Block a user