k8s概念及k8s集群部署(Centos7)

Centos7部署k8s集群

部署之前,先简单说下k8s是个啥:

一、k8s简介:

  • k8s,全称:kubernetes,它可以看作是一个分布式系统支撑平台。
  • k8s的作用:
    1、故障自愈:
    k8s这个玩意可以监控容器运行,我们把项目放到容器里。由于一些外部内部原因服务器承受不住压力,如果主节点上的容器突然挂了,k8s立刻会自己将主机上的服务调度到另一个node机器上运行
    2、应用更新:
    更新项目上线时不用中断当前项目的运行。
    3、还有一些自动扩容,缩容的概念就不讲了,我本人也没亲身体会用过,不好说。

二、k8s的全生命周期管理:

在k8s进行管理应用的时候,基本步骤是:
创建集群–>部署应用–>发布应用–>扩展应用–>更新应用。

三、k8s的主要组件,以及它们主要是用来干什么的:

  • etcd:一款开源软件。提供可靠的分布式数据存储服务,用于持久化存储K8s集群的配置和状态

  • apiservice:用户程序(如kubectl)、K8s其它组件之间通信的接口。K8s其它组件之间不直接通信,而是通过API server通信的。这一点在上图的连接中可以体现,例如,只有API server连接了etcd,即其它组件更新K8s集群的状态时,只能通过API server读写etcd中的数据。

  • Scheduler:排程组件,为用户应用的每一可部署组件分配工作结点。

  • controller-manager:执行集群级别的功能,如复制组件、追踪工作结点状态、处理结点失败等。Controller Manager组件是由多个控制器组成的,其中很多控制器是按K8s的资源类型划分的,如Replication Manager(管理ReplicationController 资源),ReplicaSet Controller,PersistentVolume controller。

  • kube-proxy:在应用组件间负载均衡网络流量。

  • kubelet:管理工作结点上的容器。

  • Contriner runtime Docker, rkt等实际运行容器的组件

四、k8s的整个集群运行原理:

  • master主机上的kube-controller-manager是整个集群的控制管理中心,kube-controler-manager中的node controller模块 通过apiservice提供的监听接口,实时监控node机的状态信息。
    当某个node机器宕机,controller-manager就会及时排除故障并自动修复。

  • node节点机上的kubelet进程每隔一段时间周期就会调用一次apiservice接口报告自身状态,apiservice接口接受到这些信息后将节点状态更新到ectd中。kubelet也通过apiservice的监听接口监听pod信息,如果监控到新的pod副本被调度绑定到本节点,则执行pod对应的容器的创建和启动,如果监听到pod对象被删除,则删除本节点对应的pod容器。

五、安装准备:

了解了基本概念之后,我们开始准备安装部署工作:

  • 准备两台服务器:
    192.168.26.227,
    192.168.26.228

    一主一从:
    master机:192.168.26.227
    node机:192.168.26.228

  • 拓扑图:
    在这里插入图片描述
    master主机上192.168.26.277必须要有的组件:

  • etcd  :提供分布式数据存储的数据库吧,用于持久化存储k8s集群的配置和状态

  • kube-apiserver:api service提供了http rest接口,是整个集群的入口,K8s其它组件之间不直接通信,而是通过API server通信的。(只有API server连接了etcd,即其它组件更新K8s集群的状态时,只能通过API server读写etcd中的数据)

  • kube-scheduler:scheduler负责资源的调度

  • kube-controller-manager:整个集群的管理控制中心,此组件里面是由多个控制器组成的,如:Replication Manager(管理ReplicationController 资源),ReplicaSet Controller,PersistentVolume controller。主要作用用来复制组件、追踪工作结点状态、处理失败结点。

node节点机上192.168.26.228必须要有的组件:

  • flannel:好像是用来支持网络通信的吧
  • kube-proxy:用来负载均衡网络流量
  • kubelet:用来管理node节点机上的容器
  • docker:运行项目镜像容器的组件

六、k8s安装步骤:

做好准备工作后,正式进入安装部署:

