手把手教你搭建K8S集群

news2025/1/11 8:18:35

搭建前提条件:VMare16pro   CentOS-7-x86_64-DVD-2009.iso镜像文件, 远程连接工具Xshell或者MobaXterm

首先创建三台centos7的虚拟机,装虚拟机的话大家可以参照网上资料,非常容易。

使用 kubeadm 安装 Kubernetes 集群

1 系统环境配置 

在各主机节点上均需要配置。 

(1)查看当前系统的内核版本,以及主机名是否符合配置要求管理节点

be68330613424c9d8e3196b105c61e04.png

 工作节点 1:

b6ddb9596d3a4946997b2a40f5a9d055.png

 工作节点 2

5676ef3ab5ca43e9a9d4eb4000154eca.png

    各主机当前系统的内核版本均为 Linux 3.10.0-1160.62.1.el7.x86_64,而且主机名也符合配置要求。 

(2)升级当前系统的内核(不升级内核不支持 ipvlan,有些网络会有问题! )

   1.导入公钥 public key

2f27d9636bc94f7f86814803f8b38d02.png

 2.安装 epel 源

d2ef2a5d57714f60bb9ef0dbf56df8a6.png

3.查看可用版本的内核

 3d7a5b108c574ff49a297a07cf45a9b5.png

yum --disablerepo="*" --enablerepo="elrepo-kernel" list available 
--disablerepo="*":禁用所有 repo 配置文件 
--enablerepo="elrepo-kernel":仅使用仓库名为 elrepo-kernel 的配置文件 kernel-ml 中的 ml 是 main line stable 的缩写,elrepo-kernel 中罗列出来的是最新的稳定主线版本。 
kernel-lt 中的 lt 是 long term support 的缩写,elrepo-kernel 中罗列出来的长期支持版本。 

4. 选择安装 ml 最新版本的内核 

2cfa4e9a3f54462c859902e5cd984477.png

5.查看系统上可以用的内核顺序

 ebeb3164ad6b48e3ade73868841951f1.png

 注意:前面的 0、1、2 等代表编号

6.设置默认启动内核

724820c3e62d419e802c63f01a580fb9.png

7. 重启并查看内核升级情况管理节点:

5b2f1d49ef84435880fa09c94dee6eaa.png

 工作节点 1:

cd00400d65204517a618fd24bd611f7c.png

 工作节点 2:

636b79b2a75048d7a59742486f55b15d.png

(3) 检查是否已关闭防火墙及禁用 SELinux

299007daf80e46baa11b431538b4da4e.png

工作节点1

743337d09a234f18aec50f7a30e7c479.png

 工作节点2

201c8f8b6e2545aba0100a05aa27cd69.png

 各主机系统均已关闭防火墙并禁用 SELinux。

(4)配置主机映射

3f2c2d36ee704b23bd046b9333a99db0.png

 将/etc/hosts 复制到其他主机节点。

492ef323cb984cfbb922c2fc9b31bd4d.png

ping各个主机的隐射host

b3dd42281677469699b7a048a3b2f04b.png

 说明主机映射配置成功!

 (5)配置时间同步

在各主机上进行时钟同步,时钟同步服务器可自行配置,此处选择阿里云的时钟服务器。

管理节点:

80f227eeed104797acd2b4ec2aac7b1e.png

 工作节点 1

c5478aac3c6b48b6b1fd4570a0ea2349.png

 工作节点 2:

18fe33c38191468695087e630a3e126d.png

 检查系统是否已安装 ntpdate 软件包,若未安装,则可以执行“yum -y install ntpdate”命令进行安装。

(6)关闭 swap 分区

在所有节点上均要关闭 swap。

管理节点: 

5c901643527942ca9860e1ed4355d524.png

 工作节点 1:

d2efa393b10c4d10988ae89866dc8b05.png

 工作节点 2:

3872de70b55d4457b8ebaf929fc7b476.png

 (7)配置免密登录

