运维 kubernetes(k8s)基础学习

一、容器相关
1、发展历程:主机–虚拟机–容器
主机类似别墅的概念,一个地基上盖的房子只属于一个人家,很多房子会空出来,资源比较空闲浪费。
虚拟机类似楼房,一个地基上盖的楼房住着很多人家,相对主机模式提升了资源利用率。
容器类似租房的公寓,一个地基上盖的楼房,每一个房间属于一个人,相比虚拟机进一步提升了资源利用率。

2、虚拟机和容器的区别:
一个主机上可以有多个虚拟机,虚拟机部署需要借助主机上的Hypervisor(比如:VM软件)实现。每一个虚拟机包含(应用app+依赖库+操作系统)。
一个主机上可以部署多个容器服务,容器服务依赖宿主机上安装Docker。每一个容器服务包含(应用app+依赖库)。
相对而言,容器的空间更省,性能更高。
在这里插入图片描述

3、容器概念:
为了降低虚拟机造成的物理主机资源浪费,提高物理主机的资源利用率,并能够提供像虚拟机一样良好的应用程序隔离运行环境,人们把这种轻量级的虚拟机,称为“容器”。

4、容器管理工具:
容器管理工具类似于虚拟机管理工具,主要用于容器的创建、启动、关闭、删除等。
容器管理工具有:
docker公司的docker
国内阿里公司的 Pouch
LXC、LXD、RKT等等

5、容器编排工具:
容器管理工具可以完成容器的基础管理,对于完成企业中更加复杂的应用部署,如需要对多应用的系统进行部署时,就需要更加复杂的工具来完成对容器运行应用的编排,这就是我们所说的容器编排部署工具。
概括:
Docker是容器管理工具,可以实现简单的项目部署。
Kubernetes是容器编排工具,可以实现更加复杂的应用部署。

6、常见容器编排工具:
(1)、docker 三剑客
–docker machine(部署和管理容器主机)
Docker Machine is a tool that lets you install Docker Engine on virtual hosts, and manage the hosts with docker-machine commands.
–docker compose(通过yaml,快速部署多个应用)
Compose is a tool for defining and running multicontainer Docker applications. With Compose, you use a YAML file to configure your application’s services. Then, with a single command, you create and start all the services from your configuration.
–docker swarm (容器编排工具,管理docker集群)
Docker Swarm is native clustering for Docker.
(2)、mesos + marathon (分布式管理主机)
mesos主要作用是在分布式计算过程中,对计算机资源进行管理和分配。是基于Mesos的私有PaaS,它实现了Mesos的Framework。Marathon实现了服务发现和负载平衡、
为部署提供REST API服务、授权和SSL、配置约束等功能。Marathon支持通过Shell命令和Docker部署应用。 提供Web界面、支持cpu/mem、实例数等参数设置,支持单应用的Scale,但不支持复杂的集群定义。Mesos和Marathon的关系 如果将Mesos类比为操作系统的内核,负责资源调度。则Marathon可以类比为服务管理系统,比如init,systemd或upstart等系统,用来管理应用的状态信息。Marathon将应用程序部署为长时间运行的Mesos任务。
(3)、kubernetes
Kubernetes (K8s) is an open-source system for automating deployment, scaling, and management of containerized applications. 主要用于管理云平台中多个主机上的容器化的应用, Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),提供了应用部署,规划,更新,维护的一种机制。

二、Kubernetes
1、官网:
https://kubernetes.io/

2、开源托管平台:
https://github.com/kubernetes/

3、概念:
Kubernetes是一个轻便的和可扩展的开源平台,用于管理容器化应用和服务。通过Kubernetes能够进行应用的自动化部署和扩缩容。在Kubernetes中,会将组成应用的容器组合成一个逻辑单元以更易管理和发现。

