在 K8S 中部署一个应用 下

news2024/11/23 0:45:37

接着上一篇继续部署应用到 K8S中

之前简单部署的简单集群,三个工作节点是运行在 docker 和 kubelet 的,还有一个是控制节点

ReplicationController , pod 和 service 本次关系

之前有提到 ReplicationController , pod 和 服务是如何组合在一起的呢?

可以通过这张如图来解释一下

我们之前创建 pod 的时候不是直接创建的,是通过 docker run 来创建的一个 replicationController ,然后基于 rc 来创建的一个 pod 实例

为了让 pod 能够被外部访问到,所以我们需要让 K8S 将 replicationController 管理的所有 pod 由一个服务对外暴露,因此有了 kubia-http

  • 服务是有对外暴露 IP 的,请求打到 service 上
  • service 将请求转到 pod 上面的 9999 端口上,然后 pod 提供服务

ReplicationController 角色是啥样的

通过上面的案例,我们应该知道 ReplicationController实际上是用于复制 pod 的,通过 ReplicationController 来创建多个 pod 副本

ReplicationController 始终确保存在一个运行中的 pod 实例

如果我们上面创建的 pod 消失了,那么 ReplicationController 将会创建一个新的 pod 来替换消失的 pod

为什么需要 service

再来看看 service ,也就是上面 kubia-http 服务

为什么需要服务,有了 pod ,还拿 service 干啥?

通过上面的 ReplicationController 我们知道,pod 消失之后, ReplicationController 会再创建一个新的将其替换

那么我们也知道,每一个 pod 都有自己的独立的主机名和 IP

pod 在环境中会因为任何原因直接挂掉和消失,然后又被新的 pod 替换,这个时候 pod 的 IP 变化了,外部如何正确访问到我们的服务呢?

这个时候就需要 service 了

  • service 可以解决不断变化的 pod IP 问题
  • service 可以在一个固定 IP 和端口上对外暴露多个pod

当一个 service 被创建的时候,会得到一个静态的 IP,在 service 整个生命周期中,它的 IP 是不会变的

客户端只需要通过这个固定 IP 连接服务即可,服务会将请求转到 内部其中一个 pod, 客户端不需要关心 pod 在哪里,只需要关系 service 在哪里即可

增加副本数量

当前的系统里面只有的一个副本,现在我们可以增加到 3 个副本

我们可以通过指令 kubectl get replicationcontrollers 来查看当前的副本数

可以通过 kubectl scale rc mykubia --replicas=3,来将副本数调整至 3 个

  • 我们执行上面这个指令,只是告诉 K8S 系统中期望的副本数量,并没有告诉 K8S 需要如何去操作,如何去实现

  • K8S 自身会去检查当前的状态是否和期望的状态一致,如果不一致就会进行调整, 这个是 K8S 中基本的原则之一

我们用到的指令中,好多都是 kubectl get xxx 的,就是获取对应的 pod,service ,rc 等等信息的

其实我们也可以直接执行 kubectl get,这样可以列出所有可能类型的对象,还能够显示缩写

最新的系统状态

通过执行上述的指令,系统中将 1 个副本,调整成了 3 个副本

这就是 K8S 可以轻易的做到水平伸缩,我们要扩充副本的时候,再也不需要手动的去安装和运行其他副本了,只用执行指令,修改期望数量即可

当然,我们放进 pod 的服务,也需要做成无状态,可横向扩展的,这样才能更好的使用 K8S 的能力

这样子的话,最新的系统应该是这个样子的

外部请求打到 service 上面,service 会将请求给到 任意一个 pod ,对应的 pod 即提供服务即可

今天就到这里,学习所得,若有偏差,还请斧正

欢迎点赞,关注,收藏

朋友们,你的支持和鼓励,是我坚持分享,提高质量的动力

好了,本次就到这里

技术是开放的,我们的心态,更应是开放的。拥抱变化,向阳而生,努力向前行。

我是阿兵云原生,欢迎点赞关注收藏,下次见~
更多的可以查看 零声每晚八点直播:https://ke.qq.com/course/417774

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

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

相关文章

设计模式之命令模式笔记

设计模式之命令模式笔记 说明Command(命令)目录命令模式示例类图订单类厨师类抽象命令类订单命令类服务员类测试类 说明 记录下学习设计模式-命令模式的写法。JDK使用版本为1.8版本。 Command(命令) 意图:将一个请求封装为一个对象,从而使得可以用不同的请求对客…

STM32单片机(九)USART串口----第二节:USART串口外设

❤️ 专栏简介:本专栏记录了从零学习单片机的过程,其中包括51单片机和STM32单片机两部分;建议先学习51单片机,其是STM32等高级单片机的基础;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 :适用于想要…

STM32单片机(九)USART串口----第三节:USART串口实战练习(串口发送)

❤️ 专栏简介:本专栏记录了从零学习单片机的过程,其中包括51单片机和STM32单片机两部分;建议先学习51单片机,其是STM32等高级单片机的基础;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 :适用于想要…

常见面试题之MySQL篇

1.MySQL中,如何定位慢查询? 我们当时做压测的时候有的接口非常的慢,接口的响应时间超过了2秒以上,因为我们当时的系统部署了运维的监控系统Skywalking,在展示的报表中可以看到是哪一个接口比较慢,并且可以分析这个接…

【数据库七】MySQL主从复制与读写分离