在本地主机上使用 ssh-keygen 产生公钥私钥对。

4620aa1e7f3446d6bff29ef185f85cbc.png

 

执行 ssh-kengen 命令后会在~/.ssh/目录下生成两个文件:id_rsa 和 id_rsa.pub,第一个是私钥文件,第二个是公钥文件。 

使用 ssh-copy-id 命令将公钥复制到远程主机上。 

8d24fd310f224808b1c0b1d1920253e8.png

(8)配置内核参数

开启 IP 转发,并允许 iptables 对 bridge 流量进行处理。 

管理节点:

36c2035c98a247f8b695eb7444367abe.png

 工作节点 1:

6d0e7773a03e43e98af9d3feb16ba7a4.png

 工作节点 2:

caebbd2f096b414b99af6e22a0958ad9.png

 接下来就是配置yum源了

 检查并配置yum源

若下面有的源已配置,则可以略过相应的操作!首先,配置管理节点的yum源:

-1.检查 CentOS 7 本地 YUM 源是否已配置

1734982a36e7473e93d97ec9af75fc26.png

 若未配置 CentOS 7 本地 YUM 源,则需要先行配置。

-2.检查 wget 下载工具是否安装

abf33bca36ec4fabac384e98dd3a81d5.png

 若未安装 wget 工具,则使用 yum -y install wget 命令进行安装。

-3.下载 CentOS 7 阿里源并配置

下载 CentOS 7 阿里源 http://mirrors.aliyun.com/repo/Centos-7.repo,注意区分大小写。

547bb2b7adb441bd8a9619ddafa93884.png

 将 CentOS 7 源文件 CentOS-Base.repo 中的 mirrors.cloud.aliyuncs.com 全部替换为 mirrors.aliyun.com

-4.下载 Docker 阿里源

e10453456c7d48ff8e59791a3e6b07dc.png

 -5.配置 Kubernetes 阿里源

db73da4488804ece91f0b2b6b27c0305.png

 b538c97b4ce74795805356d05721347b.png

 其次,配置各工作节点的 YUM 源:将管理节点的 YUM 源配置文件复制到各工作节点的相应位置

193e61cf482d43c9986614ec714a9392.png

 c678c5ea999149f182077855ae396c73.png

 702e56b9b61740d6a4796890472ac589.png

 fb3d6c4d478949a884dcec28155822f0.png

 (9)检查 Docker 服务是否安装管理节点

0581c2f6914e4594888128b394037ee9.png

 当前系统已安装 Docker 服务,且已配置阿里云加速器。若未安装,则使用“yum -y install docker-ce”命令进行安装。

各个工作节点

c9fc8b05815d495195e05b74300d9492.png

 7d24c7d1edd044c5aadcc84fd6c39707.png

 (10)修改docker文件驱动

管理节点:

9127bfe587d4453fb594a27cbeab4aa2.png

 2056656eddfa4d30965905b165f9620f.png

 各工作节点:

635c0f0dc4e84c38affd3d2ff963de3e.png

 d7bec643de75456989e901be7cf34f72.png

 d7241cb476a94473a2f15ff8c0e4449d.png

 

系统配置结束

 2.安装kubeadm、kubectl、kubelet

