当前位置: 首页 > article >正文

K8S集群的搭建

参考资料参考视频https://ke.gupaoedu.cn/play/288/5/34854?phaseId6参考资料通过网盘分享的文件02.Kubernetes链接: https://pan.baidu.com/s/1nrYZvlnADhlDF7RarNSbZQ 提取码: m39a概要本文是搭建一个主节点、两个工作节点的K8S集群要求每个节点都安装docker,且CPU最少两核、内存最少2G并且保证3台机器处于同一个网段互相之间可以ping通本文是参考官网的生产环境安装方式有条件的话还是参考官网https://kubernetes.io/zh-cn/docs/setup/production-environment/tools/kubeadm/install-kubeadm/本文使用的版本Docker 18.09.0---kubeadm-1.14.0-0kubelet-1.14.0-0kubectl-1.14.0-0---k8s.gcr.io/kube-apiserver:v1.14.0k8s.gcr.io/kube-controller-manager:v1.14.0k8s.gcr.io/kube-scheduler:v1.14.0k8s.gcr.io/kube-proxy:v1.14.0k8s.gcr.io/pause:3.1k8s.gcr.io/etcd:3.3.10k8s.gcr.io/coredns:1.3.1---calico:v3.9搭建步骤更新yum在每个服务器执行一下命令yum -y update yum install -y conntrack ipvsadm ipset jq sysstat curl iptables libseccompDocker 准备在每个服务器上安装合适的版本参考以下网站的步骤安装docker 版本为18.09.0https://blog.csdn.net/qq_23095607/article/details/153885161?spm1011.2415.3001.5331启动dockersudo systemctl start docker sudo systemctl enable docker查看每个服务器是否启动成功systemctl status docker修改Host文件这里最好先把IP 和 要设置域名的映射 在notepad里面写下192.168.124.134 m 192.168.124.135 w1 192.168.124.136 w2m是maser节点 ,w1是worker-01工作节点1w2是worker-02工作节点21. 修改master服务器设置master的hostname并且修改hosts文件sudo hostnamectl set-hostname m然后编辑host将上面的IP映射添加进去vi /etc/hosts将IP映射添加进去2. 修改worker-01服务器设置worker-01的hostname并且修改hosts文件sudo hostnamectl set-hostname w1然后编辑host将上面的IP映射添加进去vi /etc/hosts将IP映射添加进去3. 修改worker-02服务器设置worker-02的hostname并且修改hosts文件sudo hostnamectl set-hostname w2然后编辑host将上面的IP映射添加进去vi /etc/hosts将IP映射添加进去4. 测试可以使用域名ping一下试一试比如在master节点ping两个worker节点ping w1 ping w2系统基础前提配置在每台服务器上1. 关闭防火墙systemctl stop firewalld systemctl disable firewalld2. 关闭selinuxsetenforce 0 sed -i s/^SELINUXenforcing$/SELINUXpermissive/ /etc/selinux/config3. 关闭swapswapoff -a sed -i /swap/s/^\(.*\)$/#\1/g /etc/fstab4. 配置iptables的ACCEPT规则iptables -F iptables -X iptables -F -t nat iptables -X -t nat iptables -P FORWARD ACCEPT5. 设置系统参数cat EOF /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables 1 net.bridge.bridge-nf-call-iptables 1 EOF sysctl --system安装kubeadm, kubelet 和 kubectl在每台服务器下都执行以下步骤1. 配置yum源cat EOF /etc/yum.repos.d/kubernetes.repo [kubernetes] nameKubernetes baseurlhttp://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64 enabled1 gpgcheck0 repo_gpgcheck0 gpgkeyhttp://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF2. 安装kubeadm、kubelet、kubectl先卸载一遍sudo yum remove -y kubeadm kubelet kubectl然后安装yum install -y kubelet-1.14.0-0 yum install -y kubeadm-1.14.0-0 yum install -y kubectl-1.14.0-0如果出现了依赖冲突则先安装下依赖使用如下命令安装sudo yum install kubernetes-cni-0.7.5-03. docker和k8s设置同一个cgroupvi /etc/docker/daemon.json添加以下内容注意用逗号,隔开【文件没内容的话就新建有的话就加上这一句注意文件的格式[逗号]】exec-opts: [native.cgroupdriversystemd],然后重新加载systemctl daemon-reload systemctl restart docker4. kubelet设置执行以下命令【找不到内容没关系】sed -i s/cgroup-driversystemd/cgroup-drivercgroupfs/g /etc/systemd/system/kubelet.service.d/10-kubeadm.conf【重启kubelet一定要执行】systemctl enable kubelet systemctl start kubelet下载proxy、pause、scheduler等国内镜像需要通过kubeadm来下载K8S需要组件的镜像1. 查看kubeadm使用的镜像kubeadm config images list可以看到用的都是国外的镜像如果你会科学上网全局模式应该可以直接拉取2. 创建脚本批量从阿里云下载镜像并修改tag在每个节点中执行如下命令vi kubeadm.sh然后将下面内容添加到该文件中set -e KUBE_VERSIONv1.14.0 KUBE_PAUSE_VERSION3.1 ETCD_VERSION3.3.10 CORE_DNS_VERSION1.3.1 GCR_URLk8s.gcr.io ALIYUN_URLregistry.cn-hangzhou.aliyuncs.com/google_containers images(kube-proxy:${KUBE_VERSION} kube-scheduler:${KUBE_VERSION} kube-controller-manager:${KUBE_VERSION} kube-apiserver:${KUBE_VERSION} pause:${KUBE_PAUSE_VERSION} etcd:${ETCD_VERSION} coredns:${CORE_DNS_VERSION}) for imageName in ${images[]} ; do docker pull $ALIYUN_URL/$imageName docker tag $ALIYUN_URL/$imageName $GCR_URL/$imageName docker rmi $ALIYUN_URL/$imageName done然后执行运行脚本注意只在主节点执行sh ./kubeadm.sh然后在每个节点中查看下载的镜像docker images下面将部署K8S所需要的插件初始化主节点在初始化前一定要检查每台服务器kubelet 的版本是否一致kubelet --version选用一台服务器作为主节点执行下面命令需要替换下面的kubernetes版本信息以及IP为主节点IPkubeadm init --kubernetes-version1.14.0 --apiserver-advertise-address192.168.124.138 --pod-network-cidr10.244.0.0/16【若要重新初始化集群状态kubeadm reset然后再进行上述操作】【期间可能会有版本冲突那就卸载了重新安装一下对应的版本】保存好最后kubeadm join等信息在successfully后日志会提示我们后续的操作并生成两个token记得保存比如在本地创建个文件保存保存到本地文件中然后按照上面的提示执行命令mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config1. 在主节点初始化成功后可以通过语句查看已经初始化好的K8S插件在主节点中执行查看初始化好的插件kubectl get pods -n kube-system可以看到除了两个DNS没有运行其他的都运行了还可以运行下健康检查curl -k https://localhost:6443/healthz2. 安装DNS网络插件在主节点 可以在该网址下选择需要安装的网络插件https://kubernetes.io/zh-cn/docs/concepts/cluster-administration/addons/这里我们选择Calico 插件首先将安装Calico所需的yml文件下载下来sudo yum install -y wget wget https://docs.projectcalico.org/v3.9/manifests/calico.yaml这个yml文件中有很多镜像如果不是香港、海外服务器需要提前拉取到主节点中cat calico.yaml|grep image可以参考本人的方案进行拉取这里使用的是方案中的是阿里云仓库工作流下载的需要的可以直接拉取我阿里云仓库的# 拉取 docker pull crpi-eoqja8fq38rifseg.ap-southeast-1.personal.cr.aliyuncs.com/docker-study-wjl/docker_hello_world:calico-kube-controllers-v3.9.6 docker pull crpi-eoqja8fq38rifseg.ap-southeast-1.personal.cr.aliyuncs.com/docker-study-wjl/docker_hello_world:calico-cni-v3.9.6 docker pull crpi-eoqja8fq38rifseg.ap-southeast-1.personal.cr.aliyuncs.com/docker-study-wjl/docker_hello_world:calico-pod2daemon-flexvol-v3.9.6 docker pull crpi-eoqja8fq38rifseg.ap-southeast-1.personal.cr.aliyuncs.com/docker-study-wjl/docker_hello_world:calico-node-v3.9.6 # 改名 docker tag crpi-eoqja8fq38rifseg.ap-southeast-1.personal.cr.aliyuncs.com/docker-study-wjl/docker_hello_world:calico-node-v3.9.6 calico/node:v3.9.6 docker tag crpi-eoqja8fq38rifseg.ap-southeast-1.personal.cr.aliyuncs.com/docker-study-wjl/docker_hello_world:calico-pod2daemon-flexvol-v3.9.6 calico/pod2daemon-flexvol:v3.9.6 docker tag crpi-eoqja8fq38rifseg.ap-southeast-1.personal.cr.aliyuncs.com/docker-study-wjl/docker_hello_world:calico-cni-v3.9.6 calico/cni:v3.9.6 docker tag crpi-eoqja8fq38rifseg.ap-southeast-1.personal.cr.aliyuncs.com/docker-study-wjl/docker_hello_world:calico-kube-controllers-v3.9.6 calico/kube-controllers:v3.9.6 #删除 docker rmi crpi-eoqja8fq38rifseg.ap-southeast-1.personal.cr.aliyuncs.com/docker-study-wjl/docker_hello_world:calico-kube-controllers-v3.9.6 docker rmi crpi-eoqja8fq38rifseg.ap-southeast-1.personal.cr.aliyuncs.com/docker-study-wjl/docker_hello_world:calico-cni-v3.9.6 docker rmi crpi-eoqja8fq38rifseg.ap-southeast-1.personal.cr.aliyuncs.com/docker-study-wjl/docker_hello_world:calico-pod2daemon-flexvol-v3.9.6 docker rmi crpi-eoqja8fq38rifseg.ap-southeast-1.personal.cr.aliyuncs.com/docker-study-wjl/docker_hello_world:calico-node-v3.9.6然后执行下面的命令进行DNS的初始化kubectl apply -f calico.yaml执行命令查看是否安装成功kubectl get pods --all-namespaces -w可以看到全部全部都已经跑起来了这个结果出来就代表主节点已经完成工作节点加入主节点在主节点的插件都安装好以后就需要将工作节点加入到主节点中在前面主节点初始化后我们保存了kubeadm join的信息我们只需要在每个工作节点执行kubeadm join信息即可将工作节点加入到K8S集群中【这里还是要强调以下各个节点的kubectl的版本一定要一致】kubeadm join 192.168.124.138:6443 --token wmeunc.nizafcgw4tm4okjt \ --discovery-token-ca-cert-hash sha256:052e3b32291005afe385265cf9104374959e484963a863c50c89b5500709ba6d最后在主节点master中查看K8S集群的情况kubectl get nodes这样整个K8S集群就部署好了部署测试如果你想部署POD测试K8S集群可以执行下面操作1. 在主节点中执行cat pod_nginx_rs.yaml EOF apiVersion: apps/v1 kind: ReplicaSet metadata: name: nginx labels: tier: frontend spec: replicas: 3 selector: matchLabels: tier: frontend template: metadata: name: nginx labels: tier: frontend spec: containers: - name: nginx image: nginx ports: - containerPort: 80 EOF2. 根据pod_nginx_rs.yml文件创建podkubectl apply -f pod_nginx_rs.yaml3. 查看podkubectl get pods kubectl get pods -o wide kubectl describe pod nginx4. 删除测试POD可以通过kubectl将POD进行删除kubectl delete -f pod_nginx_rs.yaml这样pod_nginx_rs.yaml定义的所有资源就会被删除通过命令查看可以看到刚才创建的POD已经被删除kubectl get pods

