Kubeadm: 参加トークンの使いやすさの向上

作成日 2017年11月04日  ·  22コメント  ·  ソース: kubernetes/kubeadm

/種類の機能
@ kubernetes / sig-cli
何が起こったのか
kubeadmからの元のjoun文字列出力がない場合、新しいマシンを追加するのがそれほど簡単ではないことを発見しました。 「joinコマンド全体を生成する方法はありますか?マジックストリングに「到達」できるようにするには、クラスター全体をリセットする必要があるように感じます」(c) @alexellis

あなたが起こると期待したこと
同様に、Docker Swarmでは、コピーして貼り付け可能な結合文字列を出力して追加または同化するようにマスターにいつでも指示できます。 より多くのマシン。

入力例:

kubeadm token string

出力例:

kubeadm join --token TOK MASTER_IP:6443 --discovery-token-ca-cert-hash sha256:HASH

他に知っておくべきことはありますか?
あなたは素晴らしいです!

(フォローアップ:https://github.com/kubernetes/kubernetes/pull/41663)
@luxas @mattmoyer @jamiehannaford

areUX prioritimportant-soon

最も参考になるコメント

@zcalusic現在の方法は、次のようにOpenSSLを使用してハッシュを計算することです(マスターまたは/etc/kubernetes/pki/ca.crtコピーがある場所で実行します):

openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'

全てのコメント22件

このようなものに+1します。

このアイデアに関するいくつかのリフ:

  • 現在のCAハッシュを出力するだけの新しいkubeadm ca-cert-hashコマンド(名前は未定)。 これは基本的に、 kubeadm joinドキュメントで提供するopensslコマンドと同じです。
  • kubeadm init同じように、joinコマンド全体を出力するkubeadm token create --print-join-commandフラグを追加します。 これにより、プロビジョニング中にkubeadm token create --print-join-command >> worker_init.shようなものを実行することで、自動化が容易になることを願っています。

  • IDを指定して完全なトークンを取得する新しいコマンドkubeadm token get <token id>と、トークンだけでなく完全な結合コマンドをオプションで出力する--print-join-commandフラグ。

これで私にタグを付けてくれてありがとう。 Docker SwarmのUXからメモを取ります。いつでもdocker swarm join-token workerと入力して、ワーカーに貼り付けるか、SSH経由で送信するコマンドを使用できます。 Kubeadmでは、文字通りクラスターを破棄して新しいノードを追加するのは非常に困難です。CLIにはかなり自信があるので、私だけではないと確信しています。

また、initの出力は非常に重いため、joinコマンドだけを取得してどこかに隠しておくことはできません...現在、私はkubeadm init ... | grep 'kubeadm join --token' > /some_file頼っています。
stdoutで唯一のものがjoinコマンドであるクワイエットモードがあると便利です。

とにかく、今そのca-cert-hashを取得する方法は何ですか? もちろん、 kubeadm init出力はこの時点で長い間なくなっています...そして、後でオンデマンドでその情報を簡単に抽出できると期待して、保存しませんでした。

kubeadm token list参加トークンを取得し、 kubeadm join --tokenで別のノードに参加しましたが、次のようになっています。

[validation] WARNING: using token-based discovery without DiscoveryTokenCACertHashes can be unsafe (see https://kubernetes.io/docs/admin/kubeadm/#kubeadm-join).
[validation] WARNING: Pass --discovery-token-unsafe-skip-ca-verification to disable this warning. This warning will become an error in Kubernetes 1.9.

それで、エラーになる前に、どうすればそのパラメーターを渡すことができますか? 助けてくれてありがとう!

@zcalusic現在の方法は、次のようにOpenSSLを使用してハッシュを計算することです(マスターまたは/etc/kubernetes/pki/ca.crtコピーがある場所で実行します):

openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'

ヒントをありがとう@mattmoyer 。 あなたのワンライナーは完璧に機能しました。

もちろん、 --print-join-command方がはるかに優れたユーザーエクスペリエンスになることに同意する必要があります。

--print-join-command同意する

SIGミーティングで、 https: //github.com/kubernetes/kubernetes/pull/55468_と_この機能の追加の両方を進めると結論付けました。
正確にどのような形であるかを少し見ていきます

これは2017年11月21日のズームコールで議論されました。 その通話の分はhttps://docs.google.com/document/d/1deJYPIF4LmhGjDVaqrswErIrV7mtwJgovtLnPCDxP7U/edit#にあります

私は昨日これをざっと見ましたが、まだ取り組んでいません:)

kubeadm initと同じように、joinコマンド全体を出力するkubeadm tokencreateの--print-join-commandフラグを追加します。 これにより、プロビジョニング中にkubeadm token create --print-join-command >> worker_init.shのようなものを実行することで、自動化が容易になることを願っています。

これを好むなら、ブートストラップトークンの作成にも同じロジックがすでにあると思い

新しいコマンドkubeadmtoken getこれは、IDを指定して完全なトークンを取得し、-print-join-commandフラグを使用して、トークンだけでなく完全な結合コマンドをオプションで出力します。

個人的にはこれが好きです。 しかし、2つのアイデアはどちらも、実装時にさらにコンテキストが必要なようです。たとえば、apiserverアドバタイズアドレスを取得するにはMasterConfigurationが必要です。 現在、 token createは設定がありません。

更新:多分私たちは両方のアイデアを実装することができますか? @luxas @mattmoyer

https://github.com/kubernetes/kubernetes/pull/56185で最初のアイデアを実装しましたkubeadm getアイデアを実装することに反対していませんが、時間が足りません。

新しいkubeadm getを作成する代わりに、IMOは、既存のkubeadm token listの最後にハッシュ/ kubeadm結合ステートメントを出力する必要があります。

kubeadm token list --print-join-commandは素晴らしいと思います!

私はそのアイデア@luxasが好きです。 docker CLIと比較して、非常に長いフラグkubeadm入力していることがわかります。

kubeadm token list --verbose

kubeadm token list --tokens

kubeadm token list --join-token

kubeadm token list --verbose|-vは私にも役立ちます

ねえ、これは行われますか?
トークンを取得してクラスター内の新しいノードに参加させるにはどうすればよいですか?

@tzurEはマージされましたが、まだリリースされていません。今週後半にリリースされる予定のKubernetes1.9の一部

新しい機能を使用すると、次のコマンドを実行してノードに参加できます。

# on a master node (or any node with admin access to your cluster)
$ kubeadm token create --print-join-command
kubeadm join --token 447067.20b55955bd6abe6c 192.168.99.100:8443 --discovery-token-ca-cert-hash sha256:17023a5c90b996e50c514e63e161e46f78be216fd48c0c3df3be67e008b28889
# on the new node (copy-pasted from the output above)
$ kubeadm join --token 447067.20b55955bd6abe6c 192.168.99.100:8443 --discovery-token-ca-cert-hash sha256:17023a5c90b996e50c514e63e161e46f78be216fd48c0c3df3be67e008b28889

いいね、ありがとう。
その間に解決策はありますか? 通常のコマンドを使用せずにそれを抽出する方法は?

@tzurEこのコメントを参照してください: https

こんにちは@mattmoyer

コマンド「kubeadmtokencreate --print-join-command」は、1.9でうまく機能します。 しかし、ノードでNotReadyステータスを取得しています。 k8s1.9.0でubuntu16.04を使用しています。 助言がありますか?

@ siddharthjoshi745 Weave Netのようなポッドネットワークをデプロイします(ドキュメントで確認できます)。
ただし、古い問題についてはコメントしないでください。何か問題が見つかった場合は新しい問題を開くか、Slackでサポートを依頼してください。
すてきな一日を!

どうすれば1つの値だけを出力できますか? トークンまたはディスカバリートークンshaなどを言います。

このページは役に立ちましたか?
0 / 5 - 0 評価