Skip to content

Commit 001c4aa

Browse files
authored
Merge pull request #1196 from A-Zee029/health-check
add healthcheck cmd to probe live and ready
2 parents cdf85a5 + c510b43 commit 001c4aa

File tree

7 files changed

+51
-27
lines changed

7 files changed

+51
-27
lines changed

cmd/cmdmain.go

+10-6
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package main
22

33
import (
4+
"github.com/kubeovn/kube-ovn/cmd/controller_health_check"
45
"os"
56
"strings"
67

@@ -15,12 +16,13 @@ import (
1516
)
1617

1718
const (
18-
CmdController = "kube-ovn-controller"
19-
CmdDaemon = "kube-ovn-daemon"
20-
CmdMonitor = "kube-ovn-monitor"
21-
CmdPinger = "kube-ovn-pinger"
22-
CmdSpeaker = "kube-ovn-speaker"
23-
CmdWebHook = "kube-ovn-webhook"
19+
CmdController = "kube-ovn-controller"
20+
CmdDaemon = "kube-ovn-daemon"
21+
CmdMonitor = "kube-ovn-monitor"
22+
CmdPinger = "kube-ovn-pinger"
23+
CmdSpeaker = "kube-ovn-speaker"
24+
CmdWebHook = "kube-ovn-webhook"
25+
CmdControllerHealthCheck = "kube-ovn-controller-healthcheck"
2426
)
2527

2628
func main() {
@@ -39,6 +41,8 @@ func main() {
3941
speaker.CmdMain()
4042
case CmdWebHook:
4143
webhook.CmdMain()
44+
case CmdControllerHealthCheck:
45+
controller_health_check.CmdMain()
4246
default:
4347
klog.Fatalf("%s is an unknown command", cmd)
4448
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package controller_health_check
2+
3+
import (
4+
"fmt"
5+
"github.com/kubeovn/kube-ovn/pkg/ovs"
6+
"k8s.io/klog/v2"
7+
"net"
8+
"os"
9+
"strings"
10+
"time"
11+
)
12+
13+
func CmdMain() {
14+
content, err := os.ReadFile("/var/run/ovn/ovn-nbctl.pid")
15+
if err != nil {
16+
klog.Fatalf("failed to get ovn-nbctl daemon pid, %s", err)
17+
}
18+
daemonPid := strings.TrimSuffix(string(content), "\n")
19+
if err := os.Setenv("OVN_NB_DAEMON", fmt.Sprintf("/var/run/ovn/ovn-nbctl.%s.ctl", daemonPid)); err != nil {
20+
klog.Fatalf("failed to set env OVN_NB_DAEMON, %v", err)
21+
}
22+
if err := ovs.CheckAlive(); err != nil {
23+
os.Exit(1)
24+
}
25+
conn, err := net.DialTimeout("tcp", "127.0.0.1:10660", 3*time.Second)
26+
if err != nil {
27+
klog.Fatalf("failed to probe the socket, %s", err)
28+
}
29+
err = conn.Close()
30+
if err != nil {
31+
klog.Fatalf("Unexpected error closing TCP probe socket: %v (%#v)", err, err)
32+
}
33+
}

dist/images/Dockerfile

+2-1
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,5 @@ RUN ln -s /kube-ovn/kube-ovn-cmd /kube-ovn/kube-ovn-controller && \
1515
ln -s /kube-ovn/kube-ovn-cmd /kube-ovn/kube-ovn-monitor && \
1616
ln -s /kube-ovn/kube-ovn-cmd /kube-ovn/kube-ovn-pinger && \
1717
ln -s /kube-ovn/kube-ovn-cmd /kube-ovn/kube-ovn-speaker && \
18-
ln -s /kube-ovn/kube-ovn-cmd /kube-ovn/kube-ovn-webhook
18+
ln -s /kube-ovn/kube-ovn-cmd /kube-ovn/kube-ovn-webhook && \
19+
ln -s /kube-ovn/kube-ovn-cmd /kube-ovn/kube-ovn-controller-healthcheck

dist/images/install.sh

+2-4
Original file line numberDiff line numberDiff line change
@@ -1921,15 +1921,13 @@ spec:
19211921
readinessProbe:
19221922
exec:
19231923
command:
1924-
- bash
1925-
- /kube-ovn/kube-ovn-controller-healthcheck.sh
1924+
- /kube-ovn/kube-ovn-controller-healthcheck
19261925
periodSeconds: 3
19271926
timeoutSeconds: 45
19281927
livenessProbe:
19291928
exec:
19301929
command:
1931-
- bash
1932-
- /kube-ovn/kube-ovn-controller-healthcheck.sh
1930+
- /kube-ovn/kube-ovn-controller-healthcheck
19331931
initialDelaySeconds: 300
19341932
periodSeconds: 7
19351933
failureThreshold: 5

dist/images/kube-ovn-controller-healthcheck.sh

-8
This file was deleted.

yamls/kube-ovn-ipv6.yaml

+2-4
Original file line numberDiff line numberDiff line change
@@ -78,15 +78,13 @@ spec:
7878
readinessProbe:
7979
exec:
8080
command:
81-
- bash
82-
- /kube-ovn/kube-ovn-controller-healthcheck.sh
81+
- /kube-ovn/kube-ovn-controller-healthcheck
8382
periodSeconds: 3
8483
timeoutSeconds: 45
8584
livenessProbe:
8685
exec:
8786
command:
88-
- bash
89-
- /kube-ovn/kube-ovn-controller-healthcheck.sh
87+
- /kube-ovn/kube-ovn-controller-healthcheck
9088
initialDelaySeconds: 300
9189
periodSeconds: 7
9290
failureThreshold: 5

yamls/kube-ovn.yaml

+2-4
Original file line numberDiff line numberDiff line change
@@ -80,15 +80,13 @@ spec:
8080
readinessProbe:
8181
exec:
8282
command:
83-
- bash
84-
- /kube-ovn/kube-ovn-controller-healthcheck.sh
83+
- /kube-ovn/kube-ovn-controller-healthcheck
8584
periodSeconds: 3
8685
timeoutSeconds: 45
8786
livenessProbe:
8887
exec:
8988
command:
90-
- bash
91-
- /kube-ovn/kube-ovn-controller-healthcheck.sh
89+
- /kube-ovn/kube-ovn-controller-healthcheck
9290
initialDelaySeconds: 300
9391
periodSeconds: 7
9492
failureThreshold: 5

0 commit comments

Comments
 (0)