次のcluster.ymlファイルがあります。
nodes:
- address: 172.16.20.22
user: rke
role:
- controlplane
- etcd
- worker
rke up
を実行すると、次のエラーが発生します。
INFO[0000] Building Kubernetes cluster
INFO[0000] [dialer] Setup tunnel for Host [172.16.20.22]
WARN[0000] Failed to set up SSH tunneling for Host [172.16.20.22]: Can't retrieve Docker Info: error during connect: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.24/info: Unable to access node with address [172.16.20.22:22] using SSH. Please check if you are able to SSH to the node using the specified SSH Private Key and if you have configured the correct SSH username. Error: ssh: handshake failed: ssh: unable to authenticate, attempted methods [none publickey], no supported methods remain
WARN[0000] Removing Host [172.16.20.22] from node lists
FATA[0000] Cluster must have at least one etcd plane Host: failed to connect to the following etcd Host(s) [172.16.20.22]
マシンでポート22を開いているため、SSHトンネリングが機能しない理由がわかりません。また、httpトラフィック用にマシンでポート80を開いています。これは、firewalld出力で確認できます。
public (active)
target: default
icmp-block-inversion: no
interfaces: ens192
sources:
services: ssh dhcpv6-client http
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
私のcluster.yml設定が意図したとおりに機能しない理由を誰かが知っていますか?私のrkeユーザーとrootユーザーの両方がSSH経由で機能するSSHキーを持っていることを確認しましたが、それらを自分の構成ファイルに追加する必要があるかどうか、またはそれがどのように機能するかわかりません。
どのようなSSH認証を使用していますか? SSHサーバーはSSHキーのみを受け入れるようです。これは問題ありません。rkeに有効なキーがあり、構成で指定する必要がある場合(グローバルまたはノードごと):
nodes:
- address: 172.16.20.22
user: rke
ssh_key_path: "/home/rke/.ssh/id_rsa"
role:
- controlplane
- etcd
- worker
キーが既に指定されており、ここに投稿した構成にのみ欠落している場合は、キーが機能しているかどうかを確認してください。 SSHキーを使用する場合は、いくつかの点に注意してください。最も重要なのは、正しい許可(秘密鍵で600)です。これを確認するには、rkeを実行したのと同じユーザーとして接続し、
ssh -i /home/rke/.ssh/id_rsa [email protected]
これは機能するはずです。そうしないと、より詳細なエラー情報が表示されます。動作する場合は、docker ps
を実行してみてください。ユーザーがdocker
グループのメンバーでない場合にも、同様のエラーが発生しました。この場合、Dockerソケット経由で接続するための十分な権限がありません。