相关文章:

K8S集群的搭建

参考资料 参考视频: https://ke.gupaoedu.cn/play/288/5/34854?phaseId6 参考资料: 通过网盘分享的文件:02.Kubernetes 链接: https://pan.baidu.com/s/1nrYZvlnADhlDF7RarNSbZQ 提取码: m39a 概要: 本文是搭建一个主节点、两个…...

外部只读诊断工具triage:AI Agent网关故障排查的独立法医

1. 项目概述:当网关“病危”时,你需要一个外部诊断专家在AI Agent和微服务架构日益普及的今天,系统的复杂性也水涨船高。想象一下,你负责维护一个基于OpenClaw环境的关键业务网关,它突然变得响应迟缓甚至完全不可用。你…...

码蹄杯练题纯享版

2026年码蹄杯题集 目前为止做的都是青铜与白银难度的题目,然后就只是将自己思考的比较深的题目放在这里做一个记录了,其他非常非常简单的题目没有记录在这里,黄金及以上会在后面慢慢去挑战! MC0505厨房里练手艺 专诸为了完成刺杀…...

Claude Code终极配置同步指南:三分钟实现跨设备开发环境一致性

Claude Code终极配置同步指南:三分钟实现跨设备开发环境一致性 【免费下载链接】claude-code Claude Code is an agentic coding tool that lives in your terminal, understands your codebase, and helps you code faster by executing routine tasks, explaining…...

