news 2026/10/29 7:43:35

Kubernetes单master集群部署与生产环境实践指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Kubernetes单master集群部署与生产环境实践指南

1. 项目概述

在容器编排领域,Kubernetes(简称K8S)已成为事实上的行业标准。对于中小型企业或刚接触K8S的团队来说,从单master节点架构入手是最稳妥的选择。kubeadm作为官方推荐的集群部署工具,能够以最精简的步骤搭建符合生产要求的K8S环境。

我曾在多个实际生产项目中采用这种架构,它的优势在于:

  • 部署复杂度远低于多master高可用方案
  • 资源消耗更可控(通常2核4G配置即可运行)
  • 维护成本低且能满足中小规模业务需求
  • 后续可平滑扩展为多master集群

重要提示:单master架构适合测试环境和中小规模生产环境,对于核心业务系统建议至少部署3个master节点实现高可用。

2. 环境准备与系统配置

2.1 硬件资源规划

生产环境的最低配置建议:

  • Master节点:2核CPU/4GB内存/40GB磁盘
  • Worker节点:根据业务负载调整(建议至少2核/4GB)
  • 操作系统:Ubuntu 20.04 LTS或CentOS 7.9+

实际项目中我曾遇到内存不足导致apiserver频繁崩溃的情况,因此特别强调:

  • /var分区至少预留20GB(存放etcd数据)
  • swap必须彻底禁用(否则kubelet无法正常运行)

2.2 系统基础配置

在所有节点执行以下操作:

# 关闭防火墙(生产环境应配置安全组规则替代) systemctl stop firewalld && systemctl disable firewalld # 禁用SELinux setenforce 0 sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config # 关闭swap swapoff -a sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab # 加载内核模块 cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf br_netfilter ip_vs ip_vs_rr ip_vs_wrr ip_vs_sh nf_conntrack EOF # 配置sysctl cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 EOF sysctl --system

3. 容器运行时与kubeadm安装

3.1 Docker安装与配置

虽然containerd已成为默认运行时,但在实际生产中发现Docker的日志管理和调试更方便:

# 安装Docker CE yum install -y yum-utils yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo yum install -y docker-ce docker-ce-cli containerd.io # 配置cgroup驱动为systemd mkdir -p /etc/docker cat > /etc/docker/daemon.json <<EOF { "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2" } EOF systemctl enable --now docker

3.2 安装kubeadm三件套

配置阿里云镜像源加速安装:

cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF # 安装指定版本(建议选择较新的稳定版) yum install -y kubelet-1.23.8 kubeadm-1.23.8 kubectl-1.23.8 systemctl enable kubelet

4. 集群初始化实战

4.1 Master节点初始化

关键参数说明:

  • --pod-network-cidr:必须与后续安装的网络插件匹配
  • --apiserver-advertise-address:建议显式指定内网IP
  • --image-repository:使用国内镜像源加速
kubeadm init \ --apiserver-advertise-address=192.168.1.100 \ --image-repository registry.aliyuncs.com/google_containers \ --kubernetes-version v1.23.8 \ --service-cidr=10.96.0.0/12 \ --pod-network-cidr=10.244.0.0/16 # 初始化成功后配置kubectl mkdir -p $HOME/.kube cp -i /etc/kubernetes/admin.conf $HOME/.kube/config chown $(id -u):$(id -g) $HOME/.kube/config

4.2 网络插件安装

推荐使用flannel(配置简单且资源占用低):

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

验证网络状态:

kubectl get pods -n kube-system -l app=flannel kubectl get nodes -o wide

5. Worker节点加入集群

在Master节点上获取join命令:

kubeadm token create --print-join-command

在Worker节点执行输出的join命令(类似如下):

kubeadm join 192.168.1.100:6443 --token abcdef.0123456789abcdef \ --discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

6. 生产环境关键配置

6.1 证书自动续期配置

修改kubeadm配置实现证书自动续期:

# 查看当前证书有效期 kubeadm certs check-expiration # 配置自动续期 cat > /etc/kubernetes/kubeadm-config.yaml <<EOF apiVersion: kubeadm.k8s.io/v1beta3 kind: ClusterConfiguration controllerManager: extraArgs: experimental-cluster-signing-duration: "87600h" feature-gates: RotateKubeletServerCertificate=true scheduler: extraArgs: feature-gates: RotateKubeletServerCertificate=true EOF kubeadm init phase upload-config kubeadm --config /etc/kubernetes/kubeadm-config.yaml

6.2 关键组件监控配置

部署metrics-server监控资源使用:

kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml # 验证监控数据 kubectl top nodes

7. 常见问题排查指南

