K8S 集群搭建——cri-dockerd版

目录

一、工作准备

1.配置主机名

2.配置hosts解析

3.配置免密登录(只需要在master上操作)

4.时间同步(每台节点都要做,必做,否则可能会因为时间不同步导致集群初始化失败) 

5.关闭系统防火墙

6.配置内核转发及网桥过滤

7.启用IPVS

8.关闭SWAP分区

二、容器工作时工具安装

1.安装Docker

2.安装cri-dockerd

三、安装 k8s

四、k8s集群初始化 (只在master节点上面操作)

1.创建初始化文件

2.修改初始化文件

3.初始化

4.根据系统提示创建具体文件

五、k8s 集群 node 节点加入(在node1和node2上操作)

​六、添加网络插件(在master上操作)

执行安装Calico:

七、查看、验证


一、工作准备

机器:3台机器【一台master(集群的控制平面,负责集群的决策/管理),两台node机器(集群的数据平面,负责为容器提供运行环境)】

参数:2核1线程,4G内存,20G硬盘

系统:OpenEuler

IP分配:

主机名IP地址节点
k8s-master192.168.8.154master
k8s-node-01192.168.8.157node1
k8s-node-02192.168.8.158node2

本实验除了备注只需在master操作外,其他的都需要在每个节点上面操作 

1.配置主机名

hostnamectl set-hostname k8s-master  /  k8s-node01  /  k8s-node02

2.配置hosts解析

 cat >> /etc/hosts <<END
 192.168.8.154 k8s-master
 192.168.8.157 k8s-node01
 192.168.8.158 k8s-node02
 END

3.配置免密登录(只需要在master上操作)

ssh-keygen -t rsa

ssh-copy-id k8s-node01、k8s-node02  #复制给node机器

4.时间同步(每台节点都要做,必做,否则可能会因为时间不同步导致集群初始化失败) 

yum install chrony -y    #同步到同一时钟服务器上

systemctl restart chronyd  #重启服务

chronyc  sources  #验证时间同步

5.关闭系统防火墙

systemctl stop firewalld

systemctl disable firewalld

sed -i 's/enforcing/disabled/' /etc/selinux/config

6.配置内核转发及网桥过滤

#修改配置文件

vim  /etc/sysctl.d/k8s.conf 

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

vm.swappiness = 0

#加载 br_netfilter 模块

modprobe  br_netfilter

#查看是否加载

lsmod | grep br_netfilter

#使新添加的配置文件生效

sysctl -p /etc/sysctl.d/k8s.conf 

7.启用IPVS

vim /etc/sysconfig/modules/ipvs.modules

#!/bin/bash
ipvs_modules="ip_vs ip_vs_wlc ip_vs_wrr ip_vs_lblc ip_vs_lblcr ip_vs_dh ip_vs_sh ip_vs_nq ip_vs_sed ip_vs_ftp nf_conntrack"
for kernel_module in ${ipvs_modules}
do
  /usr/sbin/modinfo -F filename ${kernel_module} >/dev/null 2>&1
  if [ $? -eq 0 ]
  then
    /usr/sbin/modprobe ${kernel_module}
  fi
done
然后给该文件添加执行权限

chmod +x /etc/sysconfig/modules/ipvs.modules

bash /etc/sysconfig/modules/ipvs.modules

8.关闭SWAP分区

临时关闭:swapoff  -a 

永久关闭:sed -i 's/.*swap.*/#&/' /etc/fstab

二、容器工作时工具安装

1.安装Docker

wget  https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

#openEuler 系统在跟换源后需要将/etc/yum.repos.d/kubernetes.repo 中的$release 跟换成 8

yum install docker-ce

#开启docker 服务

systemctl enable --now docker

#然后配置国内镜像加速器

vim /etc/docker/daemon.json
{

"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors": [
        "https://docker.m.daocloud.io",
        "https://hub-mirror.c.163.com",
        "https://mirror.baidubce.com",
        "https://docker.nju.edu.cn"
    ]
}

2.安装cri-dockerd

下载cri-dockerd 的rpm包  ==>  上传 ==>  yum  install ==> 开机自启动

然后修改里面的配置文件:

vim  /usr/lib/systemd/system/cri-docker-service

修改第11行:

 ExecStart=/usr/bin/cri-dockerd --network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.9
然后重载 ==> 开机自启 ==> 检查组件状态

systemctl daemon-reload && systemctl enable cri-docker.socket && systemctl status cri-docker.socket cri-docker docker

三、安装 k8s

更换kubernets的软件源  vim  /etc/yum.repo.d/kubernets.repo

