Почему / var / lib / cni / networks имеет значение null после создания кластера кубернетов? - PullRequest
0 голосов
/ 04 августа 2020

Установлен кластер кубернетов с Calico, CoreDNS.

Проверить одно сообщение о событии CoreDNS

Readiness probe failed: HTTP probe failed with statuscode: 503

В каталоге /var/lib/cni/networks/ ничего нет. Зачем? Как исправить?

Даже все поды находятся в рабочем состоянии, но беспокоятся о его работоспособности.

журналы

# kubectl logs coredns-1308140hfw -n kube-system
[INFO] plugin/ready: Still waiting on: "kubernetes"
.:53
[INFO] plugin/reload: Running configuration MD5 = 20328084ha6966e76816bcd928foa
CoreDNS-1.7.0
linux/amd64, go1.14.4, f59c03d
[INFO] plugin/ready: Still waiting on: "kubernetes"
[INFO] plugin/ready: Still waiting on: "kubernetes"
I0804 08:18:03.874045       1 trace.go:116] Trace[336122540]: "Reflector ListAndWatch" name:pkg/mod/k8s.io/client-go@v0.18.3/tools/cache/reflector.go:125 (started: 2020-08-04 08:17:33.872753993 +0000 UTC m=+0.038838328) (total time: 30.001059939s):
Trace[336122540]: [30.001059939s] [30.001059939s] END
E0804 08:18:03.874108       1 reflector.go:178] pkg/mod/k8s.io/client-go@v0.18.3/tools/cache/reflector.go:125: Failed to list *v1.Endpoints: Get "https://[IPv6]:443/api/v1/endpoints?limit=500&resourceVersion=0": dial tcp [IPv6]:443: i/o timeout
I0804 08:18:03.874047       1 trace.go:116] Trace[208240456]: "Reflector ListAndWatch" name:pkg/mod/k8s.io/client-go@v0.18.3/tools/cache/reflector.go:125 (started: 2020-08-04 08:17:33.872755558 +0000 UTC m=+0.038839930) (total time: 30.001213767s):
Trace[208240456]: [30.001213767s] [30.001213767s] END
E0804 08:18:03.874137       1 reflector.go:178] pkg/mod/k8s.io/client-go@v0.18.3/tools/cache/reflector.go:125: Failed to list *v1.Namespace: Get "https://[IPv6]:443/api/v1/namespaces?limit=500&resourceVersion=0": dial tcp [IPv6]:443: i/o timeout
I0804 08:18:03.874214       1 trace.go:116] Trace[1106410694]: "Reflector ListAndWatch" name:pkg/mod/k8s.io/client-go@v0.18.3/tools/cache/reflector.go:125 (started: 2020-08-04 08:17:33.872753715 +0000 UTC m=+0.038838086) (total time: 30.001438405s):
Trace[1106410694]: [30.001438405s] [30.001438405s] END
E0804 08:18:03.874248       1 reflector.go:178] pkg/mod/k8s.io/client-go@v0.18.3/tools/cache/reflector.go:125: Failed to list *v1.Service: Get "https://[IPv6]:443/api/v1/services?limit=500&resourceVersion=0": dial tcp [IPv6]:443: i/o timeout

1 Ответ

1 голос
/ 06 августа 2020

Как работает проверка готовности?

Иногда приложения временно не могут обслуживать трафик c. Например, приложению может потребоваться загрузить большие данные или файлы конфигурации во время запуска. В таких случаях вы не хотите убивать приложение, но и не хотите отправлять ему запросы. Kubernetes предоставляет зонды готовности для обнаружения и смягчения этих ситуаций. Модуль с контейнерами, сообщающими о том, что они не готовы, не получает трафик c через службы Kubernetes.

При запуске модуля Kubernetes можно настроить на ожидание в течение настраиваемого количества времени. перед проведением первой проверки готовности. После этого он периодически вызывает зонд и действует в зависимости от результата зондирования готовности. Если модуль сообщает, что он не готов, он удаляется из службы. Если модуль затем снова становится готовым, он добавляется повторно.

Это означает, что в вашей ситуации ваш модуль coreDNS не был полностью запущен, но Kubernetes уже начал отправлять зонды для проверки readiness.

Благодаря этим зондам, когда у вас есть пара реплик, Kubernetes будет направлять трафик c только на те, которые исправны (с успешным зондом).

PS. Мой каталог /var/lib/cni/networks/ тоже пуст.

...