0

0

Linux怎么加入Kubernetes集群_Linux下Kubeadm初始化与节点部署【教程】

冰火之心

冰火之心

发布时间:2025-12-27 14:32:03

|

579人浏览过

|

来源于php中文网

原创

需严格遵循网络配置、组件版本对齐、证书信任及权限校验等环节:一、准备Linux主机环境;二、安装containerd;三、安装同版本kubeadm/kubelet/kubectl;四、初始化控制平面;五、部署CNI插件;六、加入工作节点;七、验证集群功能。

linux怎么加入kubernetes集群_linux下kubeadm初始化与节点部署【教程】

如果您希望将一台Linux主机加入已有的Kubernetes集群,或使用kubeadm在Linux系统上完成控制平面初始化与工作节点部署,则需严格遵循网络配置、组件版本对齐、证书信任及权限校验等关键环节。以下是具体操作步骤:

一、准备Linux主机环境

确保所有节点运行兼容的Linux发行版(如Ubuntu 20.04+/CentOS 7.6+/Rocky Linux 8.5+),内核版本不低于4.18,且已禁用swap并配置cgroup驱动为systemd。该步骤是kubeadm正常运行的前提条件,缺失任一要求将导致kubelet启动失败或节点注册中断。

1、执行sudo swapoff -a并注释/etc/fstab中swap行,永久禁用交换分区。

2、在/etc/default/grub中确认GRUB_CMDLINE_LINUX包含cgroup_enable=cpuset cgroup_enable=memory cgroup_memory=1,然后运行sudo update-grub && sudo reboot

3、创建/etc/docker/daemon.json,写入{"exec-opts": ["native.cgroupdriver=systemd"]},重启docker服务。

4、执行sudo sysctl net.bridge.bridge-nf-call-iptables=1并写入/etc/sysctl.d/k8s.conf以持久化。

二、安装容器运行时(Container Runtime)

kubeadm自v1.24起不再内置Docker适配,必须显式配置符合CRI标准的运行时,如containerd。该步骤决定Pod能否被正确拉取镜像、启动和生命周期管理。

1、安装containerd:在Ubuntu上执行sudo apt-get install -y containerd;在RHEL系执行sudo yum install -y containerd

2、生成默认配置:sudo containerd config default | sudo tee /etc/containerd/config.toml

3、编辑/etc/containerd/config.toml,将SystemdCgroup = false改为SystemdCgroup = true

4、重启服务:sudo systemctl restart containerd && sudo systemctl enable containerd

三、安装kubeadm、kubelet与kubectl

三个组件必须使用**完全一致的版本号**(例如1.28.2),版本错位将导致join失败或control plane不可用。kubeadm负责集群引导,kubelet是节点代理,kubectl为命令行客户端。

1、添加Kubernetes APT/YUM源:Ubuntu执行curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -并写入/etc/apt/sources.list.d/kubernetes.list;RHEL系导入GPG密钥并配置repo文件。

2、更新包索引后安装指定版本:sudo apt-get install -y kubeadm=1.28.2-00 kubelet=1.28.2-00 kubectl=1.28.2-00(Ubuntu)或yum install -y kubeadm-1.28.2 kubelet-1.28.2 kubectl-1.28.2(RHEL系)。

3、锁定版本防止自动升级:sudo apt-mark hold kubeadm kubelet kubectl(Ubuntu)或yum versionlock kubeadm kubelet kubectl(RHEL系)。

4、启用并启动kubelet:sudo systemctl enable --now kubelet

四、初始化控制平面节点(Master)

此操作仅在首台控制节点执行,将生成CA证书、etcd集群、API Server等核心组件,并输出kubeadm join命令供工作节点使用。初始化过程依赖于可访问的镜像仓库,若网络受限需提前拉取镜像。

1、执行sudo kubeadm init --pod-network-cidr=10.244.0.0/16 --kubernetes-version=v1.28.2(--pod-network-cidr需与后续CNI插件匹配)。

2、初始化成功后,按提示执行mkdir -p $HOME/.kube && sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config && sudo chown $(id -u):$(id -g) $HOME/.kube/config

3、记录输出的kubeadm join完整命令,含token、discovery-token-ca-cert-hash及control-plane-endpoint(如有)。

