二进制基于kubeasz部署 K8s 1.34.x 高可用集群实战指南-第一章节基础环境准备(1-4)

二进制基于kubeasz部署 K8s 1.34.x 高可用集群实战指南-第一章节基础环境准备(1-4)

第一章:基础环境准备

目标:所有节点完成基础配置,160部署节点实现免密登录所有节点。


1.1 服务器清单

|----------|----------------|--------------|----------|
| 角色 | IP地址 | 主机名 | 性能 |
| Master1 | 192.168.44.101 | k8s-master1 | 2C4G100G |
| Master2 | 192.168.44.102 | k8s-master2 | 2C4G100G |
| Master3 | 192.168.44.103 | k8s-master3 | 2C4G100G |
| Harbor1 | 192.168.44.104 | k8s-harbor1 | 2C4G100G |
| Harbor2 | 192.168.44.105 | k8s-harbor2 | 2C4G100G |
| Etcd1 | 192.168.44.106 | k8s-etcd1 | 2C4G100G |
| Etcd2 | 192.168.44.107 | k8s-etcd2 | 2C4G100G |
| Etcd3 | 192.168.44.108 | k8s-etcd3 | 2C4G100G |
| HAProxy1 | 192.168.44.109 | k8s-haproxy1 | 2C4G100G |
| HAProxy2 | 192.168.44.110 | k8s-haproxy2 | 2C4G100G |
| Node1 | 192.168.44.111 | k8s-node1 | 2C4G100G |
| Node2 | 192.168.44.112 | k8s-node2 | 2C4G100G |
| Deploy | 192.168.44.160 | k8s-deploy | 2C4G100G |


1.2 所有节点执行 (13台)

复制代码
# 1. 配置主机名 (每台节点修改为自己的主机名)
hostnamectl set-hostname k8s-master1   
# ============================================
# 在 192.168.44.101 上执行
# ============================================
sudo hostnamectl set-hostname k8s-master1.example.com
exec bash

# ============================================
# 在 192.168.44.102 上执行
# ============================================
sudo hostnamectl set-hostname k8s-master2.example.com
exec bash

# ============================================
# 在 192.168.44.103 上执行
# ============================================
sudo hostnamectl set-hostname k8s-master3.example.com
exec bash

# ============================================
# 在 192.168.44.104 上执行
# ============================================
sudo hostnamectl set-hostname k8s-harbor1.example.com
exec bash

# ============================================
# 在 192.168.44.105 上执行
# ============================================
sudo hostnamectl set-hostname k8s-harbor2.example.com
exec bash

# ============================================
# 在 192.168.44.106 上执行
# ============================================
sudo hostnamectl set-hostname k8s-etcd1.example.com
exec bash

# ============================================
# 在 192.168.44.107 上执行
# ============================================
sudo hostnamectl set-hostname k8s-etcd2.example.com
exec bash

# ============================================
# 在 192.168.44.108 上执行
# ============================================
sudo hostnamectl set-hostname k8s-etcd3.example.com
exec bash

# ============================================
# 在 192.168.44.109 上执行
# ============================================
sudo hostnamectl set-hostname k8s-haproxy1.example.com
exec bash

# ============================================
# 在 192.168.44.110 上执行
# ============================================
sudo hostnamectl set-hostname k8s-haproxy2.example.com
exec bash

# ============================================
# 在 192.168.44.111 上执行
# ============================================
sudo hostnamectl set-hostname k8s-node1.example.com
exec bash

# ============================================
# 在 192.168.44.112 上执行
# ============================================
sudo hostnamectl set-hostname k8s-node2.example.com
exec bash

-----
# 在 192.168.44.113 上执行
# ============================================
sudo hostnamectl set-hostname k8s-node3.example.com
exec bash
------

# ============================================
# 在 192.168.44.160 上执行
# ============================================
sudo hostnamectl set-hostname k8s-deploy.example.com
exec bash

# 示例,其他节点对应修改

# 2. 配置 hosts 文件
# 3. 设置 root 密码为 123456
# 4. 开启 root SSH 登录
# 5. 关闭防火墙和 swap
# 6. 配置内核参数
# 7. 加载内核模块
# 8. 时间同步

sudo tee /etc/hosts << EOF
192.168.44.101 k8s-master1
192.168.44.102 k8s-master2
192.168.44.103 k8s-master3
192.168.44.104 k8s-harbor1
192.168.44.105 k8s-harbor2
192.168.44.106 k8s-etcd1
192.168.44.107 k8s-etcd2
192.168.44.108 k8s-etcd3
192.168.44.109 k8s-haproxy1
192.168.44.110 k8s-haproxy2
192.168.44.111 k8s-node1
192.168.44.112 k8s-node2
192.168.44.113 k8s-node3
192.168.44.160 k8s-deploy
192.168.44.188 k8s-api
EOF

