ssh配置
安装openssh-server
sudo apt update
# 安装后会自动开启服务
sudo apt install -y openssh-server
# 查看状态
sudo systemctl status ssh
sudo systemctl start ssh
sudo systemctl enable ssh
ssh免密登录
在控制服务器操作的电脑上,执行以下命令
cd C:\Users\Rx\.ssh
ssh-keygen -t rsa -b 4096 -C "你的注释,比如:win11-to-ubuntu-vm"
# 查看公钥
cat C:\Users\Rx/.ssh/id_ed25519.pub
-t rsa:指定密钥类型为 RSA-b 4096:指定密钥长度为 4096 位(更安全)-C:添加注释,帮助识别这个密钥的用途
在ubuntu上操作
# 创建 .ssh 目录(如果不存在)
mkdir -p ~/.ssh
# 设置正确的权限
chmod 700 ~/.ssh
# 将公钥添加到授权文件,必须是完整的字符串
echo "秘钥" >> ~/.ssh/authorized_keys
# 设置授权文件权限
chmod 600 ~/.ssh/authorized_keys
在win11上操作
ssh -i C:\Users\Rx\.ssh\私钥名称 root@192.168.3.211
用户配置
启用root账户
# 设置root密码
sudo passwd root
# 切换到root用户
su root
开启root账号ssh连接
sudo vim /etc/ssh/sshd_config
# 添加 PermitRootLogin yes
sudo systemctl restart ssh
休闲版
echo 'PermitRootLogin yes' | sudo tee -a /etc/ssh/sshd_config >/dev/null \
&& sudo systemctl restart ssh
如果不小改乱了配置,可以执行以下命令:
sudo cp /usr/share/openssh/sshd_config /etc/ssh/sshd_config
关闭无人值守模式
原因是 K8s 节点升级应该走维护流程:cordon/drain -> 升级/重启 -> uncordon。Kubernetes 官方节点升级文档也要求升级节点前先 kubectl drain,Ubuntu 官方文档也说明 unattended-upgrades 可自动安装安全更新,甚至可配置自动重启,这对 K8s 节点很容易造成不可控扰动
sudo systemctl disable --now apt-daily.timer
sudo systemctl disable --now apt-daily-upgrade.timer
sudo systemctl disable --now apt-daily.service
sudo systemctl disable --now apt-daily-upgrade.service
sudo systemctl disable --now unattended-upgrades.service
#验证
systemctl is-enabled apt-daily.timer
systemctl is-active apt-daily.timer
systemctl is-enabled apt-daily-upgrade.timer
systemctl is-active apt-daily-upgrade.timer
systemctl is-enabled unattended-upgrades.service
systemctl is-active unattended-upgrades.service
把 VMware 虚拟机网卡类型从 E1000 改成 VMXNET3。
如果 UI 里看不到网卡类型,可以关闭虚拟机后修改 .vmx 文件:
ethernet0.virtualDev = "vmxnet3"
原来如果是:
ethernet0.virtualDev = "e1000"
就改成:
ethernet0.virtualDev = "vmxnet3"
启动后检查驱动:
ethtool -i ens160
期望看到:
driver: vmxnet3
修改网卡
修改为 VMXNET3 后,Ubuntu 中网卡名可能从 ens33 变成 ens160。
这时需要检查所有写死旧网卡名的配置:
grep -R "ens33" /etc/keepalived /etc/haproxy /etc/netplan /etc/kubernetes /etc/systemd /etc/NetworkManager 2>/dev/null
常见需要修改:
/etc/netplan/*.yaml
/etc/keepalived/keepalived.conf
/etc/NetworkManager/system-connections/*.nmconnection
Keepalived 中如果有:
vrrp_instance VI_1 {
interface ens33
}
改成:
vrrp_instance VI_1 {
interface ens160
}
如果有 track_interface,也要一起改:
track_interface {
ens160
}
NetworkManager 中也可能残留旧网卡名,例如:
/etc/NetworkManager/system-connections/有线连接 1.nmconnection:interface-name=ens33
推荐用 nmcli 修改,而不是直接编辑文件:
# 查看所有连接
nmcli connection show
nmcli connection modify "有线连接 1" connection.interface-name ens160
nmcli connection reload
nmcli connection up "有线连接 1"
如果看到原本 ens160 挂在 有线连接 2 上,切换后变成:
NAME TYPE DEVICE
有线连接 1 ethernet ens160
有线连接 2 ethernet --
说明当前活动连接已经切到 有线连接 1。为了避免重启后又自动切回 有线连接 2,可以固定自动连接优先级:
nmcli connection modify "有线连接 1" connection.autoconnect yes connection.autoconnect-priority 100
nmcli connection modify "有线连接 2" connection.autoconnect no
再确认 有线连接 1 的 IP、网关和 DNS 是否正确:
nmcli connection show "有线连接 1" | egrep "interface-name|ipv4.method|ipv4.addresses|ipv4.gateway|ipv4.dns|autoconnect"
ip addr show ens160
ip route
如果虚拟机所在宿主机有两个物理网口,需要注意:虚拟机内部的 ens160 只代表虚拟机里的网卡,不决定桥接到宿主机哪个物理网口。桥接到哪个物理网口,要在 VMware 的虚拟网络设置里配置,例如 VMnet0 桥接到指定宿主机网卡。Ubuntu 里只需要保证 ens160 配好固定 IP,Keepalived 也指向 ens160。
改完后检查:
netplan apply
systemctl restart keepalived
systemctl status keepalived
ip addr show ens160
ip addr | grep 192.168.3.217
三台主节点建议一台一台改。每改完一台,都确认:
kubectl get nodes -o wide
systemctl is-active kubelet containerd keepalived haproxy
ip addr | grep 192.168.3.217
设置主机名修改hostname
在 192.168.3.214:
sudo hostnamectl set-hostname k8s-master1
在 192.168.3.215:
sudo hostnamectl set-hostname k8s-master2
在 192.168.3.216:
sudo hostnamectl set-hostname k8s-master3
三台节点都写入 hosts:
cat <<'EOF' | sudo tee -a /etc/hosts
192.168.3.214 k8s-master1
192.168.3.215 k8s-master2
192.168.3.216 k8s-master3
192.168.3.217 k8s-api-vip
EOF