在开始安装前,需完成以下基础配置,确保系统符合K8S安装要求:
systemctl stop firewalld && systemctl disable firewalld
setenforce 0 && sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
swapoff -a && sed -i '/swap/s/^/#/' /etc/fstab
hostnamectl set-hostname k8s-master # Master节点主机名
echo "192.168.1.100 k8s-master" >> /etc/hosts # 替换为Master节点IP
echo "192.168.1.101 k8s-node1" >> /etc/hosts # 替换为Worker节点IP
yum install -y ntpdate && ntpdate ntp.aliyun.com
以上步骤需在**所有节点(Master+Worker)**上执行。
K8S依赖容器运行时,推荐使用Docker(需CentOS 7及以上):
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install -y docker-ce docker-ce-cli containerd.io
systemctl start docker && systemctl enable docker
docker --version # 应输出Docker版本信息
Docker安装完成后,需配置镜像加速(可选但推荐):
mkdir -p /etc/docker && tee /etc/docker/daemon.json <<EOF
{
"registry-mirrors": ["https://mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload && systemctl restart docker
通过yum安装kubelet(节点代理)、kubeadm(集群初始化工具)、kubectl(集群管理命令行):
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
- **安装组件**:
```bash
yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
systemctl enable kubelet && systemctl start kubelet
注意:安装完成后,kubelet会自动启动,但需等待kubeadm init初始化集群后才会正常运行。
Master节点是集群的控制中心,需执行以下命令初始化:
kubeadm init \
--apiserver-advertise-address=192.168.1.100 \ # 替换为Master节点IP
--pod-network-cidr=10.244.0.0/16 \ # 指定Pod网络CIDR(与后续网络插件匹配)
--image-repository registry.aliyuncs.com/google_containers # 使用国内镜像加速
初始化完成后,会输出类似以下信息(务必保存,用于Worker节点加入集群):
kubeadm join 192.168.1.100:6443 --token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
配置kubectl(用于管理集群):
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
验证Master节点状态:
kubectl get nodes # 应显示Master节点状态为"NotReady"(需安装网络插件后变为Ready)
K8S需要网络插件实现Pod间通信,推荐使用Flannel(轻量易用):
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
验证网络插件状态:
kubectl get pods -n kube-system # 应显示flannel相关Pod状态为"Running"
在Worker节点上执行Master节点初始化时输出的kubeadm join命令(替换为实际Token和IP):
kubeadm join 192.168.1.100:6443 --token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
验证Worker节点是否加入:
回到Master节点,执行:
kubectl get nodes # 应显示所有节点状态为"Ready"
kubelet无法启动:检查/var/log/messages或journalctl -xe,常见原因是swap未禁用或镜像拉取失败(可配置国内镜像加速)。kubeadm init失败:确保系统时间同步、网络畅通,或尝试添加--ignore-preflight-errors=all参数(仅用于测试环境)。kubeadm init指定的--pod-network-cidr一致(如Flannel默认使用10.244.0.0/16)。按照以上步骤,即可在CentOS上快速搭建一个基础的K8S集群。如需生产环境使用,建议补充高可用配置(如多Master节点)、存储插件(如NFS、Ceph)及安全认证(如TLS证书)。