4、验证状态:kubectl get nodes应显示当前节点处于NotReady状态,待CNI部署后变为Ready

五、部署CNI网络插件

Kubernetes不自带网络方案,必须部署CNI插件(如Flannel、Calico)才能使Pod跨节点通信。未部署前,所有节点均保持NotReady,且CoreDNS处于Pending状态。

1、选择Flannel方案:执行kubectl apply -f https://github.com/flannel-io/flannel/releases/download/v0.22.2/kube-flannel.yml

2、若使用Calico,执行kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/tigera-operator.yaml,再应用自定义资源清单。

3、检查命名空间kube-system中flannel或calico相关Pod是否全部为Running状态。

4、再次运行kubectl get nodes,确认节点状态变为Ready

六、加入工作节点(Worker Node)

工作节点需复用控制平面初始化时生成的token与证书哈希值进行双向认证。若token过期(默认24小时),须在主节点重新生成,并同步更新hash值。

1、在工作节点执行初始化阶段记录的完整kubeadm join命令,例如:sudo kubeadm join 192.168.1.100:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

2、若token失效,在主节点运行kubeadm token create --print-join-command获取新命令。

3、在工作节点执行后,等待约30秒,主节点运行kubectl get nodes应列出新增节点,状态为NotReady(等待CNI就绪)。

4、确认CNI Pod已在新节点上运行:kubectl get pods -n kube-system -o wide | grep flannel(或对应CNI名称)。

七、验证集群功能

通过部署测试Pod并验证其网络连通性与调度行为,确认集群基础能力可用。此阶段不依赖外部存储或Ingress,仅验证核心编排逻辑。

1、创建测试Deployment:kubectl create deployment nginx-test --image=nginx:alpine

2、暴露为ClusterIP Service:kubectl expose deployment nginx-test --port=80 --target-port=80

3、获取Service ClusterIP:kubectl get service nginx-test,记下IP地址。

4、在任意节点执行curl -I http://ClusterIP:80,返回HTTP 200表示Pod网络与Service代理正常。

相关专题

更多
nginx 重启
nginx 重启

nginx重启对于网站的运维来说是非常重要的,根据不同的需求,可以选择简单重启、平滑重启或定时重启等方式。本专题为大家提供nginx重启的相关的文章、下载、课程内容,供大家免费下载体验。

227

2023.07.27

nginx 配置详解
nginx 配置详解

Nginx的配置是指设置和调整Nginx服务器的行为和功能的过程。通过配置文件,可以定义虚拟主机、HTTP请求处理、反向代理、缓存和负载均衡等功能。Nginx的配置语法简洁而强大,允许管理员根据自己的需要进行灵活的调整。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

490

2023.08.04

nginx配置详解
nginx配置详解

NGINX与其他服务类似,因为它具有以特定格式编写的基于文本的配置文件。本专题为大家提供nginx配置相关的文章,大家可以免费学习。

496

2023.08.04

tomcat和nginx有哪些区别
tomcat和nginx有哪些区别

tomcat和nginx的区别:1、应用领域;2、性能;3、功能;4、配置;5、安全性;6、扩展性;7、部署复杂性;8、社区支持;9、成本;10、日志管理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

220

2024.02.23

nginx报404怎么解决
nginx报404怎么解决

当访问 nginx 网页服务器时遇到 404 错误,表明服务器无法找到请求资源,可以通过以下步骤解决:1. 检查文件是否存在且路径正确;2. 检查文件权限并更改为 644 或 755;3. 检查 nginx 配置,确保根目录设置正确、没有冲突配置等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

328

2024.07.09

Nginx报404错误解决方法
Nginx报404错误解决方法

解决方法:只需要加上这段配置:try_files $uri $uri/ /index.html;即可。想了解更多Nginx的相关内容,可以阅读本专题下面的文章。

3502

2024.08.07

json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

400

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

528

2023.08.23

ip地址修改教程大全
ip地址修改教程大全

本专题整合了ip地址修改教程大全,阅读下面的文章自行寻找合适的解决教程。

27

2025.12.26

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 6.1万人学习

Git 教程
Git 教程

共21课时 | 2.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号