从零到一:CentOS 7上Docker与Kubernetes单机部署终极指南
在当今云原生技术蓬勃发展的时代,掌握容器化部署技能已成为开发者和运维人员的必备能力。本指南将带您完成在CentOS 7系统上,使用Docker 24.0.5和Kubernetes 1.20.0版本搭建单机版Kubernetes集群的全过程。不同于零散的网络教程,本文经过实战验证,整合了部署过程中可能遇到的各种"坑"及其解决方案,让您能够一次性成功部署,避免反复折腾。
1. 系统环境准备
在开始部署之前,我们需要对CentOS 7系统进行一些必要的配置,以确保后续步骤能够顺利进行。这些准备工作包括关闭不必要的安全功能、配置网络参数以及更新系统软件包。
1.1 关闭SELinux和交换分区
Kubernetes对系统的安全上下文和内存管理有特定要求,我们需要进行以下调整:
bash复制# 临时关闭交换分区
swapoff -a
# 永久关闭交换分区(需重启生效)
sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
# 临时关闭SELinux
setenforce 0
# 永久关闭SELinux
sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config
注意:生产环境中不建议完全关闭SELinux,可以考虑将其设置为permissive模式
1.2 防火墙配置
根据您的网络环境需求,可以选择完全关闭防火墙或仅开放必要端口:
bash复制# 完全关闭防火墙(适合测试环境)
systemctl stop firewalld && systemctl disable firewalld
# 或者仅开放Kubernetes所需端口(适合生产环境)
firewall-cmd --permanent --add-port=6443/tcp # Kubernetes API server
firewall-cmd --permanent --add-port=2379-2380/tcp # etcd server
firewall-cmd --permanent --add-port=10250/tcp # Kubelet API
firewall-cmd --permanent --add-port=10251/tcp # Kube-scheduler
firewall-cmd --permanent --add-port=10252/tcp # Kube-controller-manager
firewall-cmd --permanent --add-port=30000-32767/tcp # NodePort服务
firewall-cmd --reload
1.3 内核参数配置
Kubernetes需要特定的内核模块和参数来支持网络功能:
bash复制# 加载br_netfilter模块
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF
# 配置网络桥接参数
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
# 应用配置
sudo sysctl --system
1.4 系统更新与基础工具安装
确保系统是最新状态并安装必要工具:
bash复制# 配置阿里云yum源
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
# 添加EPEL源
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyuncs.com/repo/epel-7.repo
# 清理并重建缓存
yum clean all
yum makecache
# 系统更新及基础工具安装
yum -y update &&