(1)查看 kubernetes 版本登录官网(https://v1-23.docs.kubernetes.io/releases/)查看 kubernetes 最近版本。

a47f11e121c04f28b43f3988d91bc64d.png

 这里以 kubernetes 1.23.5 版本为例安装说明。

(2)在所有节点上安装 kubeadm、kubectl、kubelet,并设置开机自动启动 kubelet 服务

-1.在管理节点 master200250229 节点上执行

65dd013941ce4938856c14c523702ec5.png

262aceb30d724477a7e42719f12a5443.png

 -2.在工作节点 node200250229-1 节点上执行

3b61f8a948734036af9d8747e63103f0.png

826a7447a41341f095b48d3dad33c61b.png

4fa24041a12047768af7f5223380b839.png

 -3.在工作节点 node200250229-2 节点上执行

5eeac15f5b6742a3a997f6d6d84fbb4a.png

2e95c42de06a44fb94acb5e396885d2d.png

 (3)kubectl 和 kebuadm 命令 Tab 键补齐 kubectl 和 kebuadm 命令 Tab 键补齐,默认不补齐。管理节点:

1a50475fc623473bbb973c475eece365.png

 退出当前终端生效。各工作节点:

c2beea5c730e4845858aedca80791558.png

e67e3f57829e4bf98aa7b484ac1f84d5.png

 3.Kubernetes 集群初始化

在 master200250229 节点主机上使用 kubeadm 初始化 Kubernetes 集群

543bd45486df47eba20941f5d9abdcd2.png db96911fbdbc4ae3914ca710af6213b6.png

 

kubeadm init --kubernetes-version=1.23.5 \ 
--apiserver-advertise-address=172.16.0.100 \ 
--image-repository registry.aliyuncs.com/google_containers \ 
--pod-network-cidr=10.244.0.0/16 
参数说明如下: 
--kubernetes-version:用于指定 k8s 版本; 
--apiserver-advertise-address:用于指定 kube-apiserver 监听的 ip 地址,就是 master 节点主机 IP 地址; 
--image-repository:指定阿里云镜像仓库地址; 
--service-cidr:用于指定 SVC 的网络范围; 
--pod-network-cidr:用于指定 Pod 的网络范围。其中,10.244.0.0/16 为 Flannel 网络的默认网段。 
将最后面的 kubeadm join 命令内容保存下来,工作节点加入到集群中时需要用到此命令。 

4.节点加入 Kubernetes 集群

将 node200250229-1、node200250229-2 节点主机加入 Kubernetes 集群

ba39cd32686644e38eb501cd6dbb07ef.png

98f82c6252d14aec922f27aa982ce55f.png5 配置访问 Kubernetes 集群 

(1)配置管理节点访问集群

4bbf11d10fbd48639b26ec0b4e4c7783.png

 集群状态为未就绪(NotReady),说明当前集群尚未安装网络插件。

(2)配置工作节点访问集群

e8fe34ed078c44bab8a43e07eeb8d305.png

d35d3638d8ea4b34a3526e7329da1b3b.png

 348bf7f47dec44ae8824242ab7574160.png

 6. 部署 flannel 网络插件

(1)安装 flannel 网络插件

只需要在 master200250229 管理节点上安装网络插件,。

3c3b0987e52c482ba4a117a86d23550f.png

 8c048434f62a4bb98f51c32a9de7b76d.png

 过了一会儿,在各节点上执行“kubectl get nodes”命令查看节点状态。

3bbe8f8961f34f8cbf49838ec1ffbc0f.png

 210db45a3658443d88774a874425b3b1.png

 8a514eaba15c4bc1ae92b587f0efa1b3.png

(2)查看flannel网络信息

 管理节点: 

b1b15968ba5843b0bfafad312ac6ef49.png

 各工作节点:

1412bac7c1a84ae9a2488ebf8eb76df9.png

 1909b855cc4747e2bc2e233c77974a53.png

 

VXLAN 是 Flannel 默认和推荐的模式。当我们使用默认配置安装 Flannel 时,它会为每个节点分配一个

24 位子网,并在每个节点上创建两张虚机网卡:cni0 和 flannel.1。cni0 是一个网桥设备,类似于 docker0,

节点上所有的 Pod 都通过 veth pair 的形式与 cni0 相连。flannel.1 则是一个 VXLAN 类型的设备,充当 VTEP

(VXLAN Tunnel Endpoints,VXLAN 隧道端点)的角色,实现对 VXLAN 报文的封包解包。

(3)查看集群状态

-1查看组件状态

5ebd08b3c04246b0a0641bb0b948a609.png

 -2.查看资源对象

374030e8aee34425907755ac343b724f.png

 03947598a7f34f13a3d12ff6de9fd500.png

 注意:使用 kubectl get pod -n kube-system 命令查看集群状态,可能会出现 Pending、ContainerCreating、CrashLoopBackOff、Error、Init:ImagePullBackOff 等异常信息,原因可能内核版本较低、镜像拉取失败等。

7.部署 Dashboard 管理工具Dashboard 是基于网页的 Kubernetes 用户界面。您可以使用 Dashboard 将容器应用部署到Kubernetes集群中,也可以对容器应用进行排错,还能管理集群本身及其附属资源。您可以使用 Dashboard 获取运行在集群中的应用的概览信息,也可以创建或者修改 Kubernetes 资源(如 Deployment、Job 等等)。例如,您可以对 Deployment 实现弹性伸缩、发起滚动升级、重启 Pod 或者使用向导创建新的应用。 

(1)安装 Dashboard 监控界面仅需在 200250229-master 管理节点上安装 Dashboard。

-1.从官网查找与 kubernetes 对应的 Dashboard 版本,从 https://github.com/kubernetes/dashboard/releases 查找与 kubernetes v1.23.5 对应的 Dashboard 版本。

 f9aaa67947f84695a7201b8456ebf190.png

 -2.下载 Dashboard YAML 文件

b3a2624865a94c35baa073b7794ea4c0.png

 -3.编辑 Dashboard YAML 文件

由于默认的镜像仓库在国外可能无法访问,因此修改 YAML 文件中的镜像地址。

af3c25367d4b46dbb83cce84c126ad7e.png

 -4.拉取 Dashboard 镜像

93458793db7141e3a2c6e14cb9c2b37f.png

 -5.部署 Dashboard

8fe9c15ec6ff40b98d5dbaaf039e376b.png

 369d6f0b59ba454093af62e2d979c71a.png

 4024461f3b7d4c41a4c85d4b3d49e749.png

 -6.配置外网访问

配置对外暴露端口,将 type: ClusterIP 改为 type: NodePort,使外部可以通过 https://NodeIp:NodePort访问 Dashboard。

190170ea256840f8a81eb90b3d1eb962.png

 -7.检查相关服务的运行状态,获取对外暴露端口

4cf2a32edf804bdcb48835c04265d8ba.png

-8. 使用浏览器访问 Dashboard  使用 Firefox 浏览器访问 https://172.16.0.100:30534,进入 Dashboard 登录界面

95a72da517f64c36aaaf33a231a9f9c9.png

-9. 创建服务用户、集群角色绑定

b5614f262c834e4aa620a645c30b2ad1.png

 -10.获取令牌 token

5c0714cc29cd4dcbaef0c53824ddf005.png

-11. 使用 token 认证进行登录复制 token 值,在 Dashboard 登录界面的“输入 token”文本框中粘贴 token 值后,单击“登录”按钮

477ca29e2ce34d678048a0eed2c52ef7.png

                                                 粘贴输入 token 值

在 Dashboard 登录界面粘贴 token 值后,单击“登录”按钮,进入 Kubernetes 主界面

5c4c02722e144f81aa8d070991a44921.png

这是K8S平台搭建成功,

接下来我们部署个nginx看看

 8.部署 nginx 服务验证集群

(1)部署 nginx 服务

c5637e86d3874b07a0f9270d15fbf809.png(2)从任一节点访问 nginx 服务

b18f17bd0f8e4aee852e2057cfc3fed3.png

 

 39c175fad3b041958f40dfeb5a7f495d.png

 f6cd40b0bf844c4a9812e6a5acf004fc.png

打开浏览器看看

 或者在在linux主机上输入curl http://172.22.29.100:31755 curl http://172.22.29.101:31755 http://172.22.29.102:31755看看

好了,k8s平台就搭建好了,能看到这,我就很欣慰了搭建过程有点长。恭喜你!!!

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/19975.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

通关算法题之 ⌈二叉树⌋ 下

填充每个节点的下一个右侧节点指针 116、填充每个节点的下一个右侧节点指针 给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下: struct Node {int val;Node *left;Node *right;Node *next; }填充…

手机短信注册验证与登录功能

文章目录一、前言二、准备工作三、发布短信1、基本测试发布①可-使用测试模板进行调试②测试结果③注意,可能会调试失败,是因为没有余额。进入首页点击头像>进入余额充值;一条大概4分钱④创建SpringBoot项目demo2、可自定义模板&#xff0…

[acwing周赛复盘] 第 78 场周赛20221119

[acwing周赛复盘] 第 78 场周赛20221119 一、本周周赛总结二、4719. 商品种类1. 题目描述2. 思路分析3. 代码实现三、4720. 字符串1. 题目描述2. 思路分析3. 代码实现四、4721. 排队1. 题目描述2. 思路分析3. 代码实现六、参考链接一、本周周赛总结 这周蛮简单的。T2 栈的应用…

Kafka - Kafka应用场景|基础架构|Windows安装|命令行操作

文章目录1. 消息队列的应用场景2. 消息队列的两种模式3. Kafka 的基础架构4. Kafka 的安装5. Kafka 命令行操作1. 主题命令行操作2. 生产者命令行操作3. 消费者命令行操作1. 消息队列的应用场景 传统的消息队列的主要应用场景包括:缓存/消峰、解耦和异步通信。 ①…

Packet Tracer - 配置多区域 OSPFv3

地址分配表 设备 接口 IPv6 地址 OSPF 区域 RA G0/0 2001:DB8:1:A1::1/64 1 G0/1 2001:DB8:1:A2::1/64 1 S0/0/0 2001:DB8:1:AB::2/64 0 本地链路 FE80::A 不适用 RB G0/0 2001:DB8:1:B1::1/64 0 S0/0/0 2001:DB8:1:AB::1/64 0 S0/0/1 2001:DB8:1:BC:…

JVM运行时数据区域之PCRegister和虚拟机栈

运行时数据区域 Java 虚拟机在执行 Java 程序的过程中会把它所管理的内存划分为若干个不同的数据 区域。这些区域有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启 动而一直存在,有些区域则是依赖用户线程的启动和结束而建立…

群晖NAS搭建WebDav服务,并内网穿透实现公网访问

WebDAV是基于HTTP协议的通信协议。适用于有些客户限制于其他协议,要求使用WebDAV协议进行数据传输的,下面是通过WebDAV协议来访问群晖NAS的设置教程。 1. 在群晖套件中心安装WebDav Server套件 点击打开套件中心,并搜索webdav,点…

性能测试-linux-top/vmstat/dstat命令,闭着眼睛也要背出来

目录 Linux系统差异化 Ubuntu安装应用 CentOS安装应用 Linux通用安装,tar.gz包 Linux系统帮助命令 help/man/info Linux系统中树状结构查看文件 Linux系统中文件类型区分与权限 Linux系统中都有哪些文件夹及其作用 Linux性能测试分析-TOP命令(重点) Linu…

NFV关键技术:DPDK技术栈在网络云中的最佳实践

本文篇幅有限,很难用短短几语就勾勒出DPDK的完整轮廓,概括来说,DPDK是一个技术栈,主要用于Intel架构的服务器领域,其主要目的就是提升x86标准服务器的转发性能。因此,本文只重点介绍DPDK平台部分技术在电信…

基于stm32单片机智能温控风扇控制系统Proteus仿真

资料编号:103 下面是相关功能视频演示: 103-基于stm32单片机智能温控风扇控制系统Proteus仿真(源码仿真全套资料)功能介绍:采用stm32单片机、ds18b20温度传感器采集温度,通过判断当前的温度值是否超过预设…

程序员怎样才能写出一篇好的博客或者技术文章?

文章目录来分享下鹅厂多位技术同学关于如何写好技术文章的经验。**1 为什么要写文章****1.1 对作者的好处****1.1.1 复盘学习成果,巩固知识理解****1.1.2 提升思考能力****1.1.3 传播技术知识,积累技术资产****1.1.4 提升表达与总结能力****1.1.5 打造个…

尚医通 (二十五) --------- 医院接口开发

目录一、医院系统模拟接口1. 服务部署2. 操作说明3. 上传接口与回调接口① 业务术语② 安全控制③ 业务接口④ 平台接口⑤ 医院接口二、集成 MongoDB三、添加医院基础类四、上传医院五、参数签名六、图片 Base64 编码七、查询医院接口一、医院系统模拟接口 1. 服务部署 ① 找…

刷题笔记之十二(快到碗里来+跳台阶+变态跳台阶+不用加减乘除做加法+三角形+猴子分桃+反转部分单向链表)

目录 1. 快到碗里来 2. 跳台阶 3. 变态跳台阶 4. ConcurrentHashMap使用lock关键字保证线程安全;Arrays.asList返回值是List接口对象 5. 字符串对象比较相等,使用equals比较内容;使用 比较的是地址 6. 编译命令: javac 源文件名称.java; 运行命令: java 主类名称 要传递的…

第七章第二节:B树和B+树

文章目录教程:1. B树1.1 B树的定义1.2 B树的高度1.3 B树的插入和 删除1.4 B树的删除1.5 总结:2. B树2.1 B树的查找2.2 B树与B树的对比2.3 总结教程: B树: https://www.bilibili.com/video/BV1b7411N798/?p72&share_sourceco…

深入理解MySQL数据库(Innodb存储引擎)

1.BTree 什么是B Tree 1)树中每个结点至多有M棵子树(即至多含有m-1个关键字) 2)若根节点不是终端结点,则至少有两颗子树 3)所有的叶子结点都出现在同一层次上,并且不带信息 什么是BTree …

