Не удается найти токен kubeadm после инициализации master

#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:

Лучший способ избежать создания нового токена —

  1. kubeadm token list
  2. 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. Серьезно — я не могу поверить, что «сброс, если он не работает» — это даже ответ.