【云原生-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插件,博主也会上传镜像包供大家下载,所有大家不慌不忙,仔细阅读争取一次就能搭建成功。
- 教程如果没有特殊说明的命令和操作, 默认所有机器都需要执行
机器环境
基础环境
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/hosts172.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安装
- 设置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安装准备
- 关闭防火墙
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
EOFsysctl --system
部署 cri-dockerd
官方信息
- 开源地址 https://github.com/Mirantis/cri-dockerd
- 下载地址 https://github.com/Mirantis/cri-dockerd/releases
- 百度网盘下载地址
链接:https://pan.baidu.com/s/1O_8ijPkuvcctoBCuYLTYOA?pwd=yuod
提取码:yuod
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
kubeadm version
systemctl enable kubelet
- 配置⽂件修改
cat <<EOF > /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"
EOF
- 初始化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
- 执行成功后,会有加入节点的代码,然后复制到其他节点进行加入。
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直接使用
链接:https://pan.baidu.com/s/1KJ_JvP5nUWXiBKryxPzl8g?pwd=gx48
提取码:gx48
–来自百度网盘超级会员V7的分享
- 下载calico镜像压缩包,然后手动上传至每台主机
链接:https://pan.baidu.com/s/1vbPPleRmZHRqZBMlHZmfBw?pwd=276t
提取码:276t
–来自百度网盘超级会员V7的分享
- 每个节点手动通过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
查看是否成功
- 在master节点执行命令进行calico插件安装
kubectl apply -f calico.yaml
查看节点情况
- 在主节点执行命令看集群是否成功
kubectl get node -o wide
参考资料
参考文献
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
结尾
k8s集群搭建起来确实有些困难,比如插件多、有的镜像在国外不能拉去等诸多原因,但大家一定要坚持多尝试几次就会学到 更多的知识。
如果大家在搭建中需要帮助,大家也可以私信我。
【云原生-K8s】kubeadm搭建安装k8s集群v1.25版本完整教程【docker、网络插件calico、中间层cri-docker】相关推荐
- 直播 | 基于kubeadm搭建Kubernetes HA集群
分享时间:6月18日 20:30 分享主题:基于kubeadm搭建Kubernetes HA集群 分享人介绍: 张炯,上汽集团下属赛可出行运维工程师.10年工作经验,曾任职于Ctrip.SNDA,作为 ...
- k8s之二进制安装etcd集群
前言 kubeadm安装的集群,默认etcd是一个单机的容器化的etcd,并且k8s和etcd通信没有经过ssl加密和认证,这点是需要改造的. 所以首先我们需要先部署一个三节点的etcd集群,二进制部 ...
- 云原生第4课:Kubernetes 集群管理
本篇文章来自<华为云云原生王者之路训练营>黄金系列课程第4课,由华为云Kubernetes容器平台技术专家Alan主讲,详细介绍Kubernetes集群和Kubernetes节点的生命周期 ...
- CentOS 7 搭建 Ceph 集群(nautilus 版本)
推荐阅读 Helm3(K8S 资源对象管理工具)视频教程:https://edu.csdn.net/course/detail/32506 Helm3(K8S 资源对象管理工具)博客专栏:https: ...
- k8s:概念以及搭建高可用集群
一.k8s概念和架构 1.k8s概述 k8s是谷歌在2014年开源的容器化集群管理系统 使用k8s进行容器化应用部署 使用k8s利于应用扩展 k8s目标实施让容器化应用程序更加简洁高效 2.特性 (1 ...
- (shell批量版)二进制高可用安装k8s集群v1.23.5版本,搭配containerd容器运行时
目录 第1章 安装前准备 1.1 节点规划 1.2 配置NTP 1.3 bind安装DNS服务 1.4 修改主机DNS 1.5 安装runtime环境及依赖 1.5.1 安装docker运行时 1.5 ...
- k8s 一键安装Kubernetes集群
集群方案 使用三台物理机或VMwareVMware虚拟机来搭建集群环境,一台主控服务器,两台工作节点服务器. 一,集群安装准备 kubeasz项目(https://github.com/easzlab ...
- K8S中安装ES集群
背景 在K8S 安装ES集群,使用 Elasticsearch (ECK) Operator 实现 官网 ### https://operatorhub.io/operator/elastic-clo ...
- Kubernetes(k8s)1.14 离线版 集群搭建系列
声明: 如果您有更好的技术与作者分享,或者商业合作: 请访问作者个人网站 http://www.esqabc.com/view/message.html 留言给作 ...
最新文章
- java maven 读写pdf_java读取pdf内容
- golang 代码实现 修改配置文件
- 配置Linux两节点SSH密钥信任
- [core]-ARM Core的分类和总结
- y7000p内存是一个16还是8+8_选择困难症:手握16万,该尝鲜高尔夫8还是抄底奥迪A3?...
- C语言---链表的创建
- sed -i 单引号中嵌套双引号_【函数应用】IF函数的多层嵌套
- Oracle获取指定时间段内的所有日期
- AI 实战:GPS实景识别网络项目(源码共享)
- 核酸检测小程序实战教程
- 小米球(Ngrok)实现内网穿透,让外网可以进行访问本地部署的 API
- 网课(学习通 智慧树)
- java 车牌模糊_免费模糊车牌照片处理软件
- 【问题记录】Win10笔记本电脑禁用自带键盘的方法
- uni-app中使用HTML5 Plus
- 一文看懂互联网支付系统架构
- CTF_Web:攻防世界高手区进阶题WP(15-18)
- 很动人的伤感爱情故事_等待着,寻找着久别的恋人
- 打开ftp服务器上的文件夹发生错误 请检查是否有权向访问该文件夹
- 生物制药计算机和系统管理体系,制药企业计算机系统验证管理改进研究.pdf
热门文章
- 树形json扁平化,一维数组树状化,对象深拷贝,元素后插入新元素,格式或动态路由等常用js合集
- java 当前线程 等待_Java 多线程等待
- 【docker lnmp】 2、容器mysql 连接问题 getaddrinfo failed
- Java服务器与客户端传文件,java实现上传文件到服务器和客户端.pdf
- 选生物化学历史能不能报计算机专业,选历史同样可以当医生,想要学医的看过来,这是一份全面指导...
- ZFS case : top CPU 100%sy, when no free memory trigger it.
- 用python放烟花咯
- 将word试卷匹配转换为结构化表格
- cb4cle计数器如何设计九分频电路
- php 获得图片大小,php获取图片尺寸(宽度,高度)