1. Kubernetes集群搭建概述
Kubernetes(简称K8s)作为当前最流行的容器编排系统,已经成为云原生应用部署的事实标准。作为一名长期从事DevOps工作的工程师,我经常需要为不同规模的项目搭建K8s集群。本文将分享我从零开始搭建生产级Kubernetes集群的完整经验,涵盖从环境准备到集群部署的全过程。
为什么选择kubeadm作为部署工具?相比二进制部署方式,kubeadm提供了更简单的初始化流程,同时保留了足够的灵活性。它就像Kubernetes官方提供的"快速安装包",特别适合中小规模集群的部署。不过要注意,kubeadm默认配置可能不适合生产环境,我们需要根据实际需求进行调整。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备与系统配置
2.1 基础环境要求
在开始之前,我们需要准备至少两台Linux服务器(物理机或虚拟机均可)。建议配置:
- 操作系统:Ubuntu 20.04/22.04或CentOS 7/8
- 硬件:每节点至少2核CPU、4GB内存、20GB磁盘空间
- 网络:节点间网络互通,且能访问外网以下载所需软件包
生产环境建议使用3个Master节点实现高可用,本文为简化流程先演示单Master部署
2.2 系统通用配置
在所有节点上执行以下配置:
2.2.1 关闭防火墙和SELinux
bash复制# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
# 永久关闭SELinux
sed -i 's/enforcing/disabled/' /etc/selinux/config
setenforce 0
防火墙和SELinux会干扰K8s组件间的通信,在测试环境建议关闭。生产环境中如需保持开启,需要精心配置安全策略。
2.2.2 禁用Swap分区
bash复制# 临时禁用
swapoff -a
# 永久禁用
sed -ri 's/.*swap.*/#&/' /etc/fstab
Kubernetes设计上要求禁用Swap,因为内存交换会影响调度器对Pod资源使用的准确判断。
2.2.3 配置主机名和hosts
bash复制# 设置主机名(在各节点分别执行)
hostnamectl set-hostname <node-name> # 如master、node1等
# 在所有节点统一配置hosts
cat >> /etc/hosts <<EOF
192.168.1.100 master
192.168.1.101 node1
192.168.1.102 node2
EOF
2.2.4 内核参数调优
bash复制cat > /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bri
