在CentOS 7上使用kubeadm部署Kubernetes集群
如有错误,敬请谅解!
此文章仅为本人学习笔记,仅供参考,如有冒犯,请联系作者删除!!
前言:
Kubernetes是一个开源的容器编排平台,用于管理和自动化部署容器化的应用程序。
Kubeadm是Kubernetes官方社区推出的一个用于快速部署Kubernetes集群的工具,它可以帮助我们简化集群部署的过程。
1. 安装要求(可根据自己需求制定,仅供参考)
在开始之前,我们需要满足以下几个条件:
- 3台虚拟机,操作系统 CentOS7.7-86_x64(我用的是VMWare起的虚拟机)
- 硬件配置:2核4G 100G
- 可以访问外网,需要拉取镜像,如果服务器不能上网,需要提前下载镜像并导入节点(如果无法访问外网参考:juejin.cn/post/720504…)
- 禁止swap分区
2. 准备环境
以下是我本地的虚机IP配置
| 角色 | IP |
|---|---|
| master | 192.168.91.137 |
| node1 | 192.168.91.138 |
| node2 | 192.168.91.139 |
在准备好的3台虚机上执行以下命令,初始化环境
# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld # 关闭selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config # 永久
setenforce 0 # 临时 # 关闭swap
swapoff -a # 临时
sed -ri 's/.*swap.*/#&/' /etc/fstab # 永久 # 根据规划设置主机名 hostnamectl set-hostname <hostname>
# 在master添加hosts,以下IP地址根据你的实际IP更改
cat >> /etc/hosts << EOF
192.168.91.137 k8smaster
192.168.91.138 k8snode1
192.168.91.139 k8snode2
EOF # 将桥接的IPv4流量传递到iptables的链
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF sysctl --system # 生效 # 时间同步
yum install ntpdate -y
ntpdate time.windows.com
3. 所有节点安装Docker/kubeadm/kubelet
3.1 安装Docker
Kubernetes默认CRI(容器运行时)为Docker,因此先安装Docker。
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo yum -y install docker-ce-18.06.1.ce-3.el7 systemctl enable docker && systemctl start docker docker --version
配置docker源为国内源
$ cat > /etc/docker/daemon.json << EOF
{ "registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"]
}
EOF # 重启 docker 使配置生效
systemctl restart docker # 查看docker信息
docker info
docker 的Registry Mirros如下表示配置成功

3.2 添加阿里云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
3.3 安装kubeadm,kubelet和kubectl
yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0 systemctl enable kubelet
4. 部署Kubernetes Master
在192.168.91.137(Master)执行。 --apiserver-advertise-address={Master节点ip} 由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址。
kubeadm init \ --apiserver-advertise-address=192.168.91.137 \ --image-repository registry.aliyuncs.com/google_containers \ --kubernetes-version v1.18.0 \ --service-cidr=10.96.0.0/12 \ --pod-network-cidr=10.244.0.0/16
Master节点出现以下提示信息,表示安装成功

安装成功后,按照提示将kube config 文件复制到指定目录,如下:
mkdir -p $HOME/.kube cp -i /etc/kubernetes/admin.conf $HOME/.kube/config chown $(id -u):$(id -g) $HOME/.kube/config kubectl get nodes
5. 加入Kubernetes Node
在192.168.91.138和192.168.91.139(Node)执行。
向集群添加新节点,执行在kubeadm init输出的kubeadm join命令:

$ kubeadm join 192.168.91.137:6443 --token oej61r.n22wnd46np15tea7 \ --discovery-token-ca-cert-hash sha256:ca04c678c4b307e92efe1642da09385fdca4d254f7d15e45b04d29176dc272a0
在k8snode1虚机上执行kubeadm join将k8snode1加入到集群


在k8snode2虚机上执行kubeadm join将k8snode2加入到集群


默认token有效期为24小时,当过期之后,该token就不可用了。这时就需要重新创建token,操作如下:
kubeadm token create --print-join-command
6. 部署CNI网络插件
做完以上5步后,发现所有节点都是 NotReady 状态,是因为Kubernetes集群需要一个网络插件来提供容器之间的网络通信。我们可以选择安装Flannel插件,执行以下命令来部署:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml kubectl get pods -A
出现以下说明网络插件安装成功,需要等一会网络插件相关pod才能起来