4、功能:
(1)、自动装箱
基于容器对应用运行环境的资源配置要求自动部署应用容器
(2)、自我修复(自愈能力)
–当容器失败时,会对容器进行重启
–当所部署的Node节点有问题时,会对容器进行重新部署和重新调度
–当容器未通过监控检查时,会关闭此容器
–直到容器正常运行时,才会对外提供服务
(3)、水平扩展
通过简单的命令、用户UI界面或基于CPU等资源使用情况,对应用容器进行规模扩大或规模剪裁
(4)、服务发现
用户不需要使用额外的服务发现机制,就能够基于Kubernetes自身能力实现服务发现和负载均衡
(5)、滚动更新
可以根据应用的变化,对应用容器运行的应用,进行一次性或批量式更新
(6)、版本回退
可以根据应用部署情况,对应用容器运行的应用,进行历史版本即时回退
(7)密钥和配置管理
在不需要重新构建镜像的情况下,可以部署和更新密钥和应用配置,类似热部署。
(8)、存储编排
–自动实现存储系统挂载及应用,特别对有状态应用实现数据持久化非常重要
–存储系统可以来自于本地目录、网络存储(NFS、Gluster、Ceph、Cinder等)、公共云存储服务等

5、对node和pod的支持:
Node(节点)数支持
早期版本管理100台
现版本可以管理2000台
pod管理支持
早期版本管理1000个
现版本管理150000个

三、k8s架构
1、应用部署架构分类
(1)、无中心节点架构(该架构中,所有的节点都是平等关系)
GlusterFS
(2)、有中心节点架构(该架构中,存在核心节点负责管理和调度其他节点)
HDFS
K8S

2、k8s架构:
(1)、Master Node
k8s集群控制节点,对集群进行调度管理,接受集群外用户去集群操作请求;
Master Node由API Server、Scheduler、Cluster State Store(ETCD数据库)和Controller Manger Server所组成;
(2)、Worker Node集群工作节点,运行用户业务应用容器;
Worker Node包含kubelet、kube proxy和Container Runtime;
在这里插入图片描述
3、运行流程:
K8s分为两个大部分,master节点和worker节点
用户通过命令或者界面操作调用到matser节点的api service。Api service会根据请求的类型和业务去调度相应的worker进行工作,此外包括定时任务可以和apiservice通信,数据持久保存等也是通过apiserver实现。
在这里插入图片描述
四、集群部署
1、部署方式
(1)、使用二进制源码包部署(困难,复杂,不推荐)
(2)、使用kubeadm部署(推荐)

2、具体部署过程相对还是挺麻烦的,这里就略过了,最终结果为1个master节点,2个worker节点
注意:生产环境为了保证高可用,matser节点需要部署集群,1个节点肯定不够用。

五、Kubectl客户端
1、概述
在部署完成k8s集群后,我们需要通过一系列的命令来管理k8s集群。kubectl是一个管理k8s集群的客户端。可以通过命令行工具来使用k8s集群。

2、查看是否安装
rpm -qa | grep kubectl
在这里插入图片描述
如果没有安装的话,说明前面部署的集群还是不完善的,自己通过yum intsall的方式网上找一下部署吧

3、常用命令
在这里插入图片描述
在这里插入图片描述

4、使用实例
(1)、查看k8s集群的节点node(机器)信息和pod信息
pods是归属在指定的命名空间中的,可以指定-n 查看指定命名空间的pod信息
在这里插入图片描述

六、yaml
1、格式
格式和springboot的yaml配置文件格式一致

2、作用
通过yaml文件配置部署信息,可以快速部署应用,namespace,service等,可以大大加快部署效率

3、使用实例
语法还是挺多的,套路的方式比较深,需要的时候建议直接网上百度找一个比较好,没必要背下来那么多东西。
(1)、创建一个namespace
在这里插入图片描述
(2)、创建一个pod
在这里插入图片描述

七、namespace
1、概述
通常开发会有很多项目,也会有很多环境(开发,测试,预生产环境)等,当机器足够的话,可以在不同的机器进行部署不同的项目已经环境,但是如果机器不足的话,可以使用k8s集群的命名空间(namespace)来实现开发测试环境的隔离。

2、作用
在多租户的情况下,实现资源隔离,可以对每一个命名空间做资源分配,不同命名空间下的资源互相隔离

