проверка корректной работы кластера etcd

Вопрос или проблема

Когда я запускаю команду ниже, я получаю ошибку, и мой код выхода равен 1. Может ли кто-нибудь объяснить, почему я получаю эту ошибку и как ее исправить?
Спасибо

kubectl exec etcd-master -- etcdctl member list
{"level":"warn","ts":"2024-12-28T12:28:32.978637Z","logger":"etcd-client","caller":"[email protected]/retry_interceptor.go:63","msg":"retrying of unary invoker failed","target":"etcd-endpoints://0xc000370000/127.0.0.1:2379","attempt":0,"error":"rpc error: code = DeadlineExceeded desc = последняя ошибка балансировщика: последняя ошибка соединения: ошибка соединения: desc = \"ошибка чтения начальной фразы сервера: EOF\""}
Ошибка: превышен срок ожидания контекста
команда завершена с кодом выхода 1

также мои логи etcd выглядят так. мой брандмауэр выключен, а selinux также в разрешающем режиме. Моя операционная система – rocky linux 9.3.

{"level":"warn","ts":"2024-12-28T12:42:13.018454Z","caller":"embed/config_logging.go:170","msg":"rejected connection on client endpoint","remote-addr":"127.0.0.1:52198","server-name":"","error":"tls: первая запись не похожа на TLS рукопожатие"}
{"level":"warn","ts":"2024-12-28T12:42:14.022364Z","caller":"embed/config_logging.go:170","msg":"rejected connection on client endpoint","remote-addr":"127.0.0.1:52214","server-name":"","error":"tls: первая запись не похожа на TLS рукопожатие"}
{"level":"warn","ts":"2024-12-28T12:42:15.330400Z","caller":"embed/config_logging.go:170","msg":"rejected connection on client endpoint","remote-addr":"127.0.0.1:52222","server-name":"","error":"tls: первая запись не похожа на TLS рукопожатие"}
{"level":"warn","ts":"2024-12-28T12:44:21.880909Z","caller":"embed/config_logging.go:170","msg":"rejected connection on client endpoint","remote-addr":"192.168.56.101:42196","server-name":"","error":"tls: первая запись не похожа на TLS рукопожатие"}
{"level":"warn","ts":"2024-12-28T12:44:22.883450Z","caller":"embed/config_logging.go:170","msg":"rejected connection on client endpoint","remote-addr":"192.168.56.101:42210","server-name":"","error":"tls: первая запись не похожа на TLS рукопожатие"}
{"level":"warn","ts":"2024-12-28T12:44:24.622810Z","caller":"embed/config_logging.go:170","msg":"rejected connection on client endpoint","remote-addr":"192.168.56.101:42220","server-name":"","error":"tls: первая запись не похожа на TLS рукопожатие"}
{"level":"warn","ts":"2024-12-28T12:44:26.821834Z","caller":"embed/config_logging.go:170","msg":"rejected connection on client endpoint","remote-addr":"192.168.56.101:42222","server-name":"","error":"tls: первая запись не похожа на TLS рукопожатие"}
{"level":"info","ts":"2024-12-28T12:46:45.062979Z","caller":"mvcc/index.go:214","msg":"компактизация индексного дерева","revision":228269}
{"level":"info","ts":"2024-12-28T12:46:45.079467Z","caller":"mvcc/kvstore_compaction.go:69","msg":"завершена запланированная компактизация","compact-revision":228269,"took":"10.947531ms","hash":4017906930,"current-db-size-bytes":3809280,"current-db-size":"3.8 MB","current-db-size-in-use-bytes":1859584,"current-db-size-in-use":"1.9 MB"}
{"level":"info","ts":"2024-12-28T12:46:45.079800Z","caller":"mvcc/hash.go:137","msg":"сохранение нового хэша","hash":4017906930,"revision":228269,"compact-revision":227809}

Ответ или решение

Проблема, с которой вы столкнулись при попытке проверить работу кластера etcd, заключается в ошибке при выполнении команды kubectl exec etcd-master -- etcdctl member list. Давайте разберемся в причинах этой ошибки и способах ее устранения.

Анализ ошибки

  1. Сообщение об ошибке:

    • Основное сообщение об ошибке — "context deadline exceeded". Это обычно указывает на то, что операция превысила установленное время ожидания.
    • Дополнительное сообщение: "tls: first record does not look like a TLS handshake" — предполагает, что проблема может быть связана с неправильной конфигурацией TLS.
  2. Логи etcd:

    • Логи содержат предупреждения об отклоненных соединениях по клиентской конечной точке с указанием ошибки TLS.
    • В дополнение к этому, логи показывают информацию об успешных действиях, таких как компактификация и хеширование.

Варианты решения проблемы

  1. Проверка конфигурации TLS:

    • Убедитесь, что etcd настроен для работы с TLS соединениями. Это включает правильную конфигурацию сертификатов и ключей в конфигурации etcd и etcdctl.
    • Проверьте, чтобы соответствующие файлы сертификатов были доступны и корректно указаны в конфигурационном файле etcd.
    • Пример конфигурации подключения с TLS:

      export ETCDCTL_API=3
      etcdctl --endpoints=https://127.0.0.1:2379 --cacert=/path/to/ca.pem --cert=/path/to/etcd-client.pem --key=/path/to/etcd-client-key.pem member list
  2. Проверка сетевых настроек и межсерверного взаимодействия:

    • Убедитесь, что IP-адрес и порт, указанный в команде и конфигурации etcd, доступны и правильно настроены.
    • Проверьте, чтобы конфигурация брандмауэра не препятствовала соединениям по необходимым портам (по умолчанию etcd использует порты 2379 и 2380).
  3. Диагностика временного интервала операций:

    • Возможно, необходимо увеличить значение тайм-аута, если операции требуют больше времени.
    • Проверьте настройки тайм-аута в конфигурации, чтобы определить, увеличение времени ожидания может решить проблему.
  4. Логирование и отладка:

    • Активируйте более детализованный уровень логирования для etcd и kubectl, чтобы получить больше информации о происходящем на каждом этапе операции.
    • Это поможет изолировать проблему, связанную с сетью, конфигурацией или чем-то еще.

Резюме

Ошибка context deadline exceeded и предупреждения о TLS указывают на проблему в разрешении TLS или сетевых конфигурациях. Проверьте настройки TLS и убедитесь, что брандмауэр и другой сетевой софт не блокируют требуемые соединения. Эти шаги помогут разобраться в текущей конфигурации и внести необходимые коррективы для стабилизации работы кластера etcd.

Подписывайтесь на документацию: регулярно проверяйте какие изменения были внесены в последние версии, возможны изменения в оптимальных конфигурациях.

Оцените материал
Добавить комментарий

Капча загружается...