centos 7 基于 containerd 运行 Kubernetes 集群

本文详细介绍了如何在CentOS上从零开始搭建Kubernetes集群,包括安装containerd、CRI客户端crictl、kubeadm、kubelet、kubectl等关键组件,并进行集群初始化。通过本文,读者可以学习到Kubernetes集群的完整部署流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 安装 containerd
# yum install -y yum-utils
# yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
# yum install containerd -y
2. 初始化 containerd 配置
# containerd config default > /etc/containerd/config.toml
# systemctl restart containerd
# systemctl status containerd
● containerd.service - containerd container runtime
   Loaded: loaded (/usr/lib/systemd/system/containerd.service; disabled; vendor preset: disabled)
   Active: active (running) since 六 2020-09-05 13:05:07 CST; 6s ago
     Docs: https://containerd.io
  Process: 1442 ExecStartPre=/sbin/modprobe overlay (code=exited, status=0/SUCCESS)
 Main PID: 1446 (containerd)
    Tasks: 10
   Memory: 27.3M
   CGroup: /system.slice/containerd.service
           └─1446 /usr/bin/containerd

(可选)替换 containerd 默认的 sand_box 镜像,编辑 /etc/containerd/config.toml

在这里插入图片描述

不要忘记重启 containerd 服务:

# systemctl daemon-reload
# systemctl restart containerd
3. 安装 CRI 客户端 crictl
# VERSION="v1.19.0"
# wget https://github.com/kubernetes-sigs/cri-tools/releases/download/$VERSION/crictl-$VERSION-linux-amd64.tar.gz
# sudo tar zxvf crictl-$VERSION-linux-amd64.tar.gz -C /usr/local/bin
# rm -f crictl-$VERSION-linux-amd64.tar.gz
# echo "runtime-endpoint: unix:///run/containerd/containerd.sock" > /etc/crictl.yaml

简单测试一下:

# crictl pull registry.aliyuncs.com/google_containers/pause:3.2
# crictl images
IMAGE                                           TAG                 IMAGE ID            SIZE
registry.aliyuncs.com/google_containers/pause   3.2                 80d28bedfe5de       298kB
4. 安装 kubeadm、kubelet、kubectl
# cat > /etc/yum.repos.d/k8s.repo <<EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
exclude=kube*
EOF
# yum install kubeadm kubectl kubelet --disableexcludes=kubernetes
5. 初始化 Kubernetes 集群
# yum install libseccomp -y
# systemctl disable firewalld --now
# setenforce 0
# modprobe br_netfilter
# echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables
# echo 1 > /proc/sys/net/ipv4/ip_forward
# kubeadm init --image-repository registry.aliyuncs.com/google_containers --pod-network-cidr=192.168.0.0/16
# mkdir -p $HOME/.kube
# cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
# chown $(id -u):$(id -g) $HOME/.kube/config
# kubectl describe node

在这里插入图片描述

# crictl ps
CONTAINER ID        IMAGE               CREATED             STATE               NAME                      ATTEMPT             POD ID
67209afcd12bf       bc9c328f379ce       3 minutes ago       Running             kube-proxy                0                   4dc65e83cb1b7
0deea98b35295       cbdc8369d8b15       3 minutes ago       Running             kube-scheduler            0                   13693ead40d38
999d988fac99f       09d665d529d07       3 minutes ago       Running             kube-controller-manager   0                   b23c4829a16b5
cded56eb74720       1b74e93ece2f5       3 minutes ago       Running             kube-apiserver            0                   1764093b8d99e
2a7055b4045ce       d4ca8726196cb       3 minutes ago       Running             etcd                      0                   c20f6b5f41082
### 如何在CentOS 7上设置Kubernetes集群 为了在CentOS 7上建立Kubernetes集群,可以采用类似于Ubuntu上的方法,即利用`kubeadm`工具来初始化主节点并加入工作节点。具体操作涉及安装必要的依赖项、配置容器运行时环境以及执行一系列命令以启动和管理集群。 #### 安装前准备 确保所有服务器的时间同步,并关闭防火墙和服务隔离策略(如SELinux),这有助于减少网络通信障碍[^1]。 #### 配置Containerd作为CRI 对于新版本的Kubernetes部署,推荐使用Containerd代替Docker作为容器运行时接口(CRI)。通过指定特定参数完成Containerd的安装与配置之后,需调整内核模块加载情况,使它们支持cgroup v2和其他必要特性[^2]。 ```bash modprobe overlay modprobe br_netfilter cat <<EOF | tee /etc/modules-load.d/containerd.conf overlay br_netfilter EOF ``` 接着创建或编辑`/etc/sysctl.d/k8s.conf`文件: ```bash cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF sudo sysctl --system ``` #### 初始化Master Node 一旦准备工作就绪,在选定为主控节点的一台机器上运行如下指令来进行初始化过程: ```bash sudo kubeadm init --pod-network-cidr=10.244.0.0/16 ``` 上述命令会返回一段用于添加其他节点到此集群的信息;务必保存这段信息以便后续步骤中应用它。 #### 设置kubectl访问权限 为了让普通用户能够顺利地管理和查看集群状态,还需要做额外的安全性和便利性的设定: ```bash mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config export KUBECONFIG=/etc/kubernetes/admin.conf ``` 这些命令使得当前用户的`.kube/config`指向了管理员级别的认证凭证,从而允许该用户拥有完整的API调用能力。 #### 加入Worker Nodes 最后一步是在每台想要成为worker node的工作站重复执行由前面提到的`kubeadm init`所给出的那一串连接字符串,通常形式如下所示: ```bash kubeadm join <control-plane-host>:<control-plane-port> --token <token> --discovery-token-ca-cert-hash sha256:<hash> ``` 至此,一个多节点组成的高可用性Kubernetes集群便构建完成了。当然,实际生产环境中可能还会涉及到更多高级特性的启用和支持服务的集成等问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值