3、常用指令
(1)、查看命名空间
在这里插入图片描述
(2)、创建命名空间
命令行方式
在这里插入图片描述
yaml方式创建
编写yaml文件,执行yaml文件
在这里插入图片描述
(3)、删除命名空间
命令行方式
在这里插入图片描述
通过yaml方式删除命名空间(yaml文件和创建用同一个文件)
在这里插入图片描述

八、pod
1、概述:
pod是k8s集群的最小运行单元,是容器的封装。
可以理解pod就是一个容器的壳子,docker部署的容器服务是一粒花生米,pod是容器外部的花生壳。pod包裹着docker部署的容器服务。

2、使用示例
(1)、查看pod
在这里插入图片描述

在这里插入图片描述
(2)、创建pod
编写yaml文件,执行yaml文件创建
在这里插入图片描述
在这里插入图片描述
(3)、删除pod
命令行方式
在这里插入图片描述
yaml方式删除(指定和创建相同的yaml文件)
在这里插入图片描述

九、controller
1、概述:
controller,控制器,用于对应用资源对象的监控,可以创建应用,删除应用等,类似docker run运行容器服务。当pod出现问题时,会把pod重新拉起,以达到用户期望的状态(实现高可用)

2、常见的控制器
通常仅使用Deployment
在这里插入图片描述
3、deployment控制器
据有上线部署、滚动升级、创建副本、回滚到之前某一版本等功能;deployment包含replicaSet,除非需要自定义升级功能或者根本不需要升级pod,否则还是建议使用deployment而不是直接使用ReplicaSet。

4、使用实例
(1)、通过deployment创建应用
–image-pull-policy-IfNotPresent 镜像拉取策略,没有时拉取,有直接使用
–replicas=2 部署两个副本,即运行两个pod示例
在这里插入图片描述
(2)、查看deployment应用
在这里插入图片描述
查看pod,可以看到刚才运行的应用存在两个pod
在这里插入图片描述
(3)、通过yaml文件创建deployment应用
在这里插入图片描述
在这里插入图片描述
(4)、删除应用
命令行:
在这里插入图片描述
通过yaml文件删除应用(指定创建的yaml文件)
在这里插入图片描述
十、service
1、概述
Service只是一个转发规则,如:餐厅服务员概念。顾客去餐厅吃饭,用户进行点餐和付款操作,实际接收菜单和收款的人是大厨和老板。服务员在中间仅做信息转发,并不是真正工作的节点。

2、作用
通过service为pod客户端提供访问pod的方法,service通过pod标签与pod进行关联
在这里插入图片描述
如上图:
每一个node(宿主机)上有很多node服务,每一个pod服务有自己的ip(小圈)和service(大圈)。Pod重启后ip会发生变化(如:不一样顾客),但是service的ip基本很固定(如:服务员很少变动)。虽然pod的ip改变了,但是定义的标签不变,只要service关联pod的标签,即使pod的ip改变了,还是可以通过service找到对应的pod,从而对pod进行操作。

3、service类型
在这里插入图片描述
集群是一组相同的服务节点,完成共同的任务。如多个orderService服务一起成为一个集群。

4、service参数
在这里插入图片描述
5、使用示例
(1)、创建service
分2步,先创建应用,在创建service和应用(应用部署在pod中)进行关联
命令方式:
创建应用(deployment)
在这里插入图片描述
创建service
expose 指定应用的类型和名称
–type指定service类型
–target-port 指定pod服务的端口
–port指定service的端口
通过配置两个端口,实现service的端口和pod端口的绑定关系
在这里插入图片描述
(2)、查看service
在这里插入图片描述
(3)、通过yaml创建service
也是两部,可以放到一个yaml文件中,通过—作为分隔
创建应用
在这里插入图片描述
创建service
在这里插入图片描述
执行yaml文件,同时创建应用和service
在这里插入图片描述
(4)、通过service访问pod
在这里插入图片描述
k8s会自动负载均衡
在这里插入图片描述
(5)、查看端点,可以看到应用和服务的ip关系
在这里插入图片描述