MySQL主从复制与读写分离 1.案例概述2.什么是读写分离?3.为什么要读写分离呢?4.什么时候要读写分离?5.主从复制与读写分离6.MySQL主从复制原理6.1 mysql的复制类型 7.主从复制的工作过程7.1 MySQL架构图7.2 口语化工作工程 8.MySQL 读写分离原…

VSCode配置C语言编译环境

一、下载C语言编译器: (1)下载地址:MinGW-w64 - for 32 and 64 bit Windows - Browse /mingw-w64 at SourceForge.net 下载如下的windows版本: (2)配置环境变量: 二、安装VSCode …

Linux学习[18]bash学习深入4----命令执行的判断依据---【; , , ||】---用于一次性输入多指令情况

文章目录 前言判断符号 ;判断符号 &&与||总结 前言 使用指令的时候,使用完一个指令之后,我想让它接着执行另一个指令,而非等A指令执行完之后再输入B指令。 为了实现这个效果,我查阅了相关资料,这里…

【从零开始学习JAVA | 第十六篇】杂项知识点介绍

目录 前言: 包: final: 权限修饰符: 总结: 前言: 本文不隶属于正文序列,而是对面向对象中的一些常用词进行介绍,方便大家理解记忆,本文将会逐一介绍 什么是包,final…

云服务器部署企业版openGauss

openGauss 企业版安装 教程 1.下载安装包 在华为云上租一台服务器,操作系统选:openEuler 20.03 64bit (64-bit) 获取openGauss Server安装包,企业版:软件包链接 使用xshell连接服务器,准备软硬件安装环境(该装的依…

【软件架构模式】—微内核架构

欢迎回到软件架构模式博客系列。这是本系列的第 4 章,我们将讨论微内核架构模式 概述: 内核模式也被称为插件架构模式。将附加应用程序功能作为插件添加到核心应用程序,以提供可扩展性以及功能分离和隔离。 这种模式由两种类型的架构组件组…

如何搭建LNMP架构

目录 一、什么是LNMP Linux系统 Apache服务 Nginx服务 MySQL数据库 PHP服务 二、搭建LNMP 安装Nginx服务 第一步 关闭防火墙和安全机制 第二步 安装依赖环境 第三步 创建运行用户 第四步 解压服务包 第五步 编译安装 第六步 编译 第八步 添加 Nginx 系统服务 …

leetcode63. 不同路径 II(动态规划-java)

不同路径 II leetcode63. 不同路径 II题目描述暴力递归代码演示动态规划代码演示 动态规划空间压缩 动态规划专题 leetcode63. 不同路径 II 来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/unique-paths-ii 题目描述 一个…

自然图像中的字符识别:Chars74K 数据集

字符识别是 研究人员从计算机早期开始工作 视觉。随着当今相机的无所不在,应用 的自动字符识别比以往任何时候都更广泛。为 拉丁字母,这在很大程度上被认为是一个已解决的问题 受限情况,例如扫描文档的图像 包含常用字符字体和统一 背景。但是…

7.4_3B+树

特点:块内无序,块间有序(类比于分块查找) 这个性质是为了追求平衡 3)结点的子树个数与关键字个数相等 4)所有叶节点包含全部关键字及指向相应记录的指针,叶节点中将关键字按照大小顺序排列, 并且相邻叶节点…

Camera之android8.0以上HIDL与C++数据类型转换(三十)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药. 更多原创,欢迎关注:Android…

rust 集合、错误处理、泛型、Trait、生命周期、包

集合组织特性相同的数据;泛型可以定义任何抽象数据类型;生命周期限制所有权的作用域范围;错误处理使程序更健壮。 集合 一组特性相同的数据集合,除了基本数据类型的元组、数组。rust 标准库提供了一些非常有用的数据结构。 Vec…

Redis从入门到精通【进阶篇】之高可用主从详解

文章目录 0.前言1.详解1.1 主从复制概述1.2 主从复制原理1.2.1.全量复制1.2.2.增量复制1.2.3.详细描述1.3 更深入理解1.4 常见面试题 2. 总结3. Redis从入门到精通系列文章 0.前言 Redis是一个高性能的键值存储系统,广泛应用于Web应用、缓存、消息队列等领域。在实…

C++【STL】之priority_queue学习

优先级队列 优先级队列priority_queue也是STL库中容器适配器的一种,常用于进行数据优先级的处理,说到这儿是不是发现有些熟悉,没错它和我们之前讲解的堆本质上就是一个东西,底层都是数组存储的完全二叉树,它在STL库中…

零基础速成simulink代码生成——DBC文件CAN报文+stateflow 5

零基础速成simulink代码生成——DBC文件CAN报文+stateflow 5 上一篇文章中,已经实现将dbc文件进行代码生成,这边我们要实现一个功能,添加多几个can报文分时发送,结合statflow简单实现这个功能。 添加报文 我们还是选用相同的can报文添加 选中所有的模块,ctrl+c。 ctrl+…

InvPT++:用于视觉场景理解的倒金字塔多任务Transformer

文章目录 InvPT: Inverted Pyramid Multi-Task Transformer for Visual Scene Understanding摘要本文方法整体结构InvPT EncoderTask-Specific Preliminary DecodersStructure of InvPT DecodeUP-Transformer BlockCross-Scale Self-Attention: Fusion Attention and Selective…