7.1 节点NotReady问题排查流程

  1. 检查kubelet状态:journalctl -u kubelet -n 50
  2. 验证网络插件:kubectl logs -n kube-system <flannel-pod>
  3. 检查CNI配置:ls /etc/cni/net.d/
  4. 测试Pod间通信:kubectl run test --image=busybox -- sleep 3600

7.2 证书过期处理方案

# 手动更新证书 kubeadm certs renew all systemctl restart kubelet # 更新kubeconfig mv $HOME/.kube/config $HOME/.kube/config.bak cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

8. 生产环境优化建议

8.1 关键参数调优

# 调整kubelet最大Pod数量 cat > /etc/default/kubelet <<EOF KUBELET_EXTRA_ARGS="--max-pods=150 --image-gc-high-threshold=85 --image-gc-low-threshold=80" EOF systemctl daemon-reload systemctl restart kubelet

8.2 备份etcd数据

# 手动备份 ETCDCTL_API=3 etcdctl \ --endpoints=https://127.0.0.1:2379 \ --cacert=/etc/kubernetes/pki/etcd/ca.crt \ --cert=/etc/kubernetes/pki/etcd/server.crt \ --key=/etc/kubernetes/pki/etcd/server.key \ snapshot save /opt/etcd-backup-$(date +%Y%m%d).db # 配置定时任务(每天凌晨2点备份) 0 2 * * * root /usr/local/bin/etcd-backup.sh

经过多个生产环境项目的验证,这套方案能稳定支撑200+Pod的运行。对于刚开始使用K8S的团队,建议先熟悉单master架构的运行机制,等业务规模扩大后再考虑升级为多master高可用架构。实际运维中发现,90%的异常问题都与网络配置或证书过期相关,因此务必做好这两方面的监控和维护。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/29 7:43:35

单Master节点Kubernetes生产集群实战部署指南

1. 项目概述最近在帮客户部署生产级Kubernetes集群时&#xff0c;发现很多技术文档要么过于简单要么太过复杂。今天我就来分享一个经过实战验证的单Master节点K8S集群搭建方案&#xff0c;这个配置已经在多个中小型生产环境稳定运行超过2年。为什么选择单Master架构&#xff1f…

作者头像 李华
网站建设 2026/10/29 7:43:29

DuckDB与MySQL在大数据查询性能上的对比分析

1. 超大数据集查询性能对比的必要性在数据量爆炸式增长的今天&#xff0c;处理超大规模数据集已成为数据工程师和分析师的日常挑战。最近我在一个包含3亿条记录的用户行为分析项目中&#xff0c;遇到了传统关系型数据库查询性能瓶颈的问题。这促使我系统性地对比测试了DuckDB和…

作者头像 李华
网站建设 2026/10/29 7:43:24

修复版微信壁纸表情包头像小程序源码:流量主接入前必填的五个坑

简介&#xff1a;这份修复版微信壁纸表情包头像小程序源码&#xff0c;面向希望快速搭建个性化内容平台并实现流量变现的开发者&#xff0c;尤其适合具备一定前端与后端基础、想切入小程序开发领域的人群。源码开源未加密、无授权限制&#xff0c;包含可对接支付的企业版与免支…

作者头像 李华
网站建设 2026/10/29 7:43:19

WorkBuddy+Obsidian:公式教材结构化与自动出题全流程

备课&#xff0c;应该是培训行业里最容易被低估的“隐形加班”。尤其是理工科、财会、工程类培训&#xff0c;一份公式教材从整理到出题&#xff0c;工作量远比想象中大。我见过太多讲师把周末耗在 Word 里敲公式&#xff0c;或者为了凑一套阶段测验翻遍三年前的讲义。直到我把…

作者头像 李华
网站建设 2026/10/29 7:43:19

扩散模型在多智能体系统全局状态重建中的应用

1. 项目概述GlobeDiff是一项针对多智能体系统中部分可观测性难题的创新解决方案。这个由扩散模型驱动的框架&#xff0c;能够从局部观测数据中重建全局状态&#xff0c;为分布式决策系统提供了全新的技术路径。我在研究多智能体强化学习系统时&#xff0c;经常遇到因局部观测导…

作者头像 李华
网站建设 2026/10/29 7:43:17

Fetch API二进制数据处理:Blob与ArrayBuffer实战指南

1. 为什么Fetch API的响应处理会成为前端开发的"隐形杀手"&#xff1f;第一次遇到Fetch API响应处理问题时&#xff0c;我正在为一个金融项目开发文件导出功能。当用户点击"导出Excel"按钮时&#xff0c;前端需要从服务器获取二进制数据并生成下载链接。我…

作者头像 李华