1、所有机器上执行以下命令,准备安装环境:
(注意是所有机器,主机master,从机node都要安装)

1.1、安装epel-release源

yum -y install epel-release

1.2、所有机器关闭防火墙

systemctl stop firewalldsystemctl disable firewalldsetenforce 0

#查看防火墙状态

firewall-cmd --state

2、现在开始在master主机192.168.26.227上安装kubernetes Master

2.1、使用yum安装etcd、kubernetes-master

yum -y install etcd kubernetes-master

2.2、编辑:vi /etc/etcd/etcd.conf文件,修改结果如下:
在这里插入图片描述
2.3、配置:vi /etc/kubernetes/apiserver文件,配置结果如下:

在这里插入图片描述
2.4、启动etcd、kube-apiserver、kube-controller-manager、kube-scheduler等服务,并设置开机启动:

for SERVICES in etcd kube-apiserver kube-controller-manager kube-scheduler; do systemctl restart $SERVICES;systemctl enable $SERVICES;systemctl status $SERVICES ; done

2.5、在etcd中定义flannel网络

etcdctl mk /atomic.io/network/config '{"Network":"172.17.0.0/16"}'

linux服务器技术
专栏收录该内容
1 篇文章0 订阅
订阅专栏
借鉴博客:https://www.cnblogs.com/xkops/p/6169034.html

此博客里面有每个k8s配置文件的注释:https://blog.csdn.net/qq_35904833/article/details/78190257

啊西吧,啊西吧,根据上面的博客终于安装成功了。妈的,网上大部分博客安装k8s配置写得乱七八槽的,终于找到一篇条理清晰,安装详细的k8s安装博客啦,哈哈哈哈,不容易啊快三个星期了,从狗屁不懂搞这玩意。

下面写一写我自己的安装流程:

一、安装准备:
      准备两台服务器(我用的是CentOS7系统):192.168.26.227,192.168.26.228

一主一从:

master机:192.168.26.227

node机:192.168.26.228

简单说一下k8s:

k8s是个什么玩意?
          可以这样去理解:k8s全称:Kubernetes,它可以看作是一个分布式系统支撑平台。

我们为什么要用k8s集群?
          故障自愈:

k8s这个玩意可以监控容器运行,我们把项目放到容器里。由于一些外部内部原因服务器承受不住压力,如果主节点上的容器突然挂了,k8s立刻会自己将主机上的服务调度到另一个node机器上运行

应用更新:

更新项目上线时不用中断当前项目的运行。

还有一些自动扩容,缩容的概念就不讲了,我本人也没亲身体会用过,不好说。

k8s的全生命周期管理:
      在k8s进行管理应用的时候,基本步骤是:创建集群,部署应用,发布应用,扩展应用,更新应用。

k8s的主要组件,以及它们主要是用来干什么的:
          etcd:一款开源软件。提供可靠的分布式数据存储服务,用于持久化存储K8s集群的配置和状态

apiservice:用户程序(如kubectl)、K8s其它组件之间通信的接口。K8s其它组件之间不直接通信,而是通过API server通信的。这一点在上图的连接中可以体现,例如,只有API server连接了etcd,即其它组件更新K8s集群的状态时,只能通过API server读写etcd中的数据。

Scheduler:排程组件,为用户应用的每一可部署组件分配工作结点。

controller-manager:执行集群级别的功能,如复制组件、追踪工作结点状态、处理结点失败等。Controller Manager组件是由多个控制器组成的,其中很多控制器是按K8s的资源类型划分的,如Replication Manager(管理ReplicationController 资源),ReplicaSet Controller,PersistentVolume controller。

kube-proxy:在应用组件间负载均衡网络流量。

kubelet:管理工作结点上的容器。

Contriner runtime Docker, rkt等实际运行容器的组件

上面都是些k8s集群所要用到的组件,具体这些组件都是用来干嘛的呢,我们来好好分析分析。

master主机上192.168.26.277必须要有的组件:

etcd  :提供分布式数据存储的数据库吧,用于持久化存储k8s集群的配置和状态

