|
8 | 8 | "net/http/pprof"
|
9 | 9 | "os"
|
10 | 10 | "path/filepath"
|
| 11 | + "slices" |
11 | 12 | "strings"
|
12 | 13 | "time"
|
13 | 14 |
|
@@ -99,24 +100,25 @@ func main() {
|
99 | 100 | go ctl.Run(stopCh)
|
100 | 101 | go daemon.RunServer(config, ctl)
|
101 | 102 |
|
102 |
| - addr := util.GetDefaultListenAddr() |
| 103 | + addrs := util.GetDefaultListenAddr() |
103 | 104 | if config.EnableVerboseConnCheck {
|
104 |
| - go func() { |
105 |
| - connListenaddr := util.JoinHostPort(addr, config.TCPConnCheckPort) |
106 |
| - if err := util.TCPConnectivityListen(connListenaddr); err != nil { |
107 |
| - util.LogFatalAndExit(err, "failed to start TCP listen on addr %s", addr) |
108 |
| - } |
109 |
| - }() |
110 |
| - |
111 |
| - go func() { |
112 |
| - connListenaddr := util.JoinHostPort(addr, config.UDPConnCheckPort) |
113 |
| - if err := util.UDPConnectivityListen(connListenaddr); err != nil { |
114 |
| - util.LogFatalAndExit(err, "failed to start UDP listen on addr %s", addr) |
115 |
| - } |
116 |
| - }() |
| 105 | + for _, addr := range addrs { |
| 106 | + go func() { |
| 107 | + connListenaddr := util.JoinHostPort(addr, config.TCPConnCheckPort) |
| 108 | + if err := util.TCPConnectivityListen(connListenaddr); err != nil { |
| 109 | + util.LogFatalAndExit(err, "failed to start TCP listen on addr %s", addr) |
| 110 | + } |
| 111 | + }() |
| 112 | + go func() { |
| 113 | + connListenaddr := util.JoinHostPort(addr, config.UDPConnCheckPort) |
| 114 | + if err := util.UDPConnectivityListen(connListenaddr); err != nil { |
| 115 | + util.LogFatalAndExit(err, "failed to start UDP listen on addr %s", addr) |
| 116 | + } |
| 117 | + }() |
| 118 | + } |
117 | 119 | }
|
118 | 120 |
|
119 |
| - servePprofInMetricsServer := config.EnableMetrics && addr == "0.0.0.0" |
| 121 | + servePprofInMetricsServer := config.EnableMetrics && slices.Contains(addrs, "0.0.0.0") |
120 | 122 | if config.EnablePprof && !servePprofInMetricsServer {
|
121 | 123 | mux := http.NewServeMux()
|
122 | 124 | mux.HandleFunc("/debug/pprof/", pprof.Index)
|
@@ -149,15 +151,19 @@ func main() {
|
149 | 151 | if config.EnableMetrics {
|
150 | 152 | daemon.InitMetrics()
|
151 | 153 | metrics.InitKlogMetrics()
|
152 |
| - listenAddr := util.JoinHostPort(addr, config.PprofPort) |
153 |
| - if err = metrics.Run(ctx, nil, listenAddr, config.SecureServing, servePprofInMetricsServer); err != nil { |
154 |
| - util.LogFatalAndExit(err, "failed to run metrics server") |
| 154 | + for _, addr := range addrs { |
| 155 | + listenAddr := util.JoinHostPort(addr, config.PprofPort) |
| 156 | + go func() { |
| 157 | + if err := metrics.Run(ctx, nil, listenAddr, config.SecureServing, servePprofInMetricsServer); err != nil { |
| 158 | + util.LogFatalAndExit(err, "failed to run metrics server") |
| 159 | + } |
| 160 | + }() |
155 | 161 | }
|
156 | 162 | } else {
|
157 | 163 | klog.Info("metrics server is disabled")
|
158 |
| - listerner, err := net.ListenTCP("tcp", &net.TCPAddr{IP: net.ParseIP(addr), Port: int(config.PprofPort)}) |
| 164 | + listerner, err := net.ListenTCP("tcp", &net.TCPAddr{IP: net.ParseIP(addrs[0]), Port: int(config.PprofPort)}) |
159 | 165 | if err != nil {
|
160 |
| - util.LogFatalAndExit(err, "failed to listen on %s", util.JoinHostPort(addr, config.PprofPort)) |
| 166 | + util.LogFatalAndExit(err, "failed to listen on %s", util.JoinHostPort(addrs[0], config.PprofPort)) |
161 | 167 | }
|
162 | 168 | mux := http.NewServeMux()
|
163 | 169 | mux.HandleFunc("/healthz", util.DefaultHealthCheckHandler)
|
|
0 commit comments