Kubernetes集群环境搭建全流程解析

一、环境准备:虚拟机部署与基础配置

1.1 虚拟机环境搭建

在主流虚拟化平台中创建三台虚拟机作为集群节点,建议采用CentOS 8或Ubuntu 20.04 LTS等稳定发行版。安装过程中需注意:

  • 选择最小化安装模式减少资源占用
  • 启用root账户并设置强密码(建议包含大小写字母、数字及特殊字符)
  • 分配至少2核CPU和4GB内存资源
  • 磁盘空间建议不少于40GB(含20GB系统盘和20GB数据盘)

完成首节点安装后,通过克隆功能快速创建另外两个节点。克隆时需注意:

  • 选择完整克隆而非链接克隆
  • 修改MAC地址分配策略为随机生成
  • 关闭自动启动选项避免立即启动

1.2 网络配置标准化

采用静态IP方案确保集群稳定性,配置步骤如下:

  1. 使用nmtui工具进入交互式配置界面
  2. 填写网络参数(示例配置):
    1. Addresses: 192.168.100.151/24
    2. Gateway: 192.168.100.1
    3. DNS servers: 8.8.8.8, 114.114.114.114
  3. 重启网络服务验证配置:
    1. systemctl restart NetworkManager
    2. ip addr show
    3. ping baidu.com

建议使用MobaXterm等终端工具建立SSH连接,其优势在于:

  • 支持多标签管理
  • 内置SFTP文件传输
  • 支持X11图形转发
  • 具备会话保存功能

二、系统级优化配置

2.1 主机标识管理

统一修改主机名并配置DNS解析:

  1. # 修改主机名
  2. hostnamectl set-hostname k8s-master
  3. # 配置/etc/hosts文件
  4. cat >> /etc/hosts <<EOF
  5. 192.168.100.151 k8s-master
  6. 192.168.100.152 k8s-node1
  7. 192.168.100.153 k8s-node2
  8. EOF

验证配置:

  1. ping -c 3 k8s-node1
  2. getent hosts k8s-master

2.2 安全策略调整

执行以下命令关闭非必要服务:

  1. # 防火墙配置
  2. systemctl disable --now firewalld
  3. systemctl status firewalld | grep inactive
  4. # SELinux配置
  5. setenforce 0
  6. sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
  7. # 验证配置
  8. sestatus | grep disabled

2.3 存储性能优化

关闭swap分区并持久化配置:

  1. # 临时关闭
  2. swapoff -a
  3. # 永久禁用
  4. sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
  5. # 验证配置
  6. free -h | grep Swap

三、内核参数调优

3.1 模块加载配置

创建模块配置文件:

  1. cat > /etc/modules-load.d/k8s.conf <<EOF
  2. overlay
  3. br_netfilter
  4. EOF
  5. # 立即加载模块
  6. modprobe overlay
  7. modprobe br_netfilter
  8. # 验证加载状态
  9. lsmod | grep -E 'overlay|br_netfilter'

3.2 网络参数优化

创建sysctl配置文件:

  1. cat > /etc/sysctl.d/99-kubernetes.conf <<EOF
  2. net.bridge.bridge-nf-call-iptables = 1
  3. net.ipv4.ip_forward = 1
  4. net.ipv4.conf.all.route_localnet = 1
  5. vm.swappiness = 0
  6. vm.overcommit_memory = 1
  7. EOF
  8. # 应用配置
  9. sysctl --system
  10. # 验证关键参数
  11. sysctl net.bridge.bridge-nf-call-iptables

3.3 时间同步配置

安装chrony服务确保时间同步:

  1. yum install -y chrony
  2. systemctl enable --now chronyd
  3. # 验证时间同步状态
  4. chronyc sources -v
  5. timedatectl status | grep synchronized

四、安装介质准备

4.1 容器运行时部署

推荐使用containerd作为运行时,安装步骤:

  1. # 添加仓库配置
  2. cat > /etc/yum.repos.d/docker-ce.repo <<EOF
  3. [docker-ce-stable]
  4. name=Docker CE Stable
  5. baseurl=https://download.docker.com/linux/centos/7/\$basearch/stable
  6. enabled=1
  7. gpgcheck=1
  8. EOF
  9. # 安装containerd
  10. yum install -y containerd.io
  11. # 配置containerd
  12. mkdir -p /etc/containerd
  13. containerd config default > /etc/containerd/config.toml
  14. sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
  15. # 启动服务
  16. systemctl enable --now containerd

4.2 安装工具准备

安装kubeadm及相关组件:

  1. # 添加kubernetes仓库
  2. cat > /etc/yum.repos.d/kubernetes.repo <<EOF
  3. [kubernetes]
  4. name=Kubernetes
  5. baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch
  6. enabled=1
  7. gpgcheck=1
  8. EOF
  9. # 安装组件
  10. yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
  11. # 锁定版本
  12. yum versionlock add kubelet kubeadm kubectl
  13. # 启动kubelet服务
  14. systemctl enable --now kubelet

五、集群初始化与验证

5.1 主节点初始化

执行初始化命令(根据实际镜像版本调整):

  1. kubeadm init \
  2. --apiserver-advertise-address=192.168.100.151 \
  3. --image-repository registry.aliyuncs.com/google_containers \
  4. --kubernetes-version v1.28.0 \
  5. --service-cidr=10.96.0.0/12 \
  6. --pod-network-cidr=10.244.0.0/16

初始化完成后执行:

  1. mkdir -p $HOME/.kube
  2. sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  3. sudo chown $(id -u):$(id -g) $HOME/.kube/config

5.2 网络插件部署

推荐使用Calico网络方案:

  1. kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
  2. # 验证网络组件状态
  3. kubectl get pods -n kube-system | grep calico

5.3 工作节点加入

在从节点执行join命令(从初始化输出获取):

  1. kubeadm join 192.168.100.151:6443 \
  2. --token abcdef.0123456789abcdef \
  3. --discovery-token-ca-cert-hash sha256:xxxxxx

5.4 集群状态验证

  1. # 验证节点状态
  2. kubectl get nodes
  3. # 验证核心组件状态
  4. kubectl get cs
  5. # 运行测试Pod
  6. kubectl run test --image=nginx --restart=Never
  7. kubectl get pods -o wide

六、运维建议与最佳实践

  1. 备份策略:定期备份/etc/kubernetes目录和etcd数据
  2. 升级方案:采用”先升级控制平面,再升级工作节点”的顺序
  3. 监控配置:建议部署Prometheus+Grafana监控体系
  4. 日志管理:配置ELK或Loki日志收集方案
  5. 安全加固:定期更新组件版本,配置RBAC权限控制

通过以上系统化的配置流程,可构建出高可用的Kubernetes生产环境。实际部署时需根据具体业务需求调整参数配置,并建立完善的运维管理体系确保集群稳定运行。