> 技术文档 > 2025最新 centos8 部署k8s集群_centos8镜像

2025最新 centos8 部署k8s集群_centos8镜像


2025最新 centos8 部署k8s集群

机器规格数据:3台 4C4G 硬盘30GB的机器 一台master 两台 node节点

操作系统:CentOS-8.5.2111 选择最小化安装

一、centos8 机器进行初始化操作

1、镜像下载与安装部署

centos8 镜像:https://mirrors.aliyun.com/centos/8/isos/x86_64/CentOS-8.5.2111-x86_64-dvd1.iso?spm=a2c6h.25603864.0.0.61c67e09u1h5Zm

我用的是阿里云的的 CentOS-8.5.2111 这个版本 具体安装我就不介绍了 在VMware里选最小化安装就行

2、修改主机名称: 根据自己机器的 ip 地址 来进行修改
hostnamectl set-hostname master-192-168-146-131hostnamectl set-hostname node-192-168-146-132hostnamectl set-hostname node-192-168-146-133
3、关闭防火墙 、selinux 、 swap等
关闭防火墙:$ systemctl stop firewalld$ systemctl disable firewalld​关闭selinux:$ sed -i \'s/enforcing/disabled/\' /etc/selinux/config # 永久$ setenforce 0 # 临时​关闭swap:$ swapoff -a # 临时$ vim /etc/fstab # 永久​在master添加hosts:(内网ip)$ cat >> /etc/hosts < /etc/sysctl.d/k8s.conf << EOFnet.bridge.bridge-nf-call-ip6tables = 1net.bridge.bridge-nf-call-iptables = 1EOF$ sysctl --system # 生效
4、修改yum源为阿里云yum源

阿里云源镜像最小化安装默认yum源是没有修改的,很多功能也是没有的 比如 vim wget netstat 等等

所以我针对着写了一个shell 脚本 运行就可以直接使用了

vi /root/Initialization_script.sh

#!/bin/bash​# 检查是否以root用户运行if [ \"$(id -u)\" -ne 0 ]; then   echo -e \"${RED}错误:此脚本必须以root用户身份运行${NC}\"   exit 1fi​# 创建日志文件LOG_FILE=\"/var/log/yum_repo_update_$(date +%Y%m%d_%H%M%S).log\"exec > \"$LOG_FILE\" 2>&1​echo -e \"${GREEN}开始执行yum源替换脚本...${NC}\"echo -e \"当前时间: $(date)\\n\"​# 1. 切换到yum.repos.d目录echo -e \"${YELLOW}[步骤1] 切换到/etc/yum.repos.d目录${NC}\"cd /etc/yum.repos.d/ || {   echo -e \"${RED}错误:无法切换到/etc/yum.repos.d目录${NC}\"   exit 1}​# 2. 备份现有repo文件echo -e \"${YELLOW}[步骤2] 备份现有repo文件${NC}\"if [ ! -d \"backup\" ]; then   mkdir backup || {       echo -e \"${RED}错误:无法创建备份目录${NC}\"       exit 1   }fi​mv *.repo backup/ 2>/dev/nullecho -e \"已备份现有repo文件到: $(pwd)/backup/\\n\"​# 3. 下载阿里云CentOS-8.repoecho -e \"${YELLOW}[步骤3] 下载阿里云CentOS-8.repo${NC}\"curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-8.repo || {   echo -e \"${RED}错误:下载阿里云repo文件失败${NC}\"   exit 1}echo -e \"已成功下载阿里云CentOS-8.repo\\n\"​# 4. 替换镜像源地址echo -e \"${YELLOW}[步骤4] 替换镜像源地址${NC}\"sed -i -e \"s|mirrors.cloud.aliyuncs.com|mirrors.aliyun.com|g\" /etc/yum.repos.d/CentOS-*sed -i -e \"s|releasever|releasever-stream|g\" /etc/yum.repos.d/CentOS-*echo -e \"已更新镜像源地址\\n\"​# 5. 清理并生成缓存echo -e \"${YELLOW}[步骤5] 清理并生成yum缓存${NC}\"yum clean all && yum makecache || {   echo -e \"${RED}错误:生成yum缓存失败${NC}\"   exit 1}​echo -e \"\\n${GREEN}yum源替换完成!${NC}\"echo -e \"所有操作已记录到: ${LOG_FILE}\"echo -e \"当前时间: $(date)\"​# 显示最终的repo列表echo -e \"\\n${YELLOW}当前生效的yum源列表:${NC}\"ls -l /etc/yum.repos.d/​# 6. 下载基础软件# 定义要安装的软件包列表packages=(\"vim\" \"wget\" \"net-tools\")​​# 循环安装所有软件包for pkg in \"${packages[@]}\"; do   echo \"正在安装 $pkg...\"   if yum install -y \"$pkg\"; then       echo \"$pkg 安装成功\"   else       echo \"$pkg 安装失败\"       exit 1   fidone​echo \"所有软件包安装完成\"​​exit 0

sh /root/Initialization_script.sh

二、集群安装部署

