南宁市网站建设_网站建设公司_建站流程_seo优化
2026/1/8 16:19:39 网站建设 项目流程

文档说明

在 Kubernetes(K8s)集群部署与日常运维过程中(如kubeadmAnsible、脚本化部署、批量运维等),控制节点与工作节点之间必须具备稳定的 SSH 互信能力

本文档以三台 Linux 节点为示例,说明如何配置节点之间的 SSH 免密登录(SSH Mutual Trust),为后续 Kubernetes 集群部署提供基础环境保障。


1. 节点规划示例

节点名角色示例说明
node0control-planeKubernetes 主节点
node1worker工作节点
node2worker工作节点

实际生产环境中可扩展为更多节点,配置方式一致。


2. 前提条件

在开始配置前,请确保以下条件已满足:

  1. 网络互通

    • 所有节点之间可通过 IP 或主机名互相访问
    pingnode1pingnode2
  2. SSH 服务已安装并运行

    sudoapt-getinstall-y openssh-serversudosystemctlenablesshsudosystemctl startssh
  3. 统一用户

    • 使用root用户,或具备 sudo 权限的同一普通用户
    • 下文默认使用当前登录用户操作

3. 生成 SSH 密钥对(每台节点)

每一台节点上执行以下命令:

ssh-keygen -t rsa -b4096-N""-f ~/.ssh/id_rsa

参数说明

  • -t rsa:使用 RSA 密钥算法
  • -b 4096:密钥长度 4096 位(生产环境推荐)
  • -N "":不设置密码(用于自动化)
  • -f ~/.ssh/id_rsa:指定密钥文件路径

生成结果

~/.ssh/id_rsa # 私钥(禁止泄露) ~/.ssh/id_rsa.pub # 公钥(用于分发)

⚠️注意:每台节点都必须单独生成密钥,不要拷贝私钥。


4. 节点之间分发公钥(建立互信)

4.1 单向免密(示例)

仅配置node0node1免密登录:

ssh-copy-id -i ~/.ssh/id_rsa.pub node1

测试:

sshnode1

无需输入密码即表示成功。


4.2 三节点完全互信(推荐)

目标:node0 / node1 / node2 之间任意互相 SSH 免密

在任意一台管理节点执行:
forsrcinnode0 node1 node2;dofordstinnode0 node1 node2;doif["$src"!="$dst"];thenssh$src"ssh-copy-id -i ~/.ssh/id_rsa.pub$dst"fidonedone

执行过程中:

  • 首次连接会提示yes/no
  • 需要输入一次目标节点密码
  • 完成后即永久免密

5. SSH 权限校验(非常重要)

所有节点上执行:

chmod700~/.sshchmod600~/.ssh/authorized_keys

否则可能出现:

Permission denied (publickey)

6. 验证免密效果

在任意节点执行:

sshnode0sshnode1sshnode2

均应无需输入密码即可登录


7. 常见问题排查

7.1 连接被拒绝

ssh: connect to host xxx port 22: Connection refused

处理方式:

sudosystemctl statussshsudosystemctl startssh

7.2 公钥无效 / 权限错误

Permission denied (publickey)

检查:

  • ~/.ssh权限是否为700
  • authorized_keys权限是否为600
  • 公钥是否正确写入目标节点

8. 在 Kubernetes 中的作用

完成 SSH 免密后,可直接用于:

  • kubeadm init / join
  • Ansible 批量部署 Kubernetes
  • 节点初始化脚本(containerd / kubelet / sysctl)
  • 日志收集、批量升级、证书同步

👉这是 Kubernetes 集群部署的“第一步基础设施能力”

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询