注意:

        尽量所有组件都是用二进制安装包进行安装,国内镜像很多不通的,资源也不稳定,

版本之间的各个组件版本镜像资源github基本不可用,新版本引用的组件镜像资源gitee比较不一致

适用场景:
  • 企业内网环境

  • 生产环境快速部署

版本信息:(最新版本)
  • Kubernetes: v1.35.x

  • containerd: 1.7+

  • Ubuntu: 22.04/24.04 LTS

  • Calico: v3.28+

架构说明

集群拓扑

                    ┌─────────────────┐
                    │   VIP (HA)      │
                    │  192.168.0.112  │
                    └────────┬────────┘
                             │
              ┌──────────────┼────────────────┐
              │              │                │
      ┌───────▼──────┐ ┌─────▼───────┐ ┌──────▼───────┐
      │  Master-01   │ │ Master-02   │ │ Master-03    │
      │ 192.168.0.105│ │192.168.0.103│ │192.168.0.110 │
      └──────────────┘ └─────────────┘ └──────────────┘
              │               │               │
         ┌────┴───────────────┴───────────────┴────┐
         │          etcd cluster (HA)              │
         └────────────────────┬────────────────────┘
                              │
         ┌────────────────────┼────────────────────┐
         │                    │                    │
   ┌─────▼───────┐    ┌───────▼──────┐    ┌────────▼──────┐
   │ Worker-01   │    │  Worker-02   │    │  Worker-03    │
   │192.168.0.107│    │192.168.0.108 │    │ 192.168.0.109 │
   └─────────────┘    └──────────────┘    └───────────────┘

服务器规划

主机名 IP 地址 角色 配置要求 说明
k8s-master-01 192.168.0.105 Control Plane 2C4G, 50GB 主控节点1
k8s-master-02 192.168.0.103 Control Plane 2C4G, 50GB 主控节点2
k8s-master-03 192.168.0.110 Control Plane 2C4G, 50GB 主控节点3
k8s-worker-01 192.168.0.107 Worker 4C8G, 100GB 工作节点1
k8s-worker-02 192.168.0.108 Worker 4C8G, 100GB 工作节点2
k8s-worker-03 192.168.0.109 Worker 4C8G, 100GB 工作节点3
k8s-lb 192.168.0.104 Load Balancer 1C2G, 20GB HAProxy+Keepalived
VIP 192.168.0.112 Virtual IP - 虚拟IP(浮动)

一、所有节点前置准备(所有节点)

1.1 配置主机名和 hosts

        在每个节点上设置主机名:

        

# Master-01
sudo hostnamectl set-hostname k8s-master-01

# Master-02
sudo hostnamectl set-hostname k8s-master-02

# Master-03
sudo hostnamectl set-hostname k8s-master-03

# Worker-01
sudo hostnamectl set-hostname k8s-worker-01

# Worker-02
sudo hostnamectl set-hostname k8s-worker-02

# Worker-03
sudo hostnamectl set-hostname k8s-worker-03

# LB
sudo hostnamectl set-hostname k8s-lb

在所有节点配置 hosts:

sudo tee -a /etc/hosts <<EOF
192.168.0.104 k8s-lb
192.168.0.105 k8s-master-01
192.168.0.103 k8s-master-02
192.168.0.110 k8s-master-03
192.168.0.107 k8s-worker-01
192.168.0.108 k8s-worker-02
192.168.0.109 k8s-worker-03
192.168.0.112 k8s-apiserver-vip
EOF

验证:

ping -c 2 k8s-master-01
ping -c 2 k8s-apiserver-vip

1.2 系统优化配置

关闭 Swap:

sudo swapoff -a
sudo sed -i '/swap/s/^/#/' /etc/fstab

加载内核模块:

cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
# modprobe 内核插件 sudo modprobe [xxx] 加载指定模板
sudo modprobe overlay
sudo modprobe br_netfilter

配置内核参数:

这三个参数是部署 Kubernetes 集群时必须配置的核心内核网络参数

cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables  = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward                 = 1
EOF

# 让 Linux 内核正确处理容器网络的数据包转发、iptables 规则生效,确保 K8s 的网络插件(如 Calico、 Flannel、Weave 等)能正常工作,解决容器跨节点通信、Service 转发等核心网络问题。
# net.bridge.bridge-nf-call-iptables = 1
# 让 Linux 内核的桥接(bridge)网络设备在处理数据包时,调用 iptables 的过滤规则(包括 filter、nat 表等)。
# net.bridge.bridge-nf-call-ip6tables = 1
# 和上一个参数原理一致,但针对 **IPv6 数据包**,让网桥转发的 IPv6 数据包调用 ip6tables 规则。

sudo sysctl --system

验证:

lsmod | grep br_netfilter
lsmod | grep overlay
sysctl net.ipv4.ip_forward

1.3 时间同步(所有节点)

# 安装 chrony
sudo apt update
sudo apt install -y chrony

# 配置国内 NTP 服务器
sudo tee /etc/chrony/chrony.conf <<EOF
server ntp.aliyun.com iburst
server ntp1.aliyun.com iburst
server ntp2.aliyun.com iburst
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
EOF

# 重启服务
sudo systemctl restart chrony
sudo systemctl enable chrony

# 验证
chronyc tracking

1.4 关闭防火墙(测试环境)(所有节点)

二、安装 containerd (所有节点)

可参考网上方案.....

三、安装 Kubernetes 组件

可参考网上方案.....

四、配置 HAProxy + Keepalived

五、初始化第一个 Master 节点

六、安装网络插件 Calico

七、加入其他 Master 节点

八、加入 Worker 节点

九、部署测试应用

十、集群管理工具 

Kuboard (首次启动会日志打印)

默认账号:admin
默认密码:Kuboard123

管理界面

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