sudo sed -i 's/^#\?PermitRootLogin.*/PermitRootLogin yes/' /etc/ssh/sshd_config
sudo sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication yes/' /etc/ssh/sshd_config
echo "root:123456" | sudo chpasswd
sudo systemctl restart ssh

sudo ufw allow ssh
sudo systemctl stop ufw
sudo systemctl disable ufw

sudo systemctl stop ufw && sudo systemctl disable ufw
sudo swapoff -a && sudo sed -i '/swap/d' /etc/fstab



sudo sysctl --system
sudo modprobe overlay && sudo modprobe br_netfilter

sudo apt update && sudo apt install -y systemd-timesyncd
sudo systemctl restart systemd-timesyncd && sudo systemctl enable systemd-timesyncd

1.3 部署节点免密登录配置 (仅在 160 执行)

复制代码
# 1. 生成 SSH 密钥
ssh-keygen -t rsa -b 4096 -N "" -f ~/.ssh/id_rsa

# 先安装 sshpass(解决命令不存在)
apt update && apt install -y sshpass

# 再批量推送公钥到所有节点
for ip in 101 102 103 104 105 106 107 108 109 110 111 112; do 
    sshpass -p "123456" ssh-copy-id -o StrictHostKeyChecking=no root@192.168.44.$ip
done

# 3. 验证免密登录
for ip in 101 102 103 104 105 106 107 108 109 110 111 112 160; do
    echo "=== 192.168.44.$ip ==="
    ssh root@192.168.44.$ip "hostname"
done

批量在所有 12 台节点上设置 ip_forward=1 并生效

复制代码
for ip in 101 102 103 104 105 106 107 108 109 110 111 112; do
    echo "=== 配置 192.168.44.$ip ==="
    ssh root@192.168.44.$ip "
        # 写入内核配置
        cat > /etc/sysctl.d/k8s.conf << EOF
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
vm.swappiness = 0
EOF
        # 加载内核模块
        modprobe overlay
        modprobe br_netfilter
        # 立即生效内核参数
        sysctl --system
    "
done

检查清单:


1. 批量验证所有节点连通性(最关键)

复制代码
for ip in 101 102 103 104 105 106 107 108 109 110 111 112 160; do
    echo "=== 192.168.44.$ip ==="
    ssh root@192.168.44.$ip "hostname; uptime"
done

2. 批量检查 swap 是否关闭(K8s 必须关闭)

复制代码
for ip in 101 102 103 104 105 106 107 108 109 110 111 112; do
    echo "=== 192.168.44.$ip ==="
    ssh root@192.168.44.$ip "swapon --show"
done

3. 批量检查内核参数(K8s 必需)

复制代码
for ip in 101 102 103 104 105 106 107 108 109 110 111 112; do
    echo "=== 192.168.44.$ip ==="
    ssh root@192.168.44.$ip "sysctl net.ipv4.ip_forward"
done

总结

基于目前优化后的环境可以直接开始安装:

  1. Docker / containerd
  2. kubeadm / kubelet / kubectl
  3. Etcd 集群
  4. HAProxy + Keepalived
  5. Master 节点初始化
  6. Node 节点加入集群

第一章检查清单

|--------|------------------------------------|------------|
| 检查项 | 命令 | 预期结果 |
| 主机名 | hostname | 正确的主机名 |
| root密码 | su - root | 123456 可登录 |
| 免密登录 | ssh root@192.168.44.101 hostname | 无需密码 |
| 防火墙 | ufw status | inactive |
| swap | free -m | grep Swap | 0 |
| Docker | docker version | 显示版本 |


相关推荐
GGG76614 分钟前
Python 运维自动化:psutil+IPy 系统与网络信息采集深度实战
运维·python·云原生·pip
dazhong201226 分钟前
Docker 入门篇(八)-- CentOS7 安装 MySQL 8
mysql·docker·容器
w200512241 小时前
Pod管理
linux·服务器·云原生·容器·k8s·podman
sryyd_023 小时前
Kubernetes Pod 管理从入门到实战:命令、YAML 与生命周期全解析
云原生·容器·kubernetes
2601_962218613 小时前
万象生鲜系统全链路溯源一码查询技术实现食材来源可查
分布式·微服务·云原生·架构
2601_962218474 小时前
万象生鲜系统跨仓调拨算法助力生鲜企业供应链数字化协同运营
大数据·运维·微服务·云原生·架构
智购科技无人售货机工厂5 小时前
2026自动售货机防拆机物理安全设计:从安全螺丝到结构互锁的工程实践~YH
android·网络·驱动开发·python·单片机·安全·云原生
2601_962218475 小时前
万象生鲜系统多仓协同同步技术支撑生鲜企业多仓模式数字化转型
大数据·运维·微服务·云原生·架构
2601_962218616 小时前
万象生鲜系统大数据采购预测算法降低库存积压稳居第一
分布式·微服务·云原生·架构
Larru-Sun6 小时前
从零开始用 Docker 部署 Node.js 后端服务
docker·容器·node.js