【云原生-K8s】kubeadm搭建安装k8s集群v1.25版本完整教程【docker、网络插件calico、中间层cri-docker】

这篇具有很好参考价值的文章主要介绍了【云原生-K8s】kubeadm搭建安装k8s集群v1.25版本完整教程【docker、网络插件calico、中间层cri-docker】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

基础描述

  • 从 k8s 1.24开始,dockershim已经从kubelet中移除,但因为历史问题docker却不支持kubernetes主推的CRI(容器运行时接口)标准,所以docker不能再作为k8s的容器运行时了,即从k8s v1.24开始不再使用docker了
  • 但是如果想继续使用docker的话,可以在kubelet和docker之间加上一个中间层cri-docker。cri-docker是一个支持CRI标准的shim(垫片)。一头通过CRI跟kubelet交互,另一头跟docker api交互,从而间接的实现了kubernetes以docker作为容器运行时。但是这种架构缺点也很明显,调用链更长,效率更低。
  • 本文采用了cri-docker的使用,但是更推荐使用containerd作为k8s的容器运行时
  • 其实本来我也准备采用containerd作为容器运行时的,怎奈技术和时间有限,且最新版本网上资料比较少,核心目的还是为了考cka证书,想快速构建起集群

其他

  • 为了搭建次教程虚拟机已经重装系统三次啦,含泪整理出此教程,请各位小伙伴仔细小心的阅读,按照此教程的顺序一步步搭建肯定是能成功的,后面教程也会有遇到的问题处理
  • 期间会用到如calico插件及其他需要的安装包,博主也会上传镜像包供大家下载,所有大家不慌不忙,仔细阅读争取一次就能搭建成功。
  • 教程如果没有特殊说明的命令和操作, 默认所有机器都需要执行

机器环境

k8s 1.25 calico,CNCF,# Kubernetes,docker,容器,kubernetes,calico,cri-docker

基础环境

hostname设置

  • 把每一台虚拟机或者云服务器进行hostname设置,方便查看【master、node节点】
  • 不同节点设置不同的hostname
hostnamectl set-hostname k8s-master
hostnamectl set-hostname k8s-node-1
hostnamectl set-hostname k8s-node-2
  • 所有节点,包括master节点,修改/etc/hosts文件,在最后加入如下你的集群IP信息,内网外网都行,只要能够互相ping通
vi /etc/hosts

172.24.214.110 k8s-master
172.24.214.108 k8s-node-1
172.24.214.109 k8s-node-2

yum更新

  • 更新为最新的内核版本,更新lrzsz方便后面上传镜像包
yum install update
yum install lrzsz
yum install -y conntrack ipvsadm ipset jq sysstat curl iptables libseccomp

docker安装

脚本安装【推荐】

  • 直接在linux上面执行该命令,选择了脚本安装docker,下面的命令安装无需执行
wget -O docker.sh https://files.rundreams.net/sh/docker.sh && sh docker.sh

命令安装

  • 设置repo
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  • 设置国内镜像并重启 daemon
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://j16wttpi.mirror.aliyuncs.com"]
}
EOF
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
  • 进行安装命令,并设置docker自动重启
yum install -y docker-ce
systemctl start docker
systemctl enable docker
  • 查看是否成功
docker info

k8s安装配置

脚本配置【推荐】

  • linux直接执行该命令,选择了脚本配置,无需执行命令配置
wget -O k8s-init.sh https://files.rundreams.net/sh/k8s-init.sh && sh k8s-init.sh

命令配置

  • 关闭防火墙
systemctl stop firewalld && systemctl disable firewalld
  • 关闭selinux
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
  • 关闭swap
swapoff -a
sed -i '/swap/s/^\(.*\)$/#\1/g' /etc/fstab
  • 配置iptables的ACCEPT规则
iptables -F && iptables -X && iptables -F -t nat && iptables -X -t nat && iptables -P FORWARD ACCEPT
  • 设置系统参数
cat <<EOF >  /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

sysctl --system

部署 cri-dockerd

官方信息

  • 开源地址 https://github.com/Mirantis/cri-dockerd
  • 下载地址 https://github.com/Mirantis/cri-dockerd/releases

百度网盘下载

链接:https://pan.baidu.com/s/1zBjp74MDV8Kkrnp2ZZbeNQ?pwd=8dpk
提取码:8dpk

中国移动云盘下载

