containerd方式安装k8s集群
时间: 2025-04-07 09:12:44 浏览: 36
### 使用 Containerd 安装 Kubernetes 集群教程
以下是基于 CentOS 7 和 Containerd 构建 Kubernetes 1.27 集群的详细指南:
#### 准备工作
在开始之前,确保服务器满足以下条件:
- 操作系统版本为 CentOS 7 或更高。
- 至少两台机器(一台主节点和若干个工作节点)。
---
#### 步骤说明
##### 0. 安装 Development Tools
更新操作系统并安装开发工具包:
```bash
sudo yum update -y && sudo yum groupinstall "Development Tools" -y
```
##### 1. 禁用 Swap
Swap 可能会影响 Kubernetes 节点性能,因此需要禁用它:
```bash
sudo swapoff -a
sudo sed -i '/swap/d' /etc/fstab
```
##### 2. 关闭防火墙
关闭系统的防火墙服务以减少干扰:
```bash
sudo systemctl stop firewalld
sudo systemctl disable firewalld
```
##### 3. 设置 SELinux 为 Permissive 模式
SELinux 默认会阻止某些容器操作,将其设置为宽松模式可以解决此问题:
```bash
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
```
##### 4. 安装 `ipset` 和 `ipvsadm`
这些工具用于支持负载均衡功能:
```bash
sudo yum install ipset ipvsadm -y
```
##### 5. 配置网桥过滤及内核转发
编辑 `/etc/sysctl.d/k8s.conf` 文件,添加如下内容:
```conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
```
应用更改:
```bash
sudo sysctl --system
```
##### 6. 加载必要的内核模块
加载 OverlayFS、Netfilter 等模块:
```bash
cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf
overlay
br_netfilter
EOF
sudo modprobe overlay
sudo modprobe br_netfilter
```
##### 7. 安装 Containerd
下载并安装指定版本的 Containerd (v1.17.0):
```bash
CONTAINERD_VERSION="1.17.0"
wget https://github.com/containerd/containerd/releases/download/v${CONTAINERD_VERSION}/containerd-${CONTAINERD_VERSION}.linux-amd64.tar.gz
tar Cxzvf /usr/local containerd-${CONTAINERD_VERSION}.linux-amd64.tar.gz
rm -rf containerd-${CONTAINERD_VERSION}.linux-amd64.tar.gz
```
创建 systemd 单元文件:
```ini
cat <<EOF | sudo tee /usr/lib/systemd/system/containerd.service
[Unit]
Description=containerd container runtime
Documentation=https://containerd.io
After=network.target local-fs.target
[Service]
ExecStartPre=-/sbin/modprobe overlay
ExecStart=/usr/local/bin/containerd
Restart=always
RestartSec=5
Delegate=yes
KillMode=process
OOMScoreAdjust=-999
LimitNOFILE=infinity
LimitNPROC=infinity
TasksMax=infinity
[Install]
WantedBy=multi-user.target
EOF
```
启动并启用 Containerd:
```bash
sudo systemctl daemon-reload
sudo systemctl enable --now containerd
```
##### 8. 配置 Containerd
创建默认配置文件:
```bash
sudo mkdir -p /etc/containerd/
containerd config default | sudo tee /etc/containerd/config.toml >/dev/null 2>&1
```
修改配置文件中的沙箱镜像路径为官方推荐值:
```toml
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
SystemdCgroup = true
```
重启 Containerd 应用新配置:
```bash
sudo systemctl restart containerd
```
##### 9. 安装 Kubernetes 组件
添加 Kubernetes YUM 存储库:
```bash
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
exclude=kube*
EOF
```
安装 Kubelet、Kubeadm 和 Kubectl:
```bash
sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
sudo systemctl enable --now kubelet
```
##### 10. 初始化 Kubernetes 主节点
初始化集群时需指定 Pod 网络 CIDR 地址范围(例如 Calico 的默认值 `--pod-network-cidr=192.168.0.0/16`):
```bash
sudo kubeadm init --pod-network-cidr=192.168.0.0/16
```
完成初始化后,按照输出提示配置 kubeconfig 文件以便管理集群:
```bash
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
```
##### 11. 部署网络插件 Calico
下载并部署 Calico 插件 YAML 文件:
```bash
curl https://docs.projectcalico.org/manifests/calico.yaml -O
kubectl apply -f calico.yaml
```
等待几分钟直到所有 Pods 处于 Running 状态:
```bash
kubectl get pods -n kube-system
```
##### 12. 测试集群状态
确认节点已加入集群且 Ready:
```bash
kubectl get nodes
```
如果一切正常,则表示集群已经成功搭建[^1]。
---
### 注意事项
- 如果使用其他 CNI 插件,请调整相应的网络配置参数。
- ClusterIP、NodePort 和 LoadBalancer 类型的服务依赖于 CNI 提供的功能,因此务必正确配置网络插件[^4]。
---
阅读全文
相关推荐

















