温馨提示×

linux k8s安装怎样免密

小樊
43
2026-10-13 00:02:41
栏目: 智能运维

在 Linux 上安装 Kubernetes(k8s) 时,“免密”通常指两类场景:

  1. 节点之间 SSH 免密(便于分发文件、执行命令)
  2. kubeadm / 组件之间通信免交互(证书、token 自动处理)

下面分别说明。


一、Linux 节点之间 SSH 免密(最常用)

1. 在控制节点生成密钥

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

2. 拷贝公钥到所有节点(含自己)

ssh-copy-id root@node1
ssh-copy-id root@node2
ssh-copy-id root@node3

或批量:

for host in node1 node2 node3; do
  ssh-copy-id root@$host
done

3. 验证

ssh root@node1 hostname

无需输入密码即成功。


二、kubeadm 安装 k8s 免交互(核心)

1. 初始化 Master(免交互)

kubeadm init \
  --apiserver-advertise-address=192.168.1.10 \
  --pod-network-cidr=10.244.0.0/16 \
  --kubernetes-version=v1.29.0

2. 自动保存 join 命令(免手动复制)

kubeadm token create --print-join-command

可写入脚本:

kubeadm token create --print-join-command > join.sh

3. Worker 节点免密加入

bash join.sh

三、完全自动化脚本示例(免密安装思路)

#!/bin/bash
# 在所有节点执行基础环境
setenforce 0
swapoff -a

# 控制节点
ssh node1 "kubeadm init --pod-network-cidr=10.244.0.0/16" 

# 获取 join 命令
JOIN_CMD=$(ssh node1 "kubeadm token create --print-join-command")

# 工作节点加入
for n in node2 node3; do
  ssh $n "$JOIN_CMD"
done

四、常见误区

❌ 误以为 k8s 靠 SSH 通信
✅ 实际靠 TLS 证书 + token,SSH 只是方便运维

❌ 用 root 跑 kubelet
✅ 生产环境建议普通用户 + sudo


五、如果你指的是“sudo 免密”

visudo

添加:

username ALL=(ALL) NOPASSWD: ALL

如果你能具体说:

  • 是 SSH 免密
  • 还是 kubeadm 安装免交互
  • 或是 自动化部署(如 Ansible)

我可以给你更精确的方案。

0 踩