链接:https://caiyun.139.com/m/i?1F5C35BxQfMvl
提取码:De7b

cri-dockerd部署【所有节点均要执行】

  • 解压并执行以下命令
tar -xf cri-dockerd-0.2.6.amd64.tgz
cp cri-dockerd/cri-dockerd /usr/bin/
chmod +x /usr/bin/cri-dockerd
  • 配置启动⽂件,执行如下命令
cat <<"EOF" > /usr/lib/systemd/system/cri-docker.service
[Unit]
Description=CRI Interface for Docker Application Container Engine
Documentation=https://docs.mirantis.com
After=network-online.target firewalld.service docker.service
Wants=network-online.target
Requires=cri-docker.socket
[Service]
Type=notify
ExecStart=/usr/bin/cri-dockerd --network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.7
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
StartLimitBurst=3
StartLimitInterval=60s
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
Delegate=yes
KillMode=process
[Install]
WantedBy=multi-user.target
EOF
  • ⽣成 socket ⽂件,执行如下命令
cat <<"EOF" > /usr/lib/systemd/system/cri-docker.socket
[Unit]
Description=CRI Docker Socket for the API
PartOf=cri-docker.service
[Socket]
ListenStream=%t/cri-dockerd.sock
SocketMode=0660
SocketUser=root
SocketGroup=docker
[Install]
WantedBy=sockets.target
EOF
  • 启动 cri-docker 并设置开机⾃动启动
systemctl daemon-reload
systemctl enable cri-docker --now
systemctl is-active cri-docker
  • 添加阿⾥云 YUM 源
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

k8s安装

安装 kubeadm kubelet kubectl

  • 执行如下命令
yum install -y kubelet-1.25.0 kubeadm-1.25.0 kubectl-1.25.0

k8s 1.25 calico,CNCF,# Kubernetes,docker,容器,kubernetes,calico,cri-docker

  • 大概执行1分钟左右吧,看网络情况而定。
kubeadm version

k8s其他必须配置

systemctl enable kubelet
  • 配置cgroup-driver=systemd
cat <<EOF > /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"
EOF
  • 配置 docker native.cgroupdriver=systemd