[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.30/rpm/
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.30/rpm/repodata/repomd.xml.key

yum clean all && yum makecache

#下载,重启

  1. yum install  kubeadm-1.27.2 kubelet-1.27.2 kubectl-1.27.2 -y

  2. systemctl enable kubelet && systemctl start kubelet

四、k8s集群初始化 (只在master节点上面操作)

1.创建初始化文件

[root@k8s-master ~]#kubeadm  config  print  init-defaultsb > kubeadm-init.yaml

2.修改初始化文件

[root@k8s-master ~]# vim kubeadm-init.yaml

12行:advertiseAddress: 192.168.8.154    #master的ip地址

15行:criSocket: unix:///var/run/cri-dockerd.sock

17行:name: k8s-master    #master的主机名

30行:imageRepository: registry.aliyuncs.com/google_containers #改成阿里云镜像代理地址

3.初始化

[root@k8s-master ~]# systemctl restart containerd
[root@k8s-master ~]# systemctl restart kubelet

[root@k8s-master ~]# kubeadm init --config=kubeadm-init.yaml --upload-certs --v=6

4.根据系统提示创建具体文件

然后根据初始化给的提示复制上面第一个到 node1 和 node2 节点上

五、k8s 集群 node 节点加入(在node1和node2上操作)

执行 kubeadm join 命令将节点加入集群:


六、添加网络插件(在master上操作)

执行安装Calico:

kubernetes支持多种网络插件,比如flannel、calico、canal等,任选一种即可

在Master节点上获取calico配置文件(可能会失败,如果失败,请下载到本地,然后安装)

kubectl create -f 
https://raw.githubusercontent.com/projectcalico/calico/v3.25.1/manifests/calico.yaml

1、比如我将下载好的配置文件上传到master节点上:

2、然后再进行安装:kubectl create -f  calico.yaml  

3、查看pod状态,如果是Running 状态就代表成功了,如果不是就代表有问题

七、查看、验证

[root@k8s-master ~]# kubectl get no -o wide
[root@k8s-master ~]# kubectl get pod -n kube-system

[root@k8s-master ~]# kubectl get cs

到这里一个一主两从的k8s集群已经搭建好了。
### 关于 Kubernetes 1.32 中 cri-dockerd 的兼容性和配置 #### 容器运行时接口 (CRI) 支持的变化 自 Kubernetes 1.20 起,官方宣布逐步淘汰 Docker 作为默认的容器运行时支持[^1]。到 Kubernetes 1.24 本,Docker 已被完全移除为原生 CRI 实现的一部分。为了继续使用 Docker 作为容器运行时,在这些本之后需要安装 `cri-dockerd` 来桥接 Docker 和 KubernetesCRI 接口。 对于 Kubernetes 1.32 本(假设该本存在并延续之前的策略),仍然可以通过部署 `cri-dockerd` 来实现对 Docker 的支持。然而需要注意的是,随着 Kubernetes 不断发展,未来可能会彻底放弃对 Docker 的任何形式的支持,因此建议考虑迁移到其他更现代的容器运行时,例如 containerd 或 CRI-O。 #### 配置 cri-dockerd 方法 以下是针对 Kubernetes 1.32 下如何配置和使用 `cri-dockerd` 的具体指导: 1. **安装依赖项** 确保 Linux 系统已正确设置,并满足以下条件: - 安装最新 Docker。 - 启用并启动 Docker 服务。 参考命令如下: ```bash sudo apt-get update && sudo apt-get install docker.io -y ``` 2. **下载并编译 cri-dockerd** 如果目标环境中未提供预构建二进制文件,则需手动获取源码并完成编译过程。执行以下操作即可获得所需工具链: ```bash git clone https://github.com/Mirantis/cri-dockerd.git cd cri-dockerd make binary ``` 编译完成后会生成可执行程序位于路径 `/usr/local/bin/cri-dockerd`. 3. **创建 systemd 单元文件** 将下面的内容保存至 `/etc/systemd/system/cri-docker.service` 文件中以便管理进程生命周期: ```ini [Unit] Description=CRI interface for Docker After=docker.service Requires=docker.service [Service] ExecStart=/usr/local/bin/cri-dockerd --container-runtime-endpoint unix:///var/run/dockershim.sock Restart=always RestartSec=5s [Install] WantedBy=multi-user.target ``` 4. **重启 kubelet 并验证连接状态** 修改 Kubelet 参数使其指向新的 socket 地址 (`unix:///var/run/cri-dockerd.sock`) ,随后重新加载配置以应用更改效果。 更新后的参数应类似于这样: ```yaml runtime-cgroups=/systemd/system.slice network-plugin=cni cgroup-driver=systemd container-runtime=remote remote-runtime-endpoint=unix:///var/run/cri-dockerd.sock image-service-endpoint=unix:///var/run/cri-dockerd.sock ``` 5. **测试环境稳定性** 利用标准 CLI 命令确认组件间交互正常运作无误: ```bash kubectl get nodes crictl ps ``` 以上步骤能够帮助用户成功搭建基于 Kubernetes 1.32 的工作流体系结构,其中包含通过 `cri-dockerd` 进行驱动对接的功能特性[^2]。 #### 注意事项 尽管当前可以借助第三方解决方案维持旧有习惯模式不变,但从长远来看迁移至更加高效稳定的替代品才是明智之举。这不仅有助于减少维护成本还能享受更多功能扩展优势。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值