Linux Centos7 系统部署K8S集群
时间: 2025-04-23 12:46:46 浏览: 18
### 准备工作
在开始部署 Kubernetes 集群之前,确保所有的服务器都满足最低硬件需求并已安装 CentOS 7.9 或更高版本。关闭防火墙和服务 SELinux 可能会减少不必要的麻烦。
#### 更新系统软件包
更新现有系统的软件包到最新状态是一个良好的实践。
```bash
sudo yum update -y
```
### 安装 Docker CE
由于官方推荐使用 containerd 或者 CRI-O 作为容器运行时环境,在此选择较为通用的 Docker CE 来展示操作流程[^2]。
首先备份原有的 YUM 源文件以防万一,并替换为阿里云提供的更快捷稳定的源地址:
```bash
sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
```
接着添加 Docker 的仓库信息以便后续安装最新的稳定版 Docker:
```bash
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
```
执行命令刷新缓存并安装 Docker 社区版:
```bash
yum makecache fast && yum -y install docker-ce
```
启动并设置 Docker 开机自动启动:
```bash
systemctl enable docker && systemctl start docker
```
验证 Docker 是否成功安装:
```bash
docker -v
```
### 关闭 Swap 分区
默认情况下,Kubernetes 不建议开启 swap 分区来提高性能表现;因此需要先确认当前是否有启用了 swap ,如果有则需将其停用以确保 kubelet 正常运作[^4]:
查看是否存在 swap :
```bash
swapon --show
```
如果存在,则临时关闭 swap :
```bash
swapoff -a
```
编辑 `/etc/fstab` 文件注释掉有关 swap 行实现永久禁用。
### 设置内核参数支持网络功能
为了让 Pod 能够相互通信以及访问外部服务,还需要调整一些 Linux 内核参数允许 IP 数据转发和桥接过滤等功能:
创建一个新的配置文件 `kubernetes.conf` 并写入如下内容:
```bash
cat <<EOF | sudo tee /etc/sysctl.d/kubernetes.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
sysctl --system
```
### 使用 kubeadm 初始化 Master 节点
现在可以准备初始化 master 节点了。在此之前要保证已经按照上述步骤完成了所有前置条件的工作。接下来就是下载必要的组件并初始化集群了[^1]。
安装 kubeadm, kubelet 和 kubectl 工具集:
```bash
yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
systemctl enable --now kubelet
```
重载 systemd 配置使新的 cgroup driver 生效:
```bash
systemctl daemon-reload
systemctl restart kubelet
```
最后一步是利用 kubeadm 命令行工具来进行实际的初始化过程。这将会花费几分钟时间去拉取所需镜像并且建立控制平面实例。注意记录下输出中的 join token 和 hash string 因为稍后加入 worker node 时候需要用到它们。
```bash
kubeadm init --pod-network-cidr=10.244.0.0/16
```
完成以上指令后,根据提示配置kubectl认证信息使得能够管理新创建出来的 cluster 。通常做法是在普通用户的 home 目录下面复制 admin conf 文件夹下的 config 文件至 .kube 下面命名为config 即可[^5]。
```bash
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 查看到 master 节点的状态了。
### 加入 Worker Node 到 Cluster 中
对于每一个想要成为 workder role 的机器重复前面提到过的准备工作(即从“更新系统软件包”一直到“重启 kubelet service”),然后执行刚才保存下来的那条带有 token 参数的 kubeadm join ... 命令即可让其顺利连入现有的 K8S 环境当中。
阅读全文
相关推荐

