cat <<EOF > /etc/docker/daemon.json
{
  "registry-mirrors": ["https://j16wttpi.mirror.aliyuncs.com"],
  "exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
  • 重新加载daemon
systemctl daemon-reload
  • 重启docker
systemctl restart docker

初始化master节点

  • 此命令只在master节点执行,172.24.214.110替换为你的master节点IP
kubeadm init \
--apiserver-advertise-address=172.24.214.110 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.25.0 \
--service-cidr=10.10.0.0/12 \
--pod-network-cidr=172.17.0.0/16 \
--cri-socket /var/run/cri-dockerd.sock \
--ignore-preflight-errors=all

k8s 1.25 calico,CNCF,# Kubernetes,docker,容器,kubernetes,calico,cri-docker

  • 执行成功后,会有加入节点的代码,然后复制到其他节点进行加入
kubeadm join 172.24.214.110:6443 --token 5efiso.2zibi97nx4cunivt \
        --discovery-token-ca-cert-hash sha256:158fb29cb08d54e58d76239292eed553c25c54fb307424bee8d5776690827303 \
        --cri-socket /var/run/cri-dockerd.sock

网络插件calico

网络插件 yaml下载

wget https://docs.projectcalico.org/manifests/calico.yaml --no-check-certificate
  • 然后自行修改,建议大家使用我修改过的yaml直接使用

百度网盘下载calico.yaml

链接:https://pan.baidu.com/s/1KATNHOZdtZ0169NLfa2JDQ?pwd=nhp6
提取码:nhp6

阿里云网盘下载calico.yaml

calico.yaml https://www.aliyundrive.com/s/geVBb4b4t2A

中国移动云盘下载calico.yaml

链接: https://caiyun.139.com/m/i?1F5C2RFMpI4zl
提取码:Fm1S

  • 下载calico镜像压缩包,然后手动上传至每台主机

百度网盘下载 calico-v3.24.3

链接:https://pan.baidu.com/s/1nxQAJX21-dbaZRkv4pbvWg?pwd=6w6j
提取码:6w6j

中国移动云盘 calico-v3.24.3

链接:https://caiyun.139.com/m/i?1F5C2lG1dGd66
提取码:Odq8

  • 下载calico到本地进行解压
    k8s 1.25 calico,CNCF,# Kubernetes,docker,容器,kubernetes,calico,cri-docker
  • 把三个压缩包分别上传到全部节点
  • 每个节点手动通过docker离线加载镜像
docker load -i calico~cni~v3.24.3.tar.gz
docker load -i calico~kube~controllers~v3.24.3.tar.gz
docker load -i calico~node~v3.24.3.tar.gz
  • 通过命令 docker images | grep calico 查看是否成功
    k8s 1.25 calico,CNCF,# Kubernetes,docker,容器,kubernetes,calico,cri-docker
  • 在master节点执行命令进行calico插件安装
kubectl apply -f calico.yaml

查看节点情况

  • 在主节点执行命令看集群是否成功 kubectl get node -o wide
    k8s 1.25 calico,CNCF,# Kubernetes,docker,容器,kubernetes,calico,cri-docker

参考资料

参考文献

https://blog.csdn.net/qq_41822345/article/details/126679925
https://blog.csdn.net/xiaohuixing16134/article/details/102784269
https://blog.csdn.net/bilibilidicks/article/details/125825282
https://blog.csdn.net/zl8751/article/details/126308198
https://blog.csdn.net/weibo1230123/article/details/121732361

其他低版本搭建参考

https://blog.csdn.net/u010800804/article/details/124524688

问题

问题1:初始化master节点错误

Unfortunately, an error has occurred:
timed out waiting for the condition
This error is likely caused by:
- The kubelet is not running
- The kubelet is unhealthy due to a misconfiguration of the node in some way (required cgroups disabled)
If you are on a systemd-powered system, you can try to troubleshoot the error with the following commands:
- ‘systemctl status kubelet’
- ‘journalctl -xeu kubelet’
Additionally, a control plane component may have crashed or exited when started by the container runtime.
To troubleshoot, list all containers using your preferred container runtimes CLI.
Here is one example how you may list all running Kubernetes containers by using crictl:
- ‘crictl --runtime-endpoint unix:///var/run/cri-dockerd.sock ps -a | grep kube | grep -v pause’
Once you have found the failing container, you can inspect its logs with:
- ‘crictl --runtime-endpoint unix:///var/run/cri-dockerd.sock logs CONTAINERID’
error execution phase wait-control-plane: couldn’t initialize a Kubernetes cluster
To see the stack trace of this error execute with --v=5 or higher

解决

  • 我的问题是 重启机器 reboot 解决问题。
  • 参考文献:https://blog.csdn.net/weixin_66536807/article/details/124903478

问题2:加入节点报错

Found multiple CRI endpoints on the host. Please define which one do you wish to use by setting the ‘criSocket’ field in the kubeadm configuration file: unix:///var/run/containerd/containerd.sock, unix:///var/run/cri-dockerd.sock
To see the stack trace of this error execute with --v=5 or higher文章来源地址https://www.toymoban.com/news/detail-780349.html

  • 大概的意思是找到多个cri,需要指定一个

结尾

k8s集群搭建起来确实有些困难,比如插件多、有的镜像在国外不能拉去等诸多原因,但大家一定要坚持多尝试几次就会学到 更多的知识。

如果大家在搭建中需要帮助,大家也可以私信我。

到了这里,关于【云原生-K8s】kubeadm搭建安装k8s集群v1.25版本完整教程【docker、网络插件calico、中间层cri-docker】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【云原生】使用kubeadm搭建K8S

    服务器 IP 配置 master(2C/4G,cpu核心数要求大于2) 192.168.243.107 docker、kubeadm、kubelet、kubectl、flannel node01(2C/2G) 192.168.243.108 docker、kubeadm、kubelet、kubectl、flannel node02(2C/2G) 192.168.243.109 docker、kubeadm、kubelet、kubectl、flannel master02 192.168.243.110 docker、kubeadm、kubelet、kubectl、flann

    2024年02月14日
    浏览(48)
  • Kubernetes(K8s)使用 kubeadm 方式搭建多 master 高可用 K8s 集群

    本篇主要针对上篇文章的单 master 节点的 K8s 集群上搭建多 master 节点集群 和 LB 负载均衡服务器。 Kubernetes(K8S)集群搭建基础入门教程 虚拟机 IP 地址: IP 操作系统 主机名称 192.168.2.121 centos7.9 k8s-master01 192.168.2.124 centos7.9 k8s-master02 192.168.2.125 centos7.9 k8s-node01 192.168.2.126 centos

    2023年04月26日
    浏览(52)
  • Kubeadm安装K8s集群

    一、硬件环境 准备3台Linux服务器,此处用Vmware虚拟机。 主机名 CPU 内存 k8smaster 2核 4G k8snode1 2核 4G k8snode2 2核 4G 二、系统前置准备 配置三台主机的hosts文件 设置主机名 关闭selinux、禁用swap分区 ipv4流量转发 关闭防火墙 同步三台服务器的时间 三、环境安装 Docker 安装 Docker卸载

    2024年02月13日
    浏览(36)
  • 成功使用kubeadm搭建k8s集群的过程

    目录 1.环境初始化: 2.安装docker 3.安装k8s组件: 4.准备集群镜像: 5.集群初始化: 6.安装网络插件: 7.服务部署: 1.环境初始化: 主机规划: 节点 IP地址 操作系统 配置 master 192.168.178.102 centos7.9 2G2核 node1 192.168.178.152 centos7.9 2G2核 node2 192.168.178.202 centos7.9 2G2核 本次环境搭建需

    2023年04月19日
    浏览(46)
  • Kubeadm方式搭建K8s集群 1.27.0版本

    目录 一、集群规划 二、系统初始化准备(所有节点同步操作) 三、安装并配置cri-docker插件 四、安装kubeadm(所有节点同步操作) 五、初始化集群 六、Node节点添加到集群 七、安装网络组件Calico 八、测试codedns解析可用性 环境规划: pod网段:10.244.0.0/16 service网段:10.10.0.0/16 注

    2024年02月13日
    浏览(68)
  • Kubeadm方式搭建K8s集群【1.27.0版本】

    官方文档: 二进制下载地址 环境规划: pod网段:10.244.0.0/16 service网段:10.10.0.0/16 注意: pod和service网段不可冲突,如果冲突会导致K8S集群安装失败。 主机名 IP地址 操作系统 master-1 16.32.15.200 CentOS7.8 node-1 16.32.15.201 CentOS7.8 node-2 16.32.15.202 CentOS7.8 1、关闭防火墙 2、配置域名解

    2024年02月04日
    浏览(74)
  • kubeadm方式搭建的k8s集群升级——2023.05

    搭建k8s集群的方式有很多种,比如二进制,kubeadm,RKE(Rancher)等,k8s集群升级方式也各有千秋,本文主要介绍使用kubeadm方式搭建的k8s集群升级方法。 需要注意的是,升级集群版本建议逐步升级,比如 v1.20.4–v1.21.4–v1.22.4–v1.23.4–v1.24.4,不能跨度过大,否则会报错。 节点

    2024年02月12日
    浏览(63)
  • 云原生Kubernetes:K8S集群版本升级(v1.20.6 - v1.20.15)

    目录 一、理论 1.K8S集群升级 2.集群概况 3.升级集群 4.验证集群 二、实验  1.升级集群 2.验证集群 三、问题 1.给node1节点打污点报错 (1)概念 搭建K8S集群的方式有很多种,比如二进制,kubeadm,RKE(Rancher)等,K8S集群升级方式也各有千秋,目前准备使用kubeadm方式搭建的k8s集群

    2024年02月07日
    浏览(51)
  • Kubeadm方式搭建K8s高可用集群【1.23.0版本】

    官方文档: 二进制下载地址 环境规划: pod网段:10.244.0.0/16 service网段:10.10.0.0/16 注意: pod和service网段不可冲突,如果冲突会导致K8S集群安装失败。 主机名 IP地址 操作系统 备注 master-1 16.32.15.200 CentOS7.8 安装keepalived、nginx实现高可用 master-2 16.32.15.201 CentOS7.8 安装keepalived、

    2023年04月22日
    浏览(55)
  • 云原生Kubernetes:K8S集群版本升级(v1.20.15 - v1.22.14)

    目录 一、理论 1.K8S集群升级 2.集群概况 3.升级集群(v1.21.14) 4.验证集群(v1.21.14) 5.升级集群(v1.22.14) 6.验证集群  (v1.22.14) 二、实验  1.升级集群(v1.21.14) 2.验证集群(v1.21.14)  3.升级集群(v1.22.14) 4.验证集群(v1.22.14) (1)概念 搭建K8S集群的方式有很多种,比如二

    2024年02月07日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包