@@ -10,6 +10,7 @@ import (
10
10
kerrs "k8s.io/apimachinery/pkg/api/errors"
11
11
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
12
12
kerrors "k8s.io/apimachinery/pkg/util/errors"
13
+ "k8s.io/apimachinery/pkg/util/sets"
13
14
"k8s.io/apimachinery/pkg/util/wait"
14
15
"k8s.io/apiserver/pkg/storage/names"
15
16
kclientcmd "k8s.io/client-go/tools/clientcmd"
@@ -66,7 +67,12 @@ func (d *NetworkDiagnostic) TestSetup() error {
66
67
}
67
68
// Wait for test pods and services to be up and running on all valid nodes
68
69
if err = d .waitForTestPodAndService (nsList ); err != nil {
69
- return fmt .Errorf ("Failed to run network diags test pod and service: %v" , err )
70
+ logData , er := d .getPodLogs (nsList )
71
+ if er != nil {
72
+ return fmt .Errorf ("Failed to run network diags test pod and service: %v, fetching logs failed: %v" , err , er )
73
+ } else {
74
+ return fmt .Errorf ("Failed to run network diags test pod and service: %v, details: %s" , err , logData )
75
+ }
70
76
}
71
77
return nil
72
78
}
@@ -169,6 +175,41 @@ func (d *NetworkDiagnostic) waitForTestPodAndService(nsList []string) error {
169
175
return kerrors .NewAggregate (errList )
170
176
}
171
177
178
+ func (d * NetworkDiagnostic ) getPodLogs (nsList []string ) (string , error ) {
179
+ logData := sets.String {}
180
+ errList := []error {}
181
+ limit := int64 (1024 )
182
+
183
+ for _ , name := range nsList {
184
+ podList , err := d .getPodList (name , util .NetworkDiagTestPodNamePrefix )
185
+ if err != nil {
186
+ return "" , err
187
+ }
188
+
189
+ for _ , pod := range podList .Items {
190
+ opts := & kapi.PodLogOptions {
191
+ TypeMeta : pod .TypeMeta ,
192
+ Container : pod .Name ,
193
+ Follow : true ,
194
+ LimitBytes : & limit ,
195
+ }
196
+
197
+ req , err := d .Factory .LogsForObject (& pod , opts , 10 * time .Second )
198
+ if err != nil {
199
+ errList = append (errList , err )
200
+ continue
201
+ }
202
+ data , err := req .DoRaw ()
203
+ if err != nil {
204
+ errList = append (errList , err )
205
+ continue
206
+ }
207
+ logData .Insert (string (data [:]))
208
+ }
209
+ }
210
+ return strings .Join (logData .List (), ", " ), kerrors .NewAggregate (errList )
211
+ }
212
+
172
213
func (d * NetworkDiagnostic ) getCountOfTestPods (nsList []string ) (int , int , error ) {
173
214
totalPodCount := 0
174
215
runningPodCount := 0
0 commit comments