2025最新 centos8 部署k8s集群
机器规格数据:3台 4C4G 硬盘30GB的机器 一台master 两台 node节点
操作系统:CentOS-8.5.2111 选择最小化安装
一、centos8 机器进行初始化操作
1、镜像下载与安装部署
我用的是阿里云的的 CentOS-8.5.2111 这个版本 具体安装我就不介绍了 在VMware里选最小化安装就行
2、修改主机名称: 根据自己机器的 ip 地址 来进行修改
hostnamectl set-hostname master-192-168-146-131
hostnamectl set-hostname node-192-168-146-132
hostnamectl 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 << EOF
192.168.146.131 k8s-master
192.168.146.132 k8s-node1
192.168.146.133 k8s-node2
EOF
将桥接的IPv4流量传递到iptables的链:
$ cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
$ 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 1
fi
# 创建日志文件
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/null
echo -e "已备份现有repo文件到: $(pwd)/backup/\n"
# 3. 下载阿里云CentOS-8.repo
echo -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
fi
done
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=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
#安装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 nodes
The 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 nodes
NAME STATUS ROLES AGE VERSION
master-192.168.146.131 NotReady control-plane,master 2d23h v1.21.0
node-192-168-146-132 NotReady <none> 2d11h v1.21.0
node-192-168-146-133 NotReady <none> 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 nodes
NAME STATUS ROLES AGE VERSION
master-192.168.146.131 Ready control-plane,master 2d23h v1.21.0
node-192-168-146-132 Ready <none> 2d11h v1.21.0
node-192-168-146-133 Ready <none> 2d v1.21.0
6、验证
kubectl get pod -A
]NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system calico-kube-controllers-7c7b5b6c7d-ldjvr 1/1 Running 0 16h
kube-system calico-node-55vhm 1/1 Running 0 16h
kube-system calico-node-pjdjs 1/1 Running 0 16h
kube-system calico-node-th2ct 1/1 Running 0 16h
kube-system coredns-545d6fc579-pghnt 1/1 Running 0 3d
kube-system coredns-545d6fc579-xt8vs 1/1 Running 0 2d
kube-system etcd-master-192.168.146.131 1/1 Running 2 3d
kube-system kube-apiserver-master-192.168.146.131 1/1 Running 4 2d23h
kube-system kube-controller-manager-master-192.168.146.131 1/1 Running 5 2d23h
kube-system kube-proxy-4lls9 1/1 Running 0 2d
kube-system kube-proxy-jvs67 1/1 Running 1 2d12h
kube-system kube-proxy-l2fc7 1/1 Running 2 2d23h
kube-system kube-scheduler-master-192.168.146.131 1/1 Running 4 2d23h
至此k8s已完成基本部署
5万+

被折叠的 条评论
为什么被折叠?



