包头石拐区某制造企业Kubernetes集群从零搭建:高可用生产环境部署实战

石拐区制造企业Kubernetes生产集群部署全流程

2026年7月,包头石拐区某装备制造企业计划将原有单体应用架构迁移至微服务容器化平台。不舍昼夜技术运维团队为其搭建了一套3 Master + 5 Worker的高可用Kubernetes集群,用于运行MES(制造执行系统)和设备监控平台。

一、环境规划与硬件准备

集群硬件配置:

节点角色 数量 硬件配置 IP地址
Master节点 3 Dell R650: 2×Xeon Silver 4314, 64GB, 2×480GB SSD 10.10.1.11-13
Worker节点 5 Dell R650: 2×Xeon Gold 6330, 128GB, 2×960GB SSD 10.10.1.21-25
负载均衡 2 HAProxy + Keepalived (部署在Master节点) VIP: 10.10.1.10
存储节点 1 Dell R750: 12×8TB SATA, TrueNAS 10.10.1.30

软件版本规划:

  • OS: Ubuntu 22.04 LTS Server (内核5.15)
  • 容器运行时: containerd 1.7.20
  • Kubernetes: v1.30.2
  • 网络插件: Calico v3.27 (BGP模式)
  • 存储: NFS Provisioner + TrueNAS后端
  • Ingress: Nginx Ingress Controller v1.11
  • 监控: Prometheus + Grafana + AlertManager
  • 日志: ELK Stack (Elasticsearch 8.14 + Fluent Bit)

二、系统初始化配置

在所有8台服务器上执行以下初始化操作:

1. 系统基础配置

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

# 内核参数调整
cat >> /etc/sysctl.conf << EOF
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
fs.inotify.max_user_watches = 524288
fs.file-max = 2097152
vm.max_map_count = 262144
EOF
sysctl --system

# 加载内核模块
modprobe overlay
modprobe br_netfilter
echo -e "overlay\nbr_netfilter" > /etc/modules-load.d/k8s.conf

2. containerd安装与配置

# 安装containerd
apt-get update && apt-get install -y containerd

# 生成默认配置
containerd config default > /etc/containerd/config.toml

# 修改SystemdCgroup为true
sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml

# 配置镜像加速器(阿里云)
sed -i '/\[plugins."io.containerd.grpc.v1.cri".registry.mirrors\]/a\    [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
      endpoint = ["https://registry.cn-hangzhou.aliyuncs.com"]' /etc/containerd/config.toml

systemctl restart containerd && systemctl enable containerd

三、HAProxy + Keepalived高可用配置

在3台Master节点上部署HAProxy和Keepalived,为kube-apiserver提供负载均衡:

# HAProxy配置 (/etc/haproxy/haproxy.cfg)
frontend k8s-api
    bind *:6443
    mode tcp
    option tcplog
    default_backend k8s-api-backend

backend k8s-api-backend
    mode tcp
    option tcp-check
    balance roundrobin
    server master1 10.10.1.11:6443 check
    server master2 10.10.1.12:6443 check
    server master3 10.10.1.13:6443 check
# Keepalived配置 (Master1为MASTER,其余为BACKUP)
vrrp_instance VI_1 {
    state MASTER
    interface ens192
    virtual_router_id 51
    priority 100
    advert_int 1
    virtual_ipaddress {
        10.10.1.10/24
    }
    track_script {
        check_haproxy
    }
}

四、Kubernetes集群初始化

1. 初始化第一个Master节点

kubeadm init   --control-plane-endpoint "10.10.1.10:6443"   --upload-certs   --kubernetes-version v1.30.2   --pod-network-cidr 10.244.0.0/16   --service-cidr 10.96.0.0/12   --cri-socket unix:///run/containerd/containerd.sock

初始化完成后,保存输出的kubeadm join命令(含control-plane证书和worker加入命令)。

2. 加入其余Master节点

kubeadm join 10.10.1.10:6443   --token <token>   --discovery-token-ca-cert-hash sha256:<hash>   --control-plane   --certificate-key <certificate-key>

3. 加入Worker节点

kubeadm join 10.10.1.10:6443   --token <token>   --discovery-token-ca-cert-hash sha256:<hash>

4. 安装Calico网络插件

kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

# 验证节点状态
kubectl get nodes -o wide
# 全部显示Ready

五、生产环境必备组件部署

1. NFS动态存储

在TrueNAS上创建NFS共享,部署NFS Subdir External Provisioner:

helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/
helm install nfs-storage nfs-subdir-external-provisioner/nfs-subdir-external-provisioner   --set nfs.server=10.10.1.30   --set nfs.path=/mnt/tank/k8s-storage   --set storageClass.name=nfs-storage   --set storageClass.defaultClass=true

2. 监控告警

# 安装kube-prometheus-stack
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm install monitoring prometheus-community/kube-prometheus-stack   --namespace monitoring --create-namespace   --set grafana.service.type=NodePort   --set grafana.service.nodePort=30300

# 配置AlertManager告警通知(企业微信)
# 部署node-exporter、kube-state-metrics自动采集

3. 日志收集

# Fluent Bit作为DaemonSet部署在每个节点
kubectl apply -f https://raw.githubusercontent.com/fluent/fluent-bit/master/install/kubernetes/fluent-bit.yaml

# Elasticsearch + Kibana部署在专用命名空间
helm install elasticsearch elastic/eck-elasticsearch --version 2.14.0
helm install kibana elastic/eck-kibana --version 2.14.0

六、高可用测试验证

部署完成后进行高可用性测试:

  • Master节点故障测试:关闭master1节点,集群API仍可通过VIP访问,Pod调度正常
  • Worker节点故障测试:关闭worker3节点,其上运行的Pod在30秒内自动迁移至其他节点
  • 负载均衡测试:持续curl VIP:6443,Master节点轮询响应正常
  • PVC动态分配测试:创建PVC自动在NFS上创建目录并挂载

集群上线后运行MES系统和设备监控平台,承载20个微服务,日常Pod数量约85个,集群CPU平均利用率约35%,内存利用率约48%。

包头石拐区企业如有Kubernetes部署、服务器运维、容器化改造等需求,请拨打17704868686,不舍昼夜技术运维团队提供专业服务。

【不舍昼夜技术 · 包头IT一站式服务】

电脑/服务器:重装系统、硬件升级、服务器Linux/Windows环境部署

数据安全:硬盘/U盘/数据库数据恢复、网络安全加固、病毒清理

弱电安防:监控安装、机房建设、综合布线、门禁人脸识别

办公耗材:打印机维修、硒鼓墨盒配送、复印机租赁

软件开发:企业官网、小程序开发、APP定制、ERP系统


服务单位:内蒙古不舍昼夜技术有限公司
业务涵盖:电脑维修/系统重装/数据恢复/监控安防/弱电布线/打印耗材
技术热线:17704868686(包头本地团队,随叫随到!)

上一篇 包头土右旗某农产品合作社订货小程序开发:从田间直供到社区团购的数字化转型
下一篇 包头青山区某设计院软件正版化整改全案:Autodesk Adobe Microsoft合规化之路