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.mzph.cn/diannao/72838.shtml

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

相关文章

HTML 文本格式化

HTML 文本格式化 在构建网页的过程中,文本的格式化是一个至关重要的环节。HTML(HyperText Markup Language)提供了丰富的标签和属性来帮助我们实现各种文本格式化的需求。本文将详细介绍HTML中常见的文本格式化方法,包括字体、颜…

Manus AI Agent 技术解读:架构、机制与竞品对比

目录 1. Manus 是什么? 1.1 研发背景 1.2 技术特点 1.3 工具调用能力 1.4 主要应用场景 2. Manus 一夜爆火的原因何在? 2.1 技术突破带来的震撼 2.2 完整交付的产品体验 2.3 生态与开源策略 3. Manus 与其他 AI Agent 的对比分析 3.1 技术架构…

【学习思维模型】

学习思维模型 一、理解类模型二、记忆类模型三、解决问题类模型四、结构化学习模型五、效率与习惯类模型六、高阶思维模型七、实践建议八、新增学习思维模型**1. 波利亚问题解决四步法****2. 主动回忆(Active Recall)****3. 鱼骨图(因果图/Ishikawa Diagram)****4. MECE原则…

PCIE接口

PCIE接口 PIC接口介绍PIC总线结构PCI总线特点PCI总线的主要性能PIC的历程 PCIE接口介绍PCIe接口总线位宽PCIE速率GT/s和Gbps区别PCIE带宽计算 PCIE架构PCIe体系结构端到端的差分数据传递PCIe总线的层次结构事务层数据链路层物理层PCIe层级结构及功能框图 PCIe链路初始化PCIe链路…

大语言模型(LLM)和嵌入模型的统一调用接口

ChatModelFactory、EmbeddingModelFactory 讲解代码:import os from dotenv import load_dotenv, find_dotenv_ load_dotenv(find_dotenv())from langchain_openai import ChatOpenAI, OpenAIEmbeddings, AzureChatOpenAI, AzureOpenAIEmbeddingsclass ChatModelF…

在Linux开发板中使用.NET实现音频开发

本文将以Linux开发板为基础,使用ALSA音频框架和C#语言,演示如何实现基础的音频录制与播放功能。 1. 背景 音频处理是嵌入式开发中常见的需求,无论是语音交互、环境监测还是多媒体应用都离不开音频模块的支持。在Linux系统中,ALSA…

Windows控制台函数:控制台输出函数WriteConsoleA()

目录 什么是 WriteConsoleA? 函数签名 参数详解 返回值 一个最简单的例子 跟 ReadConsoleA 对比 再试一个有趣的例子 为什么传地址给 lpNumberOfCharsWritten? 注意事项 什么是 WriteConsoleA? WriteConsoleA 是一个 Windows API 函…

【贪心算法】将数组和减半的最小操作数

1.题目解析 2208. 将数组和减半的最少操作次数 - 力扣(LeetCode) 2.讲解算法原理 使用当前数组中最大的数将它减半,,直到数组和减小到一半为止,从而快速达到目的 重点是找到最大数,可以采用大根堆快速达到…

Prompt engineering设计原则

目录 一、清晰具体的prompt1. 使用分隔符2. 结构化的输出(JSON)3. 要求模型检查是否满足条件4. 提供少量案例 二、给模型时间去思考1.指定完成任务所需的步骤2. 指导模型在下结论之前找出一个自己的解法 一、清晰具体的prompt 一个合理的prompt设计决定…

Vue 过滤器 filter(s) 的使用

即过滤器是用来格式化数据的一个函数。过滤器不会修改原始数据,它的作用是过滤数据,就是对数据进行加工处理并返回处理后的数据,比如做一些数据格式上的修改,状态转换等。 过滤器分为两种 组件内的过滤器(组件内有效) 全局过滤器…

ESP8266UDP透传

1. 配置 WiFi 模式 ATCWMODE3 // softAPstation mode 响应 : OK 2. PC 连⼊入 ESP8266 softAP 就是连接wifi 3.查询ESP8266设备的IP地址 ATCIFSR 响应: CIFSR: APIP, "192.168.4.1" CIFSR: APMAC, "1a: fe: 34: a5:8d: c6" CIFSR: STAIP, "192.…

高效运行 QwQ-32B + 错误修复

文章目录 QwQ-32B 错误修复⚙️ 官方推荐设置👍 推荐的 llama.cpp 设置📖 教程:运行和修复的 QwQ-32B1、对于 llama.cpp 及使用 llama.cpp 的引擎:2、下载模型 测试3、测试/评估4、尝试不使用我们的修复方案: &#x…

Jump( 2015-2016 ACM-ICPC Northeastern European Regional Contest (NEERC 15). )

Jump( 2015-2016 ACM-ICPC Northeastern European Regional Contest (NEERC 15). ) 题目大意: 在这个交互式问题中,你需要通过查询系统,逐步找出隐藏的位字符串 S。给定一个偶数 n,表示目标位字符串 S 的长度,你需要通…

Leetcode 刷题记录 06 —— 矩阵

本系列为笔者的 Leetcode 刷题记录,顺序为 Hot 100 题官方顺序,根据标签命名,记录笔者总结的做题思路,附部分代码解释和疑问解答。 目录 01 矩阵置零 方法一:标记数组 方法二:两个标记变量 02 螺旋矩阵…

Java【网络原理】(3)网络编程续

目录 1.前言 2.正文 2.1ServerSocket类 2.2Socket类 2.3Tcp回显服务器 2.3.1TcpEchoServer 2.3.2TcpEchoClient 3.小结 1.前言 哈喽大家好,今天继续进行计算机网络的初阶学习,今天学习的是tcp回显服务器的实现,正文开始 2.正文 在…

C++11新特性 8.final关键字、override关键字

一.final 用法: 1.修饰函数 只能修饰虚函数,阻止子类重写这个函数,final关键字写在函数名的后面。 即该虚函数不可以再被重写。 注意:一般不会在基类中使用,不然没有意义,因为只能修饰虚函数。 2.修饰…

Python实现网络通信:Socket模块与TCP/IP协议全解析

Langchain系列文章目录 01-玩转LangChain:从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块:四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain:从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…

click house扩容方案

《ClickHouse扩容方案解析》 当我们谈论数据库的时候,尤其是像ClickHouse这样专为处理大规模数据分析而设计的列式存储数据库时,扩容是一个不可避免的话题。随着数据量的增长和查询复杂度的提升,原有的硬件资源可能不足以支撑高效的查询响应…

【AGI】智谱开源2025:一场AI技术民主化的革命正在到来

智谱开源2025:一场AI技术民主化的革命正在到来 引言:开源,一场技术平权的革命一、CogView4:中文AI生成的里程碑1. 破解汉字生成的“AI魔咒”2. 开源协议与生态赋能 二、AutoGLM:人机交互的范式跃迁1. 自然语言驱动的跨…

java8中young gc的垃圾回收器选型,您了解嘛

在 Java 8 的 Young GC(新生代垃圾回收)场景中,对于 ToC的场景,即需要尽可能减少垃圾回收停顿时间以满足业务响应要求的场景,以下几种收集器各有特点,通常 Parnew和 G1 young表现较为出色,下面详…