技术架构革新:构建跨平台网盘直链解析服务的性能突破

技术架构革新:构建跨平台网盘直链解析服务的性能突破 【免费下载链接】netdisk-fast-download 聚合多种主流网盘的直链解析下载服务, 一键解析下载,已支持夸克网盘/uc网盘/蓝奏云/蓝奏优享/小飞机盘/123云盘等. 支持文件夹分享解析. 体验地址: https://l…...

OpenClaw 2026.3.8 更新了哪些内容?备份 CLI、Talk 静默超时、TUI Agent 识别与 ACP 溯源能力解析

🔥个人主页:杨利杰YJlio❄️个人专栏:《Sysinternals实战教程》《Windows PowerShell 实战》《WINDOWS教程》《IOS教程》《微信助手》《锤子助手》 《Python》 《Kali Linux》 《那些年未解决的Windows疑难杂症》🌟 让复杂的事情更…...

手机变身高精度测绘仪:RtkGps如何让Android设备实现厘米级定位突破

手机变身高精度测绘仪:RtkGps如何让Android设备实现厘米级定位突破 【免费下载链接】RtkGps Playing with rtklib on android 项目地址: https://gitcode.com/gh_mirrors/rt/RtkGps 想象一下,你手中的普通智能手机突然拥有了专业测绘设备的定位精…...