kube-apiserver:api service提供了http rest接口,是整个集群的入口,K8s其它组件之间不直接通信,而是通过API server通信的。(只有API server连接了etcd,即其它组件更新K8s集群的状态时,只能通过API server读写etcd中的数据)

kube-scheduler:scheduler负责资源的调度

kube-controller-manager:整个集群的管理控制中心,此组件里面是由多个控制器组成的,如:Replication Manager(管理ReplicationController 资源),ReplicaSet Controller,PersistentVolume controller。主要作用用来复制组件、追踪工作结点状态、处理失败结点

node节点机上192.168.26.228必须要有的组件:

flannel:好像是用来支持网络通信的吧

kube-proxy:用来负载均衡网络流量

kubelet:用来管理node节点机上的容器

docker:运行项目镜像容器的组件

2018年11月30日:

今天又看了一些博客,多了一些认识和理解,如下:

k8s的整个集群运行原理:【重点核心知识很重要】
          master主机上的kube-controller-manager是整个集群的控制管理中心,kube-controler-manager中的node controller模块 通过apiservice提供的监听接口,实时监控node机的状态信息。

当某个node机器宕机,controller-manager就会及时排除故障并自动修复。

node节点机上的kubelet进程每隔一段时间周期就会调用一次apiservice接口报告自身状态,apiservice接口接受到这些信息后将节点状态更新到ectd中。kubelet也通过apiservice的监听接口监听pod信息,如果监控到新的pod副本被调度绑定到本节点,则执行pod对应的容器的创建和启动,如果监听到pod对象被删除,则删除本节点对应的pod容器。(目前对pod、容器、镜像这些概念还不是很清晰,无法在大脑中构建这都是些什么玩意,先做个笔记记着吧)

刚才在别人博客上看到一个图很有意思,我们总监叫我学了ELK日志系统,jenkins自动构建工具,最近在搞k8s,还差消息中间件没学,然后就看到了这个图,顿时整个公司要搭建的分布式服务器环境一目了然,由于我不是架构师并不知道公司整个服务器分布式系统是怎样的,现在才恍然大悟,原来如此,原来如此,原来如此呀。

原图:
              原图的博客地址:https://blog.csdn.net/zyc88888/article/details/79281954

我做了笔记的图:

》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

下面废话不多说,来进行安装步骤:

二、k8s安装步骤:
        1、所有机器上执行以下命令,准备安装环境:(注意是所有机器,主机master,从机node都要安装)

1.1、安装epel-release源

yum -y install epel-release
          1.2、所有机器关闭防火墙

systemctl stop firewalld

systemctl disable firewalld

setenforce 0

#查看防火墙状态
firewall-cmd --state

2、现在开始master主机上192.168.26.227安装kubernetes Master

2.1、使用yum安装etcd、kubernetes-master

yum -y install etcd kubernetes-master

2.2、编辑:vi /etc/etcd/etcd.conf文件,修改结果如下:

2.3、配置:vi /etc/kubernetes/apiserver文件,配置结果如下:

2.4、启动etcd、kube-apiserver、kube-controller-manager、kube-scheduler等服务,并设置开机启动。

for SERVICES in etcd kube-apiserver kube-controller-manager kube-scheduler; do systemctl restart $SERVICES;systemctl enable $SERVICES;systemctl status $SERVICES ; done

2.5、在etcd中定义flannel网络

etcdctl mk /atomic.io/network/config ‘{“Network”:“172.17.0.0/16”}’

》》》》》》》》》》》》》》》》》》》》》》》》》到这里,master主机上的配置安装就算暂时告一段落了》》》》》》》》》》》》》》》》》》》》》》》》

3、接下来弄node从机上的配置安装什么的

3.1、在node机上192.168.26.228安装kubernetes Node和flannel组件应用

yum -y install flannel kubernetes-node

3.2、为flannel网络指定etcd服务,
修改/etc/sysconfig/flanneld文件,配置结果如下图:

在这里插入图片描述

3.3、修改:vi /etc/kubernetes/config文件,配置结果如下图:

在这里插入图片描述
3.4、修改node机的kubelet配置文件/etc/kubernetes/kubelet

