#kubernetes #kubeadm
#kubernetes #kubeadm
Вопрос:
Когда я запускаю kubeadm init
, он показывает токен, который я должен использовать с других хостов для подключения к этому хосту. Где хранится этот токен? Я пытаюсь найти больше способов автоматизировать это, добавив kubeadm внутри Terraform.
Спасибо за любую помощь!
Комментарии:
1. вы можете сгенерировать токен и использовать его для команды инициализации. ‘сгенерировать токен kubeadm’, затем использовать ‘/usr/bin/kubeadm init —token <значение>’
Ответ №1:
Инструкцию для Kubernetes 1.9.x (и выше) можно найти здесь .
Команды, которые я использовал:
kubeadm token generate
kubeadm token create <generated-token> --print-join-command --ttl=0
Комментарии:
1. Обратите внимание, что безопаснее установить TTL (или опустить флаг -ttl, чтобы установить 24-часовой TTL по умолчанию).
2. после k8s 1.25 вывода «kubeadm token create <generated-token> —print-join-command —ttl=0» недостаточно. вам также необходимо указать «—cri-socket [сокет]». см. kubernetes.io/docs/setup/production-environment /…
Ответ №2:
Запустите эту команду в главном узле, чтобы получить токен
kubeadm token list
Ответ №3:
—токен
По умолчанию инициализация kubeadm автоматически генерирует токен, используемый для инициализации каждого нового узла. Если вы хотите вручную указать этот токен, вы можете использовать флаг —token . Токен должен иметь формат ‘<6 символьная строка>.<16 символьная строка>’.
вы можете увидеть значение токена на главном узле с помощью command:
cat /etc/kubernetes/pki/tokens.csv
Комментарии:
1. Спасибо! Да, сразу после публикации этого я перечитал руководство и на этот раз заметил
--token
флаг. Это будет работать для этого решения. Я думал, что проверил этотtokens.csv
файл, но после повторной проверки вы правы! Спасибо!2. Не могу это проверить. Файлы содержат строку, но в формате токена ничего нет.
3. Показать главный токен: «список токенов kubeadm»
4. такого файла нет
Ответ №4:
kubectl -n kube-system get secret clusterinfo -o yaml | grep token-map | awk '{print $2}' | base64 -d | sed "s|{||g;s|}||g;s|:|.|g;s/"//g;" | xargs echo
Комментарии:
1. Это должно быть решением. Но вместо блока sed я бы написал
awk -F" '{print $2 "." $4}'
, потому что он немного более удобочитаемый.2. что такое clusterinfo. как я могу это найти, потому что я вижу ошибку, в которой говорится, что clusterinfo «secrets» не найден.
3. то же самое здесь v1.8.5 — нет clusterinfo secret
4.
sudo kubeadm token list | awk 'NR == 2 {print $1}'
Ответ №5:
Попробуйте создать новый в соответствии с приведенной ниже командой, поскольку начальный токен действителен только 24 часа.
kubeadm token create --ttl=0
Здесь ttl = 0 означает, что сгенерированный токен никогда не истечет.
Затем присоединитесь к узлу согласно приведенной ниже команде:
kubeadm join <generated_token>
Если вы получаете какую-либо ошибку для проверки хэша ca, затем присоединяйтесь, как показано ниже:
kubeadm join <generated_token> --discovery-token-unsafe-skip-ca-verification
Ответ №6:
Лучший способ избежать создания нового токена —
kubeadm token list
kubeadm token create <copied token from previous command output>** --print-join-command
вы получите команду JOIN для запуска на любой физической / виртуальной машине, чтобы присоединиться к кластеру kubernetes….
Комментарии:
1. Ложь. Это приведет к ошибке «токен с идентификатором ‘xxxx’ уже существует»
Ответ №7:
Используйте эту команду : $ sudo kubeadm token list
Тем не менее, если вы не получили, используйте следующие команды
$ sudo kubeadm reset
$ sudo kubeadm init
Комментарии:
1. Нет… Если вы не видите ни одного доступного токена, возможно, время ожидания истекло. Создайте еще один, не сбрасывая весь кластер. Создайте токен с
kubeadm token create --print-join-command
помощью .2. Серьезно — я не могу поверить, что «сброс, если он не работает» — это даже ответ.