kubeadm init
を実行すると、このホストに接続するために他のホストから使用する必要があるトークンが表示されます。そのトークンはどこに保存されますか? Terraform内にkubeadmを追加することで、これを自動化する他の方法を見つけようとしています。
助けてくれてありがとう!
-token
デフォルトでは、kubeadm initは、各新規ノードの初期化に使用されるトークンを自動的に生成します。このトークンを手動で指定する場合は、-tokenフラグを使用できます。トークンの形式は「<6文字列>。<16文字列>」である必要があります。
次のコマンドを使用して、マスターノードのトークン値を確認できます。
cat /etc/kubernetes/pki/tokens.csv
Kubernetes 1.9.x(およびそれ以上)の説明は here にあります。
使用したコマンドは次のとおりです。
kubeadm token generate
kubeadm token create <generated-token> --print-join-command --ttl=0
マスターノードでこのコマンドを実行してトークンを取得します
kubeadm token list
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
新しいトークンの作成を回避する最良の方法は-
kubeadm token list
kubeadm token create <copied token from previous command output>** --print-join-command
物理/仮想マシンで実行するJOINコマンドを取得して、kubernetesクラスターに参加します。
初期トークンは24時間のみ有効であるため、以下のコマンドに従って新しいものを作成してください。
kubeadm token create --ttl=0
ここでttl = 0は、生成されたトークンが期限切れにならないことを意味します。
次に、以下のコマンドに従ってノードに参加します。
kubeadm join <generated_token>
Caハッシュの検証でエラーが発生した場合は、次のように参加してください。
kubeadm join <generated_token> --discovery-token-unsafe-skip-ca-verification
次のコマンドを使用します:$ Sudo kubeadm token list
それでも、取得していない場合は、次のコマンドを使用します
$ Sudo kubeadm reset
$ Sudo kubeadm init