roop-unleashed:零训练AI人脸替换技术的架构解析与实践指南

roop-unleashed:零训练AI人脸替换技术的架构解析与实践指南 【免费下载链接】roop-unleashed Evolved Fork of roop with Web Server and lots of additions 项目地址: https://gitcode.com/gh_mirrors/ro/roop-unleashed 在数字内容创作领域,人脸…...

DevEco Studio:上传文件到模拟器中

先启动一个模拟器:例如,将demo.jpg用鼠标直接拖到模拟器中:点击模拟器的文件管理:点击 我的手机:点击 Download:可以看到刚才拖上来的文件:点击这个文件,在模拟器上展示:…...

X-TRACK开源GPS自行车码表终极指南:5步打造你的专属骑行数据可视化系统

X-TRACK开源GPS自行车码表终极指南:5步打造你的专属骑行数据可视化系统 【免费下载链接】X-TRACK A GPS bicycle speedometer that supports offline maps and track recording 项目地址: https://gitcode.com/gh_mirrors/xt/X-TRACK 想要打造一个支持离线地…...

为什么你的PHP 8.9 Fiber总卡死?——5类隐式同步陷阱(含PDO::ATTR_EMULATE_PREPARES= false致命配置)

更多请点击: https://intelliparadigm.com 第一章:PHP 8.9 Fiber 协程高并发实战案例全景图 PHP 8.9 并未官方发布(截至 2024 年,PHP 最新稳定版为 8.3),但本章基于社区广泛讨论的「Fiber 原生协程增强提案…...