(6)、分配的端口为外部端口,即yaml文件配置service的类型不是ClusterIP,而是NodePort,还需要指定一下宿主机IP
在这里插入图片描述
创建后的service会包含外部宿主机的端口(此时可以通过访问宿主机的30278端口,访问pod的服务)
在这里插入图片描述
在这里插入图片描述
(7)、删除service
可以使用命令行,也可以使用yaml文件方式
在这里插入图片描述

学海无涯苦作舟!!!

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

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

相关文章

微信小程序的开发

1.了解项目的基本组成结构 pages 用来存放所有小程序的页面 utils 用来存放工具性质的模块(例如:格式化时间的自定义模块) app.js 小程序项目的入口文件 app.json 小程序项目的全局配置文件 app.wxss 小程序项目的全局样式文件 project.config.json 项目的配置文件 sitem…

Docker基础学习(5.Docker镜像命令)

⭐ 作者简介:码上言 ⭐ 代表教程:Spring Boot vue-element 开发个人博客项目实战教程 ⭐专栏内容:个人博客系统 ⭐我的文档网站:http://xyhwh-nav.cn/ ⭐微信公众号:码上言 文章目录 Docker run流程镜像是什么&a…

通用视觉多模态大模型 一统理解/生成/分割/编辑

这是一款通用视觉多模态大模型,支持从视觉理解到视觉生成、从低层次到高层次的一系列视觉任务,解决了困扰大语言模型产业已久的图像/视频模型割裂问题,提供了一个全面统一静态图像与动态视频内容的理解、生成、分割、编辑等任务的像素级通用视…

C++必修:类与对象(一)

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:C学习 贝蒂的主页:Betty’s blog 1. 面向过程与面向对象 1.1. 面向过程 我们之前学习的C语言就是一种面向过程的语…

【网络通信】初探网络层次结构(OSI七层网络模型)

随着信息技术的飞速发展,网络通信已经成为现代社会不可或缺的一部分。网络通信的实现离不开网络协议栈的支持,而网络协议栈则是由多个层次组成的。这些层次各自承担着不同的任务,共同构成了网络通信的基石。本文将对网络通信中的各类层进行详…

Swift - 函数