【毕业设计】37-基于单片机智能楼宇消防监控系统设计(原理图工程+仿真工程+源代码+答辩论文+答辩PPT)

【毕业设计】37-基于单片机智能楼宇消防监控系统设计(原理图工程仿真工程源代码答辩论文答辩PPT) 文章目录【毕业设计】37-基于单片机智能楼宇消防监控系统设计(原理图工程仿真工程源代码答辩论文答辩PPT)资料下载链接任务书设计说…

Redis集群(Cluster)

Redis集群(Cluster) 单台redis容量限制,如何进行扩容?继续加内存、加硬件么?单台redis并发写量太大有性能瓶颈,如何解决?redis3.0中提供了集群可以解决这些问题。 redis集群是对redis的水平扩容,即启动N个…

静态后台管理(9页)

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材,DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 |学生管理系统网页设计 | OA管理系统 | 后台管理模板 | 智能停车系统 | 等网站的设计与制作 | HTML期末大学生网页设计作业,Web大学生网页 H…

C++ Visual Studio 2022 中的改进、行为更改和错误修复

目录 Visual Studio 2022 版本 17.4 中的一致性改进 作用域的基础类型没有固定类型enum 定义中没有固定基础类型的枚举器类型enum Visual Studio 2022 版本 17.3 中的一致性改进 改进了指针之间的修饰符兼容性检查 Visual Studio 2022 版本 17.2 中的一致性改进 未终止的双向…

【分隔结构】定从分离

形式 先行词 其他定语 定语从句先行词 状语 定语从句作主语的先行词 谓语 定语从句 练习一 他们从一部分人来说,是受到了 1998 年才获得的 DNA 证据的启发,这份 DNA 证据,几乎肯定的证明了 Thomas Jefferson 和 他的奴隶 Sally Hemin…