在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 在响应客户端请求时支持的复杂参数和自定义对象参数,希望您能够喜欢😊 🏠个人主页:晨犀主页 🧑个人简介:大家好,我是晨犀,希望我的文章…...
Java AI推理服务上线即崩?JVM GC日志暴露真相:Metaspace暴涨470%、Direct Memory泄漏12.6GB——5行代码精准修复方案(含Arthas实时监控脚本)
第一章:Java AI推理服务集成概述在现代企业级AI应用架构中,Java凭借其稳定性、丰富的生态和成熟的微服务支持能力,正成为部署AI推理服务的重要后端语言。与Python主导的模型训练场景不同,Java更常用于高并发、低延迟、强事务保障的…...
Hi3559平台ISP调试实战:从参数配置到画质优化
1. Hi3559平台ISP基础概念与工作原理 第一次接触Hi3559平台的ISP模块时,我完全被各种专业术语搞晕了。后来在调试车载摄像头项目时才发现,理解ISP的工作原理对画质优化有多重要。简单来说,ISP就像是我们手机里的美颜功能,只不过它…...
从LED灯变化理解计算机移位运算:手把手教你用实验箱验证带进位左移
从LED灯变化理解计算机移位运算:手把手教你用实验箱验证带进位左移 在计算机组成原理的学习中,移位运算是一个看似简单却蕴含深度的概念。当我们面对抽象的二进制数字在寄存器中"移动"时,往往难以形成直观理解。而通过实验箱上的L…...
Qwen3-1.7B推理模式切换体验:思考模式与非思考模式效果对比
Qwen3-1.7B推理模式切换体验:思考模式与非思考模式效果对比 1. 引言:双模式推理的创新价值 在边缘计算和轻量化AI模型快速发展的今天,Qwen3-1.7B通过独特的动态双模式架构,为用户提供了灵活的推理选择。这款17亿参数的轻量级大语…...
手把手教你用Python实现熵权PCA:从数据清洗到可视化,一个案例全讲透
用Python实战熵权PCA:电商商品竞争力分析全流程解析 在电商平台的海量商品中,如何快速识别出真正具有竞争力的产品?传统的人工筛选方式不仅效率低下,还容易受到主观偏见的影响。本文将带你用Python实现一个完整的熵权PCA分析流程&…...
TinyCheck开发指南:从源码结构到核心类设计,理解网络安全检测平台架构
TinyCheck开发指南:从源码结构到核心类设计,理解网络安全检测平台架构 【免费下载链接】TinyCheck TinyCheck allows you to easily capture network communications from a smartphone or any device which can be associated to a Wi-Fi access point …...
【实用工具教程专栏】GitHub Actions自动化工作流入门(基础篇)
引言 在现代软件开发中,持续集成与持续部署(CI/CD)已成为提升开发效率、保证代码质量的核心实践。GitHub Actions作为GitHub官方推出的自动化工作流平台,以其原生集成、灵活配置、丰富生态等特点,成为开发者构建自动化…...
保姆级避坑指南:在Windows上用VirtualBox 6.0.24跑Ubuntu,从开机报错到完美显示的完整流程
从开机报错到完美显示:VirtualBox 6.0.24运行Ubuntu全流程实战手册 当你第一次在Windows上用VirtualBox启动Ubuntu虚拟机时,那个刺眼的报错提示可能会让你措手不及。别担心,这几乎是每个虚拟化新手都会经历的"成人礼"。本文将带你完…...
看完就会:高效论文写作全流程AI论文平台推荐(2026 最新)
论文写作全流程可拆解为文献调研→选题/开题→大纲/初稿→文献综述→降重/去AI味→润色/格式→查重/投稿七大环节,以下2026年AI论文平台按环节精准匹配,兼顾中文适配、降重能力、去AI痕迹、学术合规四大核心需求,覆盖免费/付费、通用/垂直场景…...
Minecraft 1.12.2 彩色渐变字体模组:打造个性化聊天与物品命名
1. RGB Chat模组:让你的Minecraft文字绚丽多彩 还在用单调的白色文字聊天吗?RGB Chat模组彻底改变了Minecraft 1.12.2版本的文字显示方式。这个轻量级模组只有几百KB大小,却能给你的游戏体验带来质的飞跃。我第一次在服务器里看到彩色渐变文字…...