若出现以下情况:
则需要在/etc/hosts下添加主机ip映射信息,具体做法如下:
1、找到域名对应的ip地址
域名ip查询链接:http://ip.tool.chinaz.com/
2、/etc/hosts中添加主机ip映射信息
3、重新获取:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
过几分钟后,执行 kubectl get pods -A,发现在namespace kube-flannel 下网络插件的pod已经处于 Running 状态

再次执行 kubectl get nodes 查看nodes状态,发现3个节点的状态已经从 NotReady 变成了 Ready,说明集群节点准备就绪,可以正常创建pod等

7. 测试kubernetes集群
在Kubernetes集群中创建一个pod,验证是否正常运行:
kubectl create deployment nginx --image=nginx $ kubectl expose deployment nginx --port=80 --type=NodePort $ kubectl get pod,svc
如下图,可以看到 nginx pod已经正常运行,而且创建的 svc 对外暴漏的端口是 31874

使用3台虚拟机的IP加上端口访问nginx服务 Master虚机IP+端口

k8snode1虚机IP+端口

k82node2虚机IP+端口
说明你可以使用任何一个Node节点的IP地址和NodePort来访问Nginx应用。
如有错误,请联系作者删除
并恳请同行朋友予以斧正,万分感谢!
相关文章:
在CentOS 7上使用kubeadm部署Kubernetes集群
如有错误,敬请谅解! 此文章仅为本人学习笔记,仅供参考,如有冒犯,请联系作者删除!! 前言: Kubernetes是一个开源的容器编排平台,用于管理和自动化部署容器化的应用程序。…...
这6个免费设计素材网站,设计师都在用,马住
新手设计师不知道去哪里找素材,那就看看这几个设计师都在用的网站吧,免费、付费、商用素材都有,可根据需求选择,赶紧收藏~ 菜鸟图库 https://www.sucai999.com/?vNTYxMjky 菜鸟图库是一个非常大的素材库,站内包含设…...
uni-app引入sortable列表拖拽,兼容App和H5,拖拽排序。
效果: 拖拽排序 背景: 作为一名前端开发人员,在工作中难免会遇到拖拽功能,分享一个github上一个不错的拖拽js库,能满足我们在项目开发中的需要,下面是我在uniapp中使用SortableJS的使用详细流程; vue开发…...
Redis-内存淘汰算法
Redis可以存多少数据 32位的操作系统默认3G 谁现在用32位啊?我们说64位的 一般来讲是不设上限的 但是我们也可以主动配置maxmemory, maxmemory支持各单位: maxmemory 1024 (默认字节) maxmemory 1024KB maxmemory 1024MB maxmemory 1204GB 当Redis存储超过这个配置值&#…...
Git 合并分支时允许合并不相关的历史
git fetch git fetch 是 Git 的一个命令,用于从远程仓库中获取最新的提交和数据,同时更新本地仓库的远程分支指针。 使用 git fetch 命令可以获取远程仓库的最新提交,但并不会自动合并或修改本地分支。它会将远程仓库的提交和引用ÿ…...
世界上最著名的密码学夫妻的历史
Alice和Bob是密码学领域里最著名的虚拟夫妻,自1978年“诞生”以来,到走进二十一世纪的移动互联网时代,作为虚构的故事主角,Alice和Bob不仅在计算机理论、逻辑学、量子计算等与密码学相关的领域中得到应用,他们的名字也…...
二维码网络钓鱼攻击泛滥!美国著名能源企业成主要攻击目标
近日,Cofense发现了一次专门针对美国能源公司的网络钓鱼攻击活动,攻击者利用二维码将恶意电子邮件塞进收件箱并绕过安全系统。 Cofense 方面表示,这是首次发现网络钓鱼行为者如此大规模的使用二维码进行钓鱼攻击,这表明他们可能正…...
前端面试题-CSS
1. 盒模型 ⻚⾯渲染时, dom 元素所采⽤的 布局模型。可通过 box-sizing 进⾏设置。根据计算宽⾼的区域可分为 content-box ( W3C 标准盒模型)border-box ( IE 盒模型)padding-boxmargin-box (浏览器未实现) 2. BFC 块级格式化上下⽂,是⼀个独⽴的渲染…...
6.1 安全漏洞与网络攻击
数据参考:CISP官方 目录 安全漏洞及产生原因信息收集与分析网络攻击实施后门设置与痕迹清除 一、安全漏洞及产生原因 什么是安全漏洞 安全漏洞也称脆弱性,是计算机系统存在的缺陷 漏洞的形式 安全漏洞以不同形式存在漏洞数量逐年递增 漏洞产生的…...
STM32--EXTI外部中断
前文回顾---STM32--GPIO 相关回顾--有关中断系统简介 目录 STM32中断 NVIC EXTI外部中断 AFIO EXTI框图 旋转编码器简介 对射式红外传感器工程 代码: 旋转编码器工程 代码: STM32中断 先说一下基本原理: 1.中断请求发生:…...
Python + Selenium 处理浏览器Cookie
工作中遇到这么一个场景:自动化测试登录的时候需要输入动态验证码,由于某些原因,需要从一个已登录的机器上,复制cookie过来,到自动化这边绕过登录。 浏览器的F12里复制出来的cookie内容是文本格式的: uui…...
文件的导入与导出
文章目录 一、需求二、分析1. Excel 表格数据导出2. Excel 表格数据导入一、需求 在我们日常开发中,会有文件的导入导出的需求,如何在 vue 项目中写导入导出功能呢 二、分析 以 Excel 表格数据导出为例 1. Excel 表格数据导出 调用接口将返回的数据进行 Blob 转换,附: 接…...
[C++] string类的介绍与构造的模拟实现,进来看吧,里面有空调
文章目录 1、string类的出现1.1 C语言中的字符串 2、标准库中的string类2.1 string类 3、string类的常见接口说明及模拟实现3.1 string的常见构造3.2 string的构造函数3.3 string的拷贝构造3.4 string的赋值构造 4、完整代码 1、string类的出现 1.1 C语言中的字符串 C语言中&…...
【Apollo】赋能移动性:阿波罗自动驾驶系统的影响
前言 Apollo (阿波罗)是一个开放的、完整的、安全的平台,将帮助汽车行业及自动驾驶领域的合作伙伴结合车辆和硬件系统,快速搭建一套属于自己的自动驾驶系统。 开放能力、共享资源、加速创新、持续共赢是 Apollo 开放平台的口号。百度把自己所拥有的强大、…...
Camunda 7.x 系列【19】表达式语言
有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 2.7.9 本系列Camunda 版本 7.19.0 源码地址:https://gitee.com/pearl-organization/camunda-study-demo 文章目录 1. 概述2. 变量与函数2.1 流程变量2.2 内置环境变量2.3 Spring、CDI Bean2.4 内置上下文函数…...
详解RFC 793文档-4
3.7 数据通信 一旦连接建立,数据就通过交换数据段进行通信。由于错误(校验和错误)或网络拥塞可能导致数据段丢失,TCP使用重传(超时后)来确保每个段的交付。由于网络或TCP重传,可能会到达重复的段。对于重复段,TCP对段中的SEQ和ACK号执行某些检测,以验证它们的可接受性…...
ubuntu16编译内核源码并替换
文章目录 1.找到和ubuntu内核版本相同的内核源码包2.下载下面三个文件3.相关步骤4.安装编译环境软件参考: 1.找到和ubuntu内核版本相同的内核源码包 4.15.0-112.113 : linux package : Ubuntu (launchpad.net) 2.下载下面三个文件 3.相关步骤 uname -r #查看内核…...
AI 绘画Stable Diffusion 研究(九)sd图生图功能详解-老照片高清修复放大
大家好,我是风雨无阻。 通过前面几篇文章的介绍,相信各位小伙伴,对 Stable Diffusion 这款强大的AI 绘图系统有了全新的认知。我们见识到了借助 Stable Diffusion的文生图功能,利用简单的几个单词,就可以生成完美的图片…...
Linux系统安装Google Chrome
1.进入谷歌浏览器官网 Google Chrome - Download the Fast, Secure Browser from GoogleGet more done with the new Google Chrome. A more simple, secure, and faster web browser than ever, with Google’s smarts built-in. Download now.http://www.google.cn/intl/en_…...
带你了解SpringBoot支持的复杂参数--自定义对象参数-自动封装
😀前言 本篇博文是关于SpringBoot 在响应客户端请求时支持的复杂参数和自定义对象参数,希望您能够喜欢😊 🏠个人主页:晨犀主页 🧑个人简介:大家好,我是晨犀,希望我的文章…...
RWKV:融合RNN与Transformer优势的高效语言模型架构解析与实践
1. 项目概述:一个“非Transformer”的现代语言模型 如果你最近在关注大语言模型(LLM)的开源生态,除了那些基于Transformer架构的“巨无霸”,可能还听说过一个名字有点特别的项目: RWKV 。这个由开发者Bli…...
CefFlashBrowser完全指南:2025年畅玩Flash游戏与存档管理终极方案
CefFlashBrowser完全指南:2025年畅玩Flash游戏与存档管理终极方案 【免费下载链接】CefFlashBrowser Flash浏览器 / Flash Browser 项目地址: https://gitcode.com/gh_mirrors/ce/CefFlashBrowser 在Adobe Flash正式退出历史舞台后,无数经典网页游…...
基于开源项目构建智能音箱自定义电台技能:从原理到部署实践
1. 项目概述:一个为智能音箱打造的“龙虾电台”技能最近在折腾智能家居和语音助手,发现一个挺有意思的开源项目,叫“lobster-radio-skill”。光看名字,你可能会有点摸不着头脑:“龙虾电台”?这跟智能音箱有…...
frp-panel:基于Web的图形化管理面板,让内网穿透配置更高效
1. 项目概述:一个为内网穿透工具打造的管理面板如果你用过 frp,大概率会和我有同样的感受:它的功能强大、性能稳定,是解决内网服务暴露、远程访问等问题的利器。但它的配置方式——编辑一个文本格式的.toml或.ini文件,…...
免费开源AMD Ryzen处理器调试工具:SMUDebugTool终极指南
免费开源AMD Ryzen处理器调试工具:SMUDebugTool终极指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://…...
Oto 核心架构深度解析:Context 与 Player 的设计哲学
Oto 核心架构深度解析:Context 与 Player 的设计哲学 【免费下载链接】oto ♪ A low-level library to play sound on multiple platforms ♪ 项目地址: https://gitcode.com/gh_mirrors/ot/oto Oto 是一个跨平台的低级音频播放库,其核心架构围绕…...
Cream开发者进阶指南:深入理解架构搜索算法
Cream开发者进阶指南:深入理解架构搜索算法 【免费下载链接】Cream This is a collection of our NAS and Vision Transformer work. 项目地址: https://gitcode.com/gh_mirrors/cr/Cream 在深度学习模型设计领域,神经架构搜索(NAS&am…...
挑战 100ms 延迟极限:深度拆解 dograh,构建企业级开源 WebRTC 实时语音智能体平台
发布日期: 2026-05-18标签: #VoiceAgent #WebRTC #语音智能体 #dograh #大模型 #实时音视频一、 引言在 2026 年,随着大模型多模态能力的爆发,传统的“打字输入、文字输出”交互模式正迅速向“纯语音实时对讲”演进。然而…...
【网络编程】UDP协议
目录 协议格式 特点 1.无连接(Connectionless) 2. 不可靠(Unreliable) 3. 面向报文(Message-Oriented) 常见问题 协议格式 特点 1.无连接(Connectionless) 特点:在…...
联想拯救者工具箱:开源替代方案实现笔记本性能优化与硬件控制
联想拯救者工具箱:开源替代方案实现笔记本性能优化与硬件控制 【免费下载链接】LenovoLegionToolkit Lightweight Lenovo Vantage and Hotkeys replacement for Lenovo Legion laptops. 项目地址: https://gitcode.com/gh_mirrors/le/LenovoLegionToolkit 联…...