在这里插入图片描述

3.5、node节点机上启动kube-proxy,kubelet,docker,flanneld等服务,并设置开机启动。

for SERVICES in kube-proxy kubelet docker flanneld;do systemctl restart $SERVICES;systemctl enable $SERVICES;systemctl status $SERVICES; done

》》》》》》以上所有master主机,node节点机上的配置就完成了,接下来看看k8s集群是否搭建起来了》》》》》》》》》》》》》》》》》》》

在master主机上192.168.26.227执行如下命令,查看运行的node节点机器:

kubectl get nodes

展示如下图结果,说明成功了,结果图如下:

在这里插入图片描述

以上就是centos7安装部署k8s的基本步骤,希望能够帮助到你。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

牵引线标注:让地图信息更清晰的ArcGIS Pro技巧

在地图制作的世界里,标注的清晰度直接决定了地图的可读性和实用性。 今天,就让我们一同探索如何在ArcGIS Pro中巧妙地实现牵引线标注,为地图信息的呈现增添一份专业与清晰。 一、引言:牵引线标注的魅力 在地图制作中&#xff0…

VBA 数据库同一表的当前行与其他行的主键重复判断实现方案

目的,判断是否主键重复,不重复则登录新数据,重复则不登录。 定义类型: DataRecord   tableName 表名   rowNumber 行号   columnName 列名   data 数据 想要实现的代码逻辑如下: 模拟数据库的登录过程。假设…

Qt常用控件之树形QTreeWidget

树形QTreeWidget QTreeWidget 表示一个树形控件,里面的每一个元素,都是一个 QTreeWidgetItem 类型的对象,每个 QTreeWidgetItem 都可以包含多个文本和图标,每个文本或图标为一个列。 需要注意的是, QTreeWidget 向用…

java通用自研接口限流组件

某业务中需要对后端接口进行限流,我们可以直接引入阿里巴巴的Sentinel快速实现,但是某企业中出于安全考虑,需要部门自己研发一套,可以采用RedisLua脚本AOP反射自定义注解来实现 思路来源于链接 项目结构: 启动类&…

小程序事件系统 —— 33 事件传参 - data-*自定义数据

事件传参:在触发事件时,将一些数据作为参数传递给事件处理函数的过程,就是事件传参; 在微信小程序中,我们经常会在组件上添加一些自定义数据,然后在事件处理函数中获取这些自定义数据,从而完成…

【2025小黑课堂】计算机二级WPS精选系列20G内容(可下载:真题+预测卷+软件+选择题)

2025年3月全国计算机等级考试即将于3月29日至31日举行。为了帮助广大考生高效备考,小编特意收集并整理了最新版(备考2025年3月)的小黑课堂计算机二级WPS 电脑题库软件,助力考生在考试中游刃有余,轻松通关! …

你会测量管道液体流阻吗?西-魏斯巴赫方程(Darcy-Weisbach Equation)、Colebrook-White 方程帮你

测量管道液体流阻需要测量以下关键量: 需要测量的量 压力差(ΔP):管道入口和出口之间的压力差,通常通过压力传感器或差压计测量。流量(Q):流经管道的液体体积流量,可通…

行为模式---中介者模式

概念 中介者模式是一种行为模式, 他的核心思想是通过引入一个中介者对象,将多个对象之间的复杂交互逻辑统一管理。每个对象只需要与中介者通信,而不需要直接与其他对象交互,从而降低系统的耦合度。 适用场景 对象之间交互复杂&…

可狱可囚的爬虫系列课程 18:成都在售新房数据爬虫(lxml 模块)实战

上一篇文章中带大家学习了 lxml 模块以及 XPath 语法,本文针对某网新房数据编写爬虫进行实战。 一、网页信息的获取 抓取地址:https://cd.fang.lianjia.com/loupan/ import requestsLink https://cd.fang.lianjia.com/loupan/ Headers {User-Agent: …

行为模式---迭代器模式

