diff --git a/commands/verify/verify.go b/commands/verify/verify.go
index 972769a..3307f43 100644
--- a/commands/verify/verify.go
+++ b/commands/verify/verify.go
@@ -19,6 +19,7 @@
 
 import (
 	"fmt"
+	"time"
 
 	"github.com/apache/skywalking-infra-e2e/internal/components/verifier"
 	"github.com/apache/skywalking-infra-e2e/internal/config"
@@ -91,14 +92,34 @@
 
 	e2eConfig := config.GlobalConfig.E2EConfig
 
-	for _, v := range e2eConfig.Verify {
-		if v.GetExpected() != "" {
-			if err := verifySingleCase(v.GetExpected(), v.GetActual(), v.Query); err != nil {
-				return err
+	retryCount := e2eConfig.Verify.RetryStrategy.Count
+	if retryCount <= 0 {
+		retryCount = 1
+	}
+	retryInterval := e2eConfig.Verify.RetryStrategy.Interval
+	if retryInterval < 0 {
+		retryInterval = 1000
+	}
+
+	var err error
+	for current := 1; current <= retryCount; current++ {
+		for _, v := range e2eConfig.Verify.Cases {
+			if v.GetExpected() != "" {
+				if err = verifySingleCase(v.GetExpected(), v.GetActual(), v.Query); err != nil {
+					break
+				}
+			} else {
+				return fmt.Errorf("the expected data file is not specified")
 			}
-		} else {
-			logger.Log.Error("the expected data file is not specified")
+		}
+
+		if err != nil && current != retryCount {
+			logger.Log.Warnf("verify case failure, will continue retry, %v", err)
+			time.Sleep(time.Duration(retryInterval) * time.Millisecond)
+		} else if err == nil {
+			return nil
 		}
 	}
-	return nil
+
+	return err
 }
diff --git a/examples/compose/e2e.yaml b/examples/compose/e2e.yaml
index b676518..459a586 100644
--- a/examples/compose/e2e.yaml
+++ b/examples/compose/e2e.yaml
@@ -32,9 +32,16 @@
   method: GET
 
 verify:
-  - actual: ../../test/verify/1.actual.yaml
-    expected: ../../test/verify/1.expected.yaml
-  - actual: ../../test/verify/2.actual.yaml
-    expected: ../../test/verify/2.expected.yaml
-  - query: swctl --display yaml --base-url=http://127.0.0.1:${oap_12800}/graphql service ls
-    expected: ../../test/verify/3.expected.yaml
\ No newline at end of file
+  # verify with retry strategy
+  retry:
+    # max retry count
+    count: 10
+    # the interval between two retries, in millisecond.
+    interval: 10000
+  cases:
+    - actual: ../../test/verify/1.actual.yaml
+      expected: ../../test/verify/1.expected.yaml
+    - actual: ../../test/verify/2.actual.yaml
+      expected: ../../test/verify/2.expected.yaml
+    - query: swctl --display yaml --base-url=http://127.0.0.1:${oap_12800}/graphql service ls
+      expected: ../../test/verify/3.expected.yaml
\ No newline at end of file
diff --git a/examples/kind/e2e.yaml b/examples/kind/e2e.yaml
index 7dc69f1..107ffea 100644
--- a/examples/kind/e2e.yaml
+++ b/examples/kind/e2e.yaml
@@ -56,11 +56,18 @@
   method: GET
 
 verify:
-  - actual: ../../test/verify/1.actual.yaml
-    expected: ../../test/verify/1.expected.yaml
-  - actual: ../../test/verify/2.actual.yaml
-    expected: ../../test/verify/2.expected.yaml
-  - actual: ../../test/verify/1.actual.yaml
-    expected: ../../test/verify/2.expected.yaml
-  - query: swctl --display yaml service ls
-    expected: ../../test/verify/3.expected.yaml
+  # verify with retry strategy
+  retry:
+    # max retry count
+    count: 10
+    # the interval between two retries, in millisecond.
+    interval: 10000
+  cases:
+    - actual: ../../test/verify/1.actual.yaml
+      expected: ../../test/verify/1.expected.yaml
+    - actual: ../../test/verify/2.actual.yaml
+      expected: ../../test/verify/2.expected.yaml
+    - actual: ../../test/verify/1.actual.yaml
+      expected: ../../test/verify/2.expected.yaml
+    - query: swctl --display yaml service ls
+      expected: ../../test/verify/3.expected.yaml
diff --git a/internal/config/e2eConfig.go b/internal/config/e2eConfig.go
index dfbc617..8554c9d 100644
--- a/internal/config/e2eConfig.go
+++ b/internal/config/e2eConfig.go
@@ -22,10 +22,10 @@
 
 // E2EConfig corresponds to configuration file e2e.yaml.
 type E2EConfig struct {
-	Setup   Setup        `yaml:"setup"`
-	Cleanup Cleanup      `yaml:"cleanup"`
-	Trigger Trigger      `yaml:"trigger"`
-	Verify  []VerifyCase `yaml:"verify"`
+	Setup   Setup   `yaml:"setup"`
+	Cleanup Cleanup `yaml:"cleanup"`
+	Trigger Trigger `yaml:"trigger"`
+	Verify  Verify  `yaml:"verify"`
 }
 
 type Setup struct {
@@ -46,6 +46,11 @@
 	Waits   []Wait `yaml:"wait"`
 }
 
+type Verify struct {
+	RetryStrategy VerifyRetryStrategy `yaml:"retry"`
+	Cases         []VerifyCase        `yaml:"cases"`
+}
+
 func (s *Setup) GetFile() string {
 	return util.ResolveAbs(s.File)
 }
@@ -81,6 +86,11 @@
 	Expected string `yaml:"expected"`
 }
 
+type VerifyRetryStrategy struct {
+	Count    int `yaml:"count"`
+	Interval int `yaml:"interval"`
+}
+
 // GetActual resolves the absolute file path of the actual data file.
 func (v *VerifyCase) GetActual() string {
 	return util.ResolveAbs(v.Actual)