安装yolo26【无标题】

这里写自定义目录标题1 安装ubuntu26.042 安装cuda12.81 安装 CUDA 12.82 配置 CUDA 环境变量3 安装 cuDNN 9.214 安装miniforge5 安装yolo261. 创建并进入 yolo26 环境2. 安装 CUDA 12.8 的 PyTorch nightly(关键)3. 验证 PyTorch CUDA 是否生效&#…...

RGB-D相机深度补全:掩码建模技术解析与实践

1. 项目概述:当RGB-D相机遇上掩码建模去年调试一台服务机器人时,我发现它在光线复杂的厨房环境中频繁撞到透明玻璃门——这暴露了传统RGB-D相机在空间感知上的致命缺陷。常规的深度补全算法在遇到反光、透明或纹理缺失表面时,往往会输出错误的…...

超越频谱分析:双谱图在机械故障诊断中的实战应用指南(以Python为例)

超越频谱分析:双谱图在机械故障诊断中的实战应用指南(以Python为例) 在工业设备的预测性维护领域,早期故障特征往往隐藏在振动信号的噪声中,就像试图在暴雨中听清远处的钟声。传统功率谱分析虽然能识别频率成分&#x…...

3分钟上手Scrcpy Mask:用键盘鼠标玩转安卓设备的终极指南

3分钟上手Scrcpy Mask:用键盘鼠标玩转安卓设备的终极指南 【免费下载链接】scrcpy-mask A Scrcpy client in Rust, Bevy and React, aimed at providing mouse and key mapping to control Android device, similar to a game emulator 项目地址: https://gitcode…...

Hermes配置技能库:从基础调优到生产部署的实战指南

1. 项目概述:一个关于“Hermes”的配置技能库最近在社区里看到不少朋友在讨论一个名为hqhq1025/hermes-setup-skill的项目。乍一看这个标题,可能会有点摸不着头脑——“Hermes”是什么?是那个奢侈品牌吗?显然不是。在技术圈&#…...

不停电、不宕机!UPS在线更换蓄电池组,一文看懂全流程

在机房、数据中心、医疗设备、工业自控等关键场景,UPS电源就是负载设备的“应急生命线”,而蓄电池组则是UPS的“能量心脏”。随着使用时间增长,蓄电池老化、容量下降,会直接导致UPS应急供电失效,一旦突发停电&#xff…...

动态早期退出技术:深度学习推理优化实践

1. 动态早期退出技术概述动态早期退出(Dynamic Early Exiting)是近年来深度学习推理优化领域的重要技术突破。这项技术的核心思想是让神经网络在推理过程中,根据输入样本的复杂度动态决定在哪个中间层提前退出计算,避免对所有样本…...

告别卡顿!在Manjaro/Debian上为Firefox配置N卡硬解,流畅看B站4K

在Manjaro/Debian上解锁N卡硬解:让Firefox流畅播放B站4K视频的终极指南 每次在B站打开4K视频,笔记本风扇就开始狂转,CPU占用率飙升,画面却依然卡顿?如果你正在使用Manjaro或Debian系统,搭配NVIDIA显卡和Fir…...

避开这5个坑,你的Logisim计算机组成实验就能一次跑通

避开这5个坑,你的Logisim计算机组成实验就能一次跑通 第一次打开Logisim时,很多人会被它简洁的界面迷惑——看似简单的拖拽连线,却能在短短几行电路里藏下无数陷阱。那些在实验报告截止前熬夜debug的夜晚,往往都耗费在几个看似微不…...