文章目录 Swift - 函数1. 函数的定义2. 隐式返回(Implicit Return)3. 返回元组:实现多返回值4. 函数的文档注释5. 参数标签(Argument Label)6. 默认参数值(Default Parameter Value)7. 可变参数(Variadic P…

LM2576D2TR4-5G 3.0安15伏降压开关稳压器 PDF中文资料_参数_引脚图

LM2576D2TR4-5G 规格信息: 制造商:ON Semiconductor 产品种类:开关稳压器 RoHS:是 装置风格:SMD/SMT 封装 / 箱体:TO-263-5 输出电压:5 V 输出电流:3 A 输出端数量:1 Output 最大输入电压:45 V 拓扑结构:Buck 最小输入电压:7 V 开关频率:52 kHz 最小工作…

seq2seq架构略解

用于序列翻译任务&#xff08;下图来自d2l&#xff09; 训练时输入输出格式&#xff1a; 若数据集为{ <(a1,a2,a3,a4,a5),(b1,b2,b3,b4,b5)> }&#xff08;AB语言对应的句子组&#xff09; 输入 A语言的单词序列结束符&#xff08;a1,a2,a3,a4,a5,<eos>&#xf…

Unity类银河恶魔城学习记录14-5 p152 Lost currency save and enemy‘s currency drop

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释&#xff0c;可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili LostCurrencyController.cs using System.Collections; using System.Colle…

【STM32+HAL】三轴按键PS2摇杆

一、准备工作&#xff1a; 有关CUBEMX的初始化配置&#xff0c;参见我的另一篇blog&#xff1a;【STM32HAL】CUBEMX初始化配置 有关定时器触发ADC模式配置&#xff0c;详见【STM32HAL】ADC采集波形实现 二、所用工具&#xff1a; 1、芯片&#xff1a; STM32F407VET6 2、CUBE…

通义灵码-IDEA的使用教程

通义灵码-IDEA的使用教程 1、通义灵码是什么&#xff1f; 通义灵码&#xff0c;是阿里云出品的一款基于通义大模型的智能编码辅助工具&#xff0c;提供行级/函数级实时续写、自然语言生成代码、单元测试生成、代码注释生成、代码解释、研发智能问答、异常报错排查等能力&#…

MATLAB矩阵

MATLAB 矩阵 矩阵是数字的二维数组。 在MATLAB中&#xff0c;您可以通过在每行中以逗号或空格分隔的数字输入元素并使用分号标记每行的结尾来创建矩阵。 例如&#xff0c;让我们创建一个45矩阵一- 示例 a [ 1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7; 4 5 6 7 8] MATLAB将执行上述语…

uniapp微信小程序开发踩坑日记:Vue3 + uniapp项目引入Echarts图表库

一、下载插件包 下载地址如下&#xff1a; lime-echart: 百度图表 echarts&#xff0c;uniapp、taro 使用 echarts 图表&#xff0c;全面兼容各平台小程序、H5、APP、Nvue 将以下两个文件夹放到项目的components里 同样地&#xff0c;将静态资源文件夹下内容放到自己项目的s…

什么是端口

啊&#xff0c;端口&#xff01;这可是计算机网络中一个非常重要的概念呢。 简单来说&#xff0c;端口就好比是网络通信中的门&#xff0c;用来区分不同的应用程序或服务。我们知道&#xff0c;计算机在进行网络通信时需要通过网络传输数据&#xff0c;而端口就是帮助计算机在…

vue echarts 饼图(环形图)

vue echarts 饼图(环形图) &#xff0c;echarts版本为5.3.3 可以自定义颜色 <template><div><div id"pieChart1" ref"pieChartRef1" style"width: 100%; height: 250px"></div></div></template><scri…

ASP.NET教务平台—学籍管理模块开发与设计

摘 要 教务平台之学籍管理模块是一个典型的教务信息管理系统(MIS)&#xff0c;其开发主要包括后台数据库的建立和前端应用程序的开发两个方面。对于后台数据库要求实现数据的完整性、一致性和安全性&#xff1b;对于前台应用程序开发则要求模块功能完备、界面友好、易使用等特…

java中http调用组件深入详解

目录 一、前言 二、http调用概述 2.1 什么是http调用 2.1.1 http调用步骤 2.2 HTTP调用特点 2.3 HTTP调用应用场景 三、微服务场景下http调用概述 3.1 微服务开发中http调用场景 3.2 微服务组件中http的应用 四、常用的http调用组件 4.1 java中常用的http组件介绍 4…

C++11新特性:lambda表达式

目录 1.lambda表达式 1.1 C98中的一个例子 1.2 lambda表达式 1.3 lamzbda表达式语法 1. lambda表达式各部分说明 2. 捕获列表说明 1.4 函数对象与lambda表达式 1.lambda表达式 1.1 C98中的一个例子 在C98中&#xff0c;如果想要对一个数据集合中的元素进行排序&#xff0…

Kafka 3.x.x 入门到精通(04)——对标尚硅谷Kafka教程

Kafka 3.x.x 入门到精通&#xff08;04&#xff09;——对标尚硅谷Kafka教程 2. Kafka基础2.1 集群部署2.2 集群启动2.3 创建主题2.4 生产消息2.5 存储消息2.5.1 存储组件2.5.2 数据存储2.5.2.1 ACKS校验2.5.2.2 内部主题校验2.5.2.3 ACKS应答及副本数量关系校验2.5.2.4 日志文…

BEC写作和其他英语写作有什么区别?成人学英语去哪里柯桥有专业培训吗?

BEC中级考试的写作与其他英语类考试略有不同。除考查考生的整体写作水平之外&#xff0c;它也考查考生处理日常商务活动及解决商务运作中出现问题的能力。测试题材与体裁均与商务信函有关&#xff0c;往往涉及以下内容&#xff1a; 商务信函&#xff1a;这里所涉及的信函往往是…