我有以下 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]
我不确定为什么 SSH 隧道无法正常工作,因为我的机器上打开了端口 22。我的机器上还打开了端口 80 用于 http 流量,这可以在防火墙输出中看到:
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 密钥,但我不确定是否需要将它们添加到我的配置文件中或如何工作。
答案1
您使用的是哪种 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 套接字进行连接。