从Telnetlib到Netmiko:一个网络工程师的Python自动化工具箱升级之路

从Telnetlib到Netmiko:网络工程师的自动化工具进化实战 第一次用Telnetlib写脚本时,那种兴奋感至今难忘——几行代码就能让路由器乖乖执行命令,再也不用反复登录设备敲配置。但随着网络规模扩大,当面对几十台不同厂商的设备时&…...

国产MCU+Flash存储方案避坑:GD32F4系列SPI读写GD25Q64的五个常见问题与调试技巧

GD32F4系列SPI读写GD25Q64实战避坑指南 在嵌入式开发中,SPI Flash存储器因其接口简单、容量适中而广受欢迎。GD25Q64作为一款64Mb(8MB)容量的SPI NOR Flash,与国产GD32F4系列MCU的组合,成为许多项目的首选方案。然而在…...

自然语言生成矢量动画:OmniLottie框架技术解析

1. 项目概述:当矢量动画遇见多模态指令 上周在调试一个金融类App的加载动画时,我第17次打开AE调整贝塞尔曲线,突然意识到:为什么2023年了,我们制作Lottie动画还在用20年前的关键帧工作流?这个顿悟直接催生了…...

数据库Skill开发教程:从零构建SQLite应用

1. 数据库架构设计(图表描述)图表说明:这是一个典型的电商数据库ER图,包含用户、产品和订单三个核心表。Users表存储用户信息,Products表管理商品数据,Orders表记录交易。外键关系确保数据完整性&#xff1…...

RoPE扩展与分层注意力优化代码大模型长上下文理解

1. 项目背景与核心挑战 在当今AI辅助编程领域,代码大模型的单行补全已经相当成熟,但当开发者需要处理复杂项目时,往往会遇到一个关键瓶颈——模型难以理解跨文件的上下文依赖关系。我最近在重构一个中型前端项目时深有体会:当修改…...

别再只会用arecord了!手把手带你用ALSA CORE API在Linux上写个录音小程序

从命令行到代码:用ALSA CORE API打造Linux音频应用的实战指南 如果你已经能熟练使用arecord和aplay这些命令行工具在Linux上进行基础的音频操作,那么是时候深入一层,探索更强大的音频编程能力了。ALSA(Advanced Linux Sound Architecture)作为…...

3步掌握Scrcpy Mask:安卓投屏隐私保护终极指南

3步掌握Scrcpy Mask:安卓投屏隐私保护终极指南 【免费下载链接】scrcpy-mask A Scrcpy client in Rust, Bevy and React, aimed at providing mouse and key mapping to control Android device, similar to a game emulator 项目地址: https://gitcode.com/gh_mi…...

为什么 AI 率 25% 的论文跑工具反而升到 30%?低档位降 AI 攻略。

为什么 AI 率 25% 的论文跑工具反而升到 30%?低档位降 AI 攻略。 「我 AI 率原本 25%——刚过红线一点。跑了一遍降 AI 工具,结果变成 30%!是工具骗人吗?」 不是工具骗人。是你低档位用错了高档位方案——把本来轻度的稿子粗暴改…...

论文 AI 率不同档位的降 AI 教程:先初检定位档位再选工具。

论文 AI 率不同档位的降 AI 教程:先初检定位档位再选工具。 降 AI 不是直接打开工具就跑——先初检定位档位再选工具才是正确的顺序。这一篇给所有档位通用的 5 步流程教程。 5 步通用教程 步骤操作时间第 1 步买初检报告15 分钟第 2 步看档位 选工具5 分钟第 3 …...

如何在Windows电脑上实现iPhone投屏?终极AirPlay 2接收器指南

如何在Windows电脑上实现iPhone投屏?终极AirPlay 2接收器指南 【免费下载链接】airplay2-win Airplay2 for windows 项目地址: https://gitcode.com/gh_mirrors/ai/airplay2-win 还在为iPhone无法投屏到Windows电脑而烦恼吗?每次会议演示都要找转…...