diff options
author | Stephen Wong <stephen.kf.wong@gmail.com> | 2019-01-28 08:19:11 +0000 |
---|---|---|
committer | Stephen Wong <stephen.kf.wong@gmail.com> | 2019-01-28 08:22:28 +0000 |
commit | a0a9f9e8bc71615899a76caa2eda85aef9930a4f (patch) | |
tree | 0e40bfbced28710d5ee7286cec99e8e774b11652 | |
parent | 6aa27547b71bff174e3017f637a002546033bf39 (diff) |
Prevent clovisor from unable to create qdisc / filter from previous
instance dying abnormally (qdisc deletion is part of exit callback for
pod under monitoring, but if clovisor exits abnormally, qdisc would not
be deleted, which cause the restarted new clovisor pod unable to load
BPF code to the pods under monitoring)
Change-Id: I5620f34e7f05805e203d1cfda9a8f7a1d42fd4f5
Signed-off-by: Stephen Wong <stephen.kf.wong@gmail.com>
-rwxr-xr-x | clover/clovisor/bin/clovisor | bin | 39227600 -> 39227920 bytes | |||
-rwxr-xr-x | clover/clovisor/build-docker | 8 | ||||
-rw-r--r-- | clover/clovisor/libclovisor/clovisor_bcc.go | 16 |
3 files changed, 20 insertions, 4 deletions
diff --git a/clover/clovisor/bin/clovisor b/clover/clovisor/bin/clovisor Binary files differindex d35f90e..240e0bc 100755 --- a/clover/clovisor/bin/clovisor +++ b/clover/clovisor/bin/clovisor diff --git a/clover/clovisor/build-docker b/clover/clovisor/build-docker index 4f776ec..99668d7 100755 --- a/clover/clovisor/build-docker +++ b/clover/clovisor/build-docker @@ -14,7 +14,7 @@ if [ -z "$1" ] fi cp bin/clovisor . docker build --build-arg TARGET_KERNEL_VER=$kernel_ver -t clovisor . -docker tag clovisor localhost:5000/clovisor -docker push localhost:5000/clovisor -#docker tag clovisor s3wong/clovisor -#docker push s3wong/clovisor +#docker tag clovisor localhost:5000/clovisor +#docker push localhost:5000/clovisor +docker tag clovisor s3wong/clovisor +docker push s3wong/clovisor diff --git a/clover/clovisor/libclovisor/clovisor_bcc.go b/clover/clovisor/libclovisor/clovisor_bcc.go index e2d9cd8..ab5bc33 100644 --- a/clover/clovisor/libclovisor/clovisor_bcc.go +++ b/clover/clovisor/libclovisor/clovisor_bcc.go @@ -509,6 +509,22 @@ func ClovisorNewPodInit(k8s_client *ClovisorK8s, session_table := bcc.NewTable(bpf_mod.TableId("sessions"), bpf_mod) + // check if qdisc clsact filter for this interface already exists + link, err := netlink.LinkByIndex(ifindex) + if err != nil { + fmt.Println(err) + } else { + qdiscs, err := netlink.QdiscList(link) + if err == nil { + for _, qdisc := range qdiscs { + if qdisc.Type() == "clsact" { + netlink.QdiscDel(qdisc) + break + } + } + } + } + attrs := netlink.QdiscAttrs { LinkIndex: ifindex, Handle: netlink.MakeHandle(0xffff, 0), |