一、安装前准备
-
软件包准备:由于国内镜像源未同步Kubernetes v1.29版本,教程提前准备了本地RPM安装包,上传至第一台节点后执行
yum localinstall完成安装,后续将安装包分发至其余节点(N1、N2等)完成统一安装,保证版本一致性、解决网络访问问题 -
kubelet必要性说明:仅靠Docker的
docker run --restart=always参数只能保证容器被启动一次,无法保证容器持续正常运行;kubelet负责管理K8s所有组件的生命周期,保证组件正常启动和运行,是引导K8s集群启动的核心组件,因此需要安装并以进程方式运行yum install -y kubelet-1.29.0 kubectl-1.29.0 kubeadm-1.29.0 -
开机自启配置:所有节点执行
systemctl enable kubelet(仅设置开机自启,不执行启动,避免因配置文件未就绪报错),为后续K8s组件启动做准备
二、集群初始化(主节点操作)
执行kubeadm init命令完成主节点初始化,需指定以下核心参数:
-
--apiserver-advertise-address:主节点IP地址,示例环境为66.11,需替换为实际环境的主节点IP -
--image-repository:镜像仓库地址,默认指向谷歌GCR国内无法访问,需替换为阿里云镜像源 -
--kubernetes-version:指定集群版本为1.29.2 -
--service-cidr:Service网络段,后续课程会讲解Service资源相关概念 -
--pod-network-cidr:Pod网络段,示例指定为10.244.0.0/16 -
--ignore-preflight-errors:跳过前置错误检测 -
--cri-socket:指定CRI socket路径,因使用Docker + CRI-Docker实现CRI接口,必须指定该参数否则会报错
初始化过程核心输出说明
-
镜像拉取:初始化时会自动拉取集群所需组件镜像,也可提前执行
kubeadm config images pull手动拉取,避免网络卡顿 -
证书生成:在
/etc/kubernetes/pki目录下生成集群通信所需的全量证书,包括CA根证书、各控制平面组件专属证书、DNS域名证书等,原因是K8s所有组件间基于HTTPS协议通信,需证书实现加密传输 -
配置文件生成:
-
生成
admin.conf:为集群管理员访问凭证,需拷贝到当前用户家目录下的.kube目录下重命名为config,并赋予当前用户读取权限,后续kubectl命令默认读取该文件实现集群访问 -
生成控制平面各组件的专属授权文件:包括
controller-manager.conf、scheduler.conf、super-admin.conf等,绑定对应组件的操作权限
-
静态Pod启动:控制平面组件(etcd、apiserver、controller-manager、scheduler)以静态Pod形式运行,清单文件存放在
/etc/kubernetes/manifests目录下,kubelet会监听该目录,自动启动对应Pod组成控制平面,是K8s集群启动的核心流程 -
节点加入命令:初始化完成后会输出worker节点加入集群的命令,需复制自身环境输出的命令(包含唯一token和哈希值),在worker节点执行即可加入集群,注意命令末尾需追加CRI socket参数
三、Worker节点加入集群
-
各worker节点执行主节点输出的加入命令,完成集群加入
-
执行
kubectl get node可查看所有节点,初始状态均为NotReady,原因是还未部署网络插件
四、Calico网络插件部署
K8s集群需要扁平化网络空间才能正常工作,需部署CNI网络插件,本教程选用Calico,且采用BGP模式提升网络吞吐量,步骤如下:
-
准备部署包:提前下载Calico部署压缩包,上传至主节点解压,目录包含部署文件、命令行工具、镜像包等文件
-
镜像导入:Calico所需镜像国内无法直接访问,教程提前准备了4个镜像包(calico-cni、calico-node、calico-kube-controllers、calico-pod2daemon-flexvol),每个节点需执行
docker load -i 镜像包名导入全部镜像,再将镜像和Calico相关目录分发给其余节点完成导入 -
部署文件修改:需调整两个核心参数:
-
将
IPIP模式设置为off,匹配BGP模式要求 -
修改Pod网段为
10.244.0.0/16,与初始化时指定的--pod-network-cidr保持一致
注:教程提供的部署文件已提前修改好参数,可直接使用;若从官网下载需手动修改上述两个参数
-
应用部署:执行
kubectl apply -f 部署文件路径,将Calico配置应用到集群中 -
集群验证:等待部署完成后,执行
kubectl get node可看到所有节点状态变为Ready;执行kubectl get pod -A可看到所有Calico相关Pod均为Running且就绪状态,说明扁平化网络已部署完成,集群可正常使用
五、集群安装后注意事项
-
立即创建虚拟机快照:命名为
kubeadm 1.29.2,避免后续操作失误导致集群不可逆损坏,无需重复安装 -
多网卡场景配置:若机器存在多张网卡,初始化时可指定绑定网卡,支持通过连通性匹配、正则匹配、正则排除、指定网段范围等方式选择目标网卡,也可后续修改kube-proxy工作模式为IPVS,具体操作会在后续实验中讲解
-
安装核心要点:K8s集群安装本身技术门槛较低,核心难点为网络访问问题,提前准备本地安装包和镜像即可解决大部分问题
六、kubeadm init输出内容详细梳理
对初始化过程输出的核心内容逐一解释,方便理解集群启动逻辑:
-
版本与前置检测:输出确认当前使用Kubernetes 1.29.2版本,执行前置环境检测
-
镜像拉取提示:给出
kubeadm config images pull命令,支持提前拉取集群所需镜像 -
镜像源配置:提示etcd等组件的镜像源,默认使用谷歌GCR,国内替换为阿里云源可提升下载速度
-
证书目录说明:提示集群证书统一存放在
/etc/kubernetes/pki目录下 -
配置文件生成:在
/etc/kubernetes目录下生成各组件连接集群的配置文件 -
静态Pod配置:在
/etc/kubernetes/manifests目录下生成控制平面组件的静态Pod清单,kubelet会自动启动这些Pod -
环境变量配置:生成kubelet环境变量,指定CRI接口路径和Pod pause镜像
-
启动耗时提示:提示控制平面静态Pod启动预计耗时4分钟,示例环境中实际仅用7秒完成启动
-
集群功能配置:依次完成ConfigMap存储kubeadm配置参数、kubelet配置文件生成、RBAC权限规则配置,同时部署CoreDNS(提供集群内部域名解析能力)、kube-proxy(实现Service网络、落地防火墙和负载均衡规则)
-
初始化完成提示:提示需拷贝
admin.conf作为集群访问凭证,同时提示需要部署CNI网络插件才能让集群完全可用
AI 总结
本视频是Kubernetes v1.29版本的集群安装实操教程,针对国内网络环境提前准备了本地安装包和镜像,完整演示了基于kubeadm部署K8s集群的全流程,涵盖组件安装、集群初始化、节点加入、Calico网络插件部署、集群验证等核心步骤,同时对初始化输出的证书、配置文件、静态Pod等核心概念的底层逻辑进行了详细梳理,适合零基础学习者跟随实操快速完成K8s集群部署,为后续学习K8s核心功能打下基础。