1、在所有节点安装docker,Kubernetes默认CRI(容器运行时)为Docker,因此先安装Docker
$ wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo$ yum -y install docker-ce$ systemctl enable docker && systemctl start docker​#配置镜像下载加速器#registry-mirrors:修改镜像源#exec-opts:修改docker cgroup(k8s 1.2版本以上需要修改)cat > /etc/docker/daemon.json << EOF{ \"registry-mirrors\": [\"https://b9pmyelo.mirror.aliyuncs.com\"], \"exec-opts\": [\"native.cgroupdriver=systemd\"]}EOF$ systemctl restart docker
2、在所有节点安装kubeadm,kubelet和kubectl
#添加阿里云yum软件源$ cat > /etc/yum.repos.d/kubernetes.repo << EOF[kubernetes]name=Kubernetesbaseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64enabled=1gpgcheck=0repo_gpgcheck=0gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpgEOF​#安装k8s(注意版本号,后面的版本需要对应)$ yum install -y kubelet-1.21.0 kubeadm-1.21.0 kubectl-1.21.0$ systemctl enable kubelet
3、在master节点执行kubeadm初始化
$ kubeadm init \\     --apiserver-advertise-address=192.168.146.131 \\     --image-repository registry.aliyuncs.com/google_containers \\     --kubernetes-version v1.21.0 \\     --service-cidr=10.96.0.0/12 \\     --pod-network-cidr=10.244.0.0/16 \\     --ignore-preflight-errors=all      #-–apiserver-advertise-address 集群通告地址(master内网)#–-image-repository 由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址#–-kubernetes-version K8s版本,与上面安装的一致#–-service-cidr 集群内部虚拟网络,Pod统一访问入口#-–pod-network-cidr Pod网络,与下面部署的CNI网络组件yaml中保持一致
4、node节点加入k8s集群

token有效期为24小时,如果过期,需要重新创建token:

kubeadm token create --print-join-command #快捷生成方式#可以使用kubeadm init输出的kubeadm join命令:$ kubeadm join 192.168.146.131:6443 --token lzs0a1.5ov4at6moqgbawsn --discovery-token-ca-cert-hash sha256:cbbf83bf6dbec951cf7c55b63fa8a00e57380f1b2c97c8c785eb108591a9660d 

验证:

$ kubectl get nodesThe connection to the server localhost:8080 was refused - did you specify the right host or port?

拷贝kubectl使用的连接k8s认证文件到默认路径:

$ mkdir -p $HOME/.kube$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config$ sudo chown $(id -u):$(id -g) $HOME/.kube/config$ kubectl get nodesNAME  STATUS ROLES  AGE VERSIONmaster-192.168.146.131 NotReady control-plane,master 2d23h v1.21.0node-192-168-146-132 NotReady   2d11h v1.21.0node-192-168-146-133 NotReady   2d v1.21.0
5、master节点部署容器网络(CNI)这里介绍calico部署

Calico是一个纯三层的数据中心网络方案,Calico支持广泛的平台,包括Kubernetes、OpenStack等。

Calico 在每一个计算节点利用 Linux Kernel 实现了一个高效的虚拟路由器( vRouter) 来负责数据转发,而每个 vRouter 通过 BGP 协议负责把自己上运行的 workload 的路由信息向整个 Calico 网络内传播。

此外,Calico 项目还实现了 Kubernetes 网络策略,提供ACL功能。

$ wget https://docs.projectcalico.org/manifests/calico.yaml#这里面的镜像源有问题我们使用sed命令进行替换sed -i \\-e \'s|docker.io/calico/cni:v3.25.0|registry.cn-hangzhou.aliyuncs.com/rainux/calico:cni-v3.25.0|g\' \\-e \'s|docker.io/calico/node:v3.25.0|registry.cn-hangzhou.aliyuncs.com/rainux/calico:node-v3.25.0|g\' \\-e \'s|docker.io/calico/kube-controllers:v3.25.0|registry.cn-hangzhou.aliyuncs.com/rainux/calico:kube-controllers-v3.25.0|g\' \\calico.yaml$ kubectl apply -f calico.yaml$ kubectl get nodesNAME  STATUS ROLES  AGE VERSIONmaster-192.168.146.131 Ready control-plane,master 2d23h v1.21.0node-192-168-146-132 Ready   2d11h v1.21.0node-192-168-146-133 Ready   2d v1.21.0

6、验证

kubectl get pod -A]NAMESPACE NAME READY STATUS RESTARTS AGEkube-system calico-kube-controllers-7c7b5b6c7d-ldjvr 1/1 Running 0 16hkube-system calico-node-55vhm 1/1 Running 0 16hkube-system calico-node-pjdjs 1/1 Running 0 16hkube-system calico-node-th2ct 1/1 Running 0 16hkube-system coredns-545d6fc579-pghnt 1/1 Running 0 3dkube-system coredns-545d6fc579-xt8vs 1/1 Running 0 2dkube-system etcd-master-192.168.146.1311/1 Running 2 3dkube-system kube-apiserver-master-192.168.146.131 1/1 Running 4 2d23hkube-system kube-controller-manager-master-192.168.146.131 1/1 Running 5 2d23hkube-system kube-proxy-4lls9  1/1 Running 0 2dkube-system kube-proxy-jvs67  1/1 Running 1 2d12hkube-system kube-proxy-l2fc7  1/1 Running 2 2d23hkube-system kube-scheduler-master-192.168.146.131 1/1 Running 4 2d23h

至此k8s已完成基本部署