(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【Kubernetes】kubeadmを利用してWorkerNodeを追加する手順

スポンサーリンク

はじめに

以下の記事にてMasterNodeとWorkerNodeを1台ずつ構築しました。

本記事ではtokenの有効期限が切れた際にWorkerNodeを追加する流れを記載します。

環境情報
  • kubeadm 1.15

Tokenを再作成する必要がある

Masterノードを構築した際に出たtoken情報をWorkerノードに入れると参加できましたが

kubeadm join 10.1.1.111:6443 --token ... --discovery-token-ca-cert-hash sha256:7ca8...

token情報には有効期限が設定されており、有効期限は以下のように確認できます。

# kubeadm token list
TOKEN TTL EXPIRES USAGES DESCRIPTION EXTRA GROUPS
... 

このTOKENという項目に記載があるのがjoin時に--tokenとして入れる値ですが、TTLという項目がinvalidとなっている場合は有効期限切れ状態なので利用できません。

よって、TOKENを再作成する必要があります。

ちなみに切れたTOKENでkubeadm joinを行うとUnauthorizedとしてエラーとなります。

error execution phase preflight : unable to fetch the kubeadm-config ConfigMap: failed to get config map: Unauthorized

Tokenを再生成する

MasterNodeにて以下コマンドで生成でき

# kubeadm token create
....

作成したTokenがリストに追記され、有効期限が1日なので残り23時間と表記されています。

# kubeadm token list
....
xxxx 23h ... authetication,signing <none> system:bootstrappers:kubeadm:default-node-token

discovery-token-ca-cert-hastの値を確認する

こちらは前回用いた値と同一ですが、メモし忘れた場合に再確認する手順を説明します。
用いるのは以下の認証局証明書です。

-rw-r--r-- /etc/kubernetes/pki/ca.crt

以下の手順で該当情報を出力します。

# openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der | openssl dgst -sha256 -hex

流れとしてopenssl x509 -pubkey -inで公開鍵を抜き出しopenssl rsa -pubin -outform derでDERフォーマットに変換し、メッセージダイジェストを計算するdgstでsha256として計算しています。

実行結果は以下の形式で表示されるので

writing RSA key
(stdin)= 921cb07...

kubeadm joinする際に以下のように値を書き直せば認証が通ります。

--discovery-token-ca-cert-hash sha256:921cb07...

終わりに

本手順はMasterにてkubeadm initした際に表示される以下の画面の値がクリアされた場合にも利用できるので

worker# kubeadm join <arguments-returned-from-init> 

同様のことを実施しようとする方の参考になれば幸いです。