最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Kubernetes 服务器搭建与配置如何做
时间:2026-08-08 09:10:49 编辑:袖梨 来源:一聚教程网
用三台 CentOS 9 服务器搭建 Kubernetes 集群的核心是统一环境、分步部署、验证连通:所有节点须依次完成关闭 SELinux、停用防火墙、禁用 Swap、设置主机名与 hosts 解析、加载 br_netfilter 模块、安装 containerd 与 kubeadm/kubelet/kubectl,再由 master 初始化集群、worker 加入,最后部署 Flannel 并用 nginx 测试全链路连通性。
用三台 CentOS 9 服务器搭 Kubernetes 集群,核心是“先统一环境、再分步部署、最后验证连通”。不建议跳过任何前置检查,尤其时间同步、主机名和网络解析——这些看似简单,却是后续 kubeadm init 失败最常见的原因。
所有节点必须完成的基础配置
这一步在 master 和两个 worker 节点上都要执行,顺序不能乱:
-
关闭 SELinux:运行
setenforce 0临时生效,再改配置文件/etc/selinux/config,把SELINUX=enforcing改成SELINUX=permissive -
停用防火墙:执行
systemctl stop firewalld && systemctl disable firewalld。Kubernetes 网络插件(如 Flannel)依赖底层 iptables 规则,firewalld 会干扰 -
禁用 Swap:先
swapoff -a,再编辑/etc/fstab,把含swap的行前面加#注释掉 -
设置主机名 + hosts 解析:比如 master 执行
hostnamectl set-hostname k8s-master --static;然后所有节点的/etc/hosts里统一加上:192.168.1.10 k8s-master
192.168.1.11 k8s-node1
192.168.1.12 k8s-node2
-
加载内核模块并启用桥接流量:创建
/etc/modules-load.d/k8s.conf,写入br_netfilter;再执行:echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptablesecho '1' > /proc/sys/net/bridge/bridge-nf-call-ip6tables
安装容器运行时(推荐 containerd)
Kubernetes 已弃用 Docker 作为默认运行时,直接用 containerd 更稳定、更轻量:
- 执行
yum install -y containerd.io - 生成默认配置:
containerd config default | sudo tee /etc/containerd/config.toml - 替换 pause 镜像源为阿里云地址(避免拉取失败):
sed -i 's|k8s.gcr.io/pause|registry.aliyuncs.com/google_containers/pause|g' /etc/containerd/config.toml - 启动并设为开机自启:
systemctl enable --now containerd
安装 kubeadm、kubelet、kubectl
使用阿里云 Kubernetes yum 源,避免因网络问题卡住:
- 备份原 repo:
mkdir /etc/yum.repos.d/backup && mv /etc/yum.repos.d/CentOS-* /etc/yum.repos.d/backup/ - 下载新源:
curl -o /etc/yum.repos.d/kubernetes.repo https://mirrors.aliyun.com/kubernetes/clouds/kubernetes-el8.repo - 安装组件:
yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes - 启用 kubelet:
systemctl enable --now kubelet(此时它会报错等待初始化,属正常)
初始化集群并加入节点
master 节点执行初始化命令,指定 Pod 和 Service 网段,避免与内网冲突:
-
kubeadm init --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --kubernetes-version=v1.30.0(版本号以当前最新稳定版为准) - 初始化成功后,按提示配置
~/.kube/config,让kubectl可用 - 在两个 worker 节点上,粘贴 master 输出的
kubeadm join …命令执行加入 - 等几分钟,master 上运行
kubectl get nodes,状态变为Ready即表示节点已接入 - 部署 Flannel 网络插件:
kubectl apply -f https://github.com/flannel-io/flannel/releases/download/v0.24.2/kube-flannel.yml
验证集群是否可用
别只看 get nodes,要真正跑一个 Pod:
- 部署一个测试 nginx:
kubectl create deployment nginx-test --image=nginx - 暴露为 ClusterIP 服务:
kubectl expose deployment nginx-test --port=80 --type=ClusterIP - 进入任一节点,用
curl访问该服务的 ClusterIP(通过kubectl get svc查) - 如果能返回 nginx 欢迎页,说明控制面、网络、调度全部就绪