概念 迭代器模式是设计模式的行为模式,它的主要设计思想是提供一个可以操作聚合对象(容器或者复杂数据类型)表示(迭代器类)。通过迭代器类去访问操作聚合对象可以隐藏内部表示,也可以使客户端可以统一处理…

自定义组件渲染search框

1创建search分支 创建自定义组件 2.渲染my_search的基本结构 3.封装自定义属性和click事件 通过自定义属性增强组件的通用性 4.封装click事件 5.导航跳转 6.吸顶效果 7自动获得焦点与防抖效果 搜索页面搜索框基本结构 8实现搜索框自动获取焦点功能 9处理防抖效果

大语言模型学习--向量数据库基础知识

1.向量 向量是多维数据空间中的一个坐标点。 向量类型 图像向量 文本向量 语音向量 Embedding 非结构化数据转换为向量过程 通过深度学习训练,将真实世界离散数据,投影到高维数据空间上,通过数据在空间中间的距离体现真实世界的相似度 V…

JVM详解

目录 一.JVM的概念 1. 什么是JVM? 2.JVM用来干什么? 二JVM运行流程 JVM执⾏流程 2.1类加载机制 2.2类加载机制带来了哪些好处? 2.3类加载的过程是什么? 2.3.1加载 2.3.2验证 2.3.3准备阶段 2.3.4解析阶段 符号引⽤ 直接引⽤ 2.3.5初始化阶段 2.4类加载器 什么…

【JavaScript】08-作用域+箭头函数+解构赋值

本文以后的文章主要是介绍ES6语法。 目录 1.作用域 1.1 局部作用域 1.1.1 函数作用域 1.1.2 块作用域 1.2 全局作用域 1.3 作用域链 1.4 垃圾回收机制GC 1.4.1 内存生命周期 1.4.2 注意 1.4.3 内存泄漏 1.5 闭包 1.5.1 概念 1.5.2 闭包的作用 1.5.3 闭包应用 1.…

Mysql中的常用函数

1、datediff(date1,date2) date1减去date2,返回两个日期之间的天数。 SELECT DATEDIFF(2008-11-30,2008-11-29) AS DiffDate -- 返回1 SELECT DATEDIFF(2008-11-29,2008-11-30) AS DiffDate -- 返回-1 2、char_length(s) 返回字符串 s 的字符数 3、round(x,d)…

百度移动生态事业群聚焦UGC战略,贴吧迎新调整

易采游戏网3月8日独家消息:近日据内部消息人士透露,百度移动生态事业群正积极将用户生成内容(UGC)作为新的战略重点。此举标志着百度对UGC价值的重视与重塑,同时也预示着其旗下重要平台——百度贴吧将迎来一轮重大的调…

开源项目介绍:Native-LLM-for-Android

项目地址:Native-LLM-for-Android 创作活动时间:2025年 支持在 Android 设备上运行大型语言模型 (LLM) ,具体支持的模型包括: DeepSeek-R1-Distill-Qwen: 1.5B Qwen2.5-Instruct: 0.5B, 1.5B Qwen2/2.5VL:…

STM32标准库代码详解之GPIO

GPIO的初始化代码如下: /*开启时钟*/ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //开启GPIOA的时钟,使用外设必须开启/*GPIO初始化*/ GPIO_InitTypeDef GPIO_InitStructure; //定义结构体变量 GPIO_InitStructure.GPIO_Mode GPIO_Mo…

实现Django和Transformers 构建智能客服大模型(模拟订单系统)

一、环境安装准备 #git拉取 bert-base-chinese 文件#创建 虚拟运行环境python -m venv myicrplatenv#刷新source myicrplatenv/bin/activate#python Django 集成nacospip install nacos-sdk-python#安装 Djangopip3 install Django5.1#安装 pymysql settings.py 里面需要 # 强制…

Apache Kafka单节点极速部署指南:10分钟搭建开发单节点环境

Apache Kafka单节点极速部署指南:10分钟搭建开发单节点环境 Kafka简介: Apache Kafka是由LinkedIn开发并捐赠给Apache基金会的分布式流处理平台,现已成为实时数据管道和流应用领域的行业标准。它基于高吞吐、低延迟的设计理念,能够…