【K8S】快速入门Kubernetes
之前企业都是使用容器化和来构建自己的服务和应用程序,其中容器化优点有很多:提升了部署效率、稳定性、提高了资源的利用率降低了成本。
但是也带来了一些新的问题:容器的数量变得很多,管理就是一个新的问题。所以Kubernetes就出现了,用于管理容器化引擎的部署、扩展和管理等等
Kubernetes组件
Pod
Kubernetes最小调度单元,是一个或者多个容器的组合,一般场景都是单个容器,多个容器的场景就是仅限于这些容器是高度耦合的情况下,它们之间共享某些资源,不得不放在同一个容器当中,比如边车模式,就是将一个应用容器和一个辅助容器放到同一个Pod中,这个辅助容器就是Sidecar(边车模式),通常用于实现一些辅助功能,日志收集、服务监控等
Node
首先一个节点就是可以理解为一个简单的虚拟机,我们可以在节点上运行一个或者多个Pod(Kubernetes最小调度单元,是一个或者多个容器的组合)
现在我们已经将应用程序和数据库放到两个Pod中,如果需要进行访问就需要在内部根据对应的ip进行访问,但是会有两个问题:
-
ip是内部ip集群外部无法访问
-
Pod不是一个稳定实体,很容易被创建和销毁,所以每一次的ip都不是固定的
所以就需要引入一个新的组件service
Service
service可以将一组Pod封装成一个服务,根据一个同一个路口进行访问
服务也分为内部服务和外部服务,内部服务就是我们自己内部使用的服务,外部服务就是我们提供给用户的后端接口之类的,第一种是ip地址和端口来访问Service(仅限开发环境),第二种就是我们通过对应的域名来进行访问所以这个时候就需要一个组件Ingress
Ingress
管理集群外部访问集群内部服务的入口和方式,可以通过Ingress来配置不同的转发策略,根据不同的规则访问不同的Service;还可以配置域名将原来ip+端口方式转换为域名来访问Service,还有负载均衡、SSL证书之类的
ConfigMap
ConfigMap主要是将我们的程序和配置信息进行解耦合的一个组件,正常我们的数据库配置信息是存储在应用程序的,但是如果说我需要换一个数据库,就需要重新编译,那么对于我们服务的可用性,就造成了破坏,所以就可以将对应的配置信息存储到ConfigMap当中,但是ConfigMap存储信息是明文的,所以需要一定的加密策略
Sercret
和ConfigMap类似,但是做了一层Base64编码,所以不能完全保证安全性,所以就需要使用K8S给我们提供的网络安全、访问控制、身份认证等
Volumes
持久化组件,当容器重启或者销毁的时候,里面的数据就会丢失,所以就需要通过Volumes将一些持久化资源,挂在到本地磁盘上
Deployment
我们目前的程序是一个节点的,所以无法保证程序的高可用性,所以就需要搭建集群。而Deployment可以定义和管理应用程序的副本数量以及应用程序的更新策略,可以简化应用程序的部署和更新操作
Pod可以理解为在容器的上面加了一层抽象,这样就可以将一个或者多个容器组合在一起;而Deployment就可以理解在Pod上面加了一层抽象,将一个或者多个Pod组合在一起,并且还具有副本控制(可以保证我们应用程序的可用性,如果有一个挂了,就会生成一个新的替换)、滚动更新(定义和管理应用程序的更新策略,实现平滑更新,逐渐使用新的版本替换旧的版本)、自动扩缩容
StatefulSet
和Deployment类似,但是我们应用程序之间是无状态的,是不需要进行数据同步的,数据库之间是有状态的,是需要相互同步传递数据的。statefulSet也是有副本控制、自动扩缩容的机制,并且还有稳定的网络标识符和持久化存储,像一些数据库、redis、mq这些有状态的程序都是需要通过StatefulSet进行管理,但是StatefulSet还是比较复杂的,一般是可以将数据库这些有状态的程序从集群当中拿出来,单独部署就防止了上述问题
Kubernetes架构
Kubernetes是一个典型的Master-Worker架构,Master-Node负责管理整个集群,Worker-Node负责运行应用程序和服务

为了运行应用程序,Worker-Node主要是有三个组件:kubelet(管理和维护每个节点上的Pod,确保按照预期运行;定期从api-server组件接收新的或者修改后的Pod规范,监控工作节点的运行情况,汇报给api-server)、kube-proxy(为node提供网络代理和负载均衡服务)、container-runtime(可以理解为运行程序的环境,负责拉取容器镜像、创建容器、启动或者停止容器)
Master节点组件:
Kube-Apiserver:提供Kubernetes集群的API接口服务,类似集群的网关,整个系统的入口,所有的请求都会经过它,然后进行分发,比如一些创建、更新、删除Pod请求、查询集群状态的命令;并且读增删改查操作进行认证、授权和访问控制,确保只有认证和授权的请求才可以进行操作
Scheduler:负责监控集群中所有节点的资源使用情况,根据一些调度策略,将一些Pod调度到合适的节点运行。例如,增加一个Pod,第一个节点上占用了80%,第二个节点占用了20%,那个Pod就会自动的存储在第二个资源上
Controller-Manager:负责管理集群中的各种资源对象的状态(Node、Pod、Server等)确保各种资源都处于我们预期的状态
Etcd:高可用的键-值存储系统,用于存储集群中的所有资源对象的状态信息。比如,一个Pod挂掉了,或者新增一个Pod都会记录到ectd里面,整个集群的数据存储中心
Cloud-Controller-Manager:如果你使用的是云服务厂商的云服务集群,就需要这个组件了,负责与云平台相关API进行交互,提供一致的管理接口,在不同的云平台中运行和管理他们的应用程序
相关文章:
【K8S】快速入门Kubernetes
之前企业都是使用容器化和来构建自己的服务和应用程序,其中容器化优点有很多:提升了部署效率、稳定性、提高了资源的利用率降低了成本。 但是也带来了一些新的问题:容器的数量变得很多,管理就是一个新的问题。所以Kubernetes就出…...
如何在 MySQL 中处理大量的 DELETE 操作??
全文目录: 开篇语前言摘要简介概述DELETE 操作的基本概念常用的 DELETE 方法 核心源码解读简单 DELETE 语句批量 DELETE 示例 案例分析案例1:使用简单 DELETE 删除用户数据案例2:使用分批 DELETE 应用场景演示场景1:用户管理系统场…...
LabVIEW中句柄与引用
在LabVIEW中,句柄(Handle) 是一种用于引用特定资源或对象的标识符。它类似于指针,允许程序在内存中管理和操作复杂的资源,而不需要直接访问资源本身。句柄用于管理动态分配的资源,如队列、文件、网络连接、…...
【三十四】【QT开发应用】音量图标以及滑动条,没有代码补全的小技巧
效果展示 鼠标位于音量图标区域内,显示出滑动条。鼠标移出音量图标区域内滑动条隐藏。鼠标点击音量图标,如果此时音量为0,音量变成50,如果此时音量不为零,音量变为0。 CVolumeButton.h 音量图标头文件 #pragma once …...
Android修改第三方应用相机方向
以下修改基于Android7.1 diff --git a/frameworks/base/core/java/android/hardware/Camera.java b/frameworks/base/core/java/android/hardware/Camera.java index 8c7434b..7201481 100755 --- a/frameworks/base/core/java/android/hardware/Camera.java b/frameworks/ba…...
Python 读取文件汇总
readline和readlines的区别 使用 open()读取文件时,readline是读取文件的一行;而readlines是加载全部文档,以list形式保存每一行内容。 使用with避免资源泄露 with语句不仅限于open()函数,任何实现了上下文管理协议的对象都可以…...
云原生:一张图了解devops 中CI/CD
一个典型的云原生应用的开发和部署过程,其中涉及到的主要工具有 Git、Docker、Jenkins/CircleCI、Ansible、Kubernetes 等。以下是每个步骤的简要说明: 开发人员(Developers)使用 Git 进行版本控制,他们将代码推送到 G…...
无人机之自组网通信技术篇
无人机的自组网通信技术是一种利用无人机作为节点,通过无线通信技术实现节点间自主组网、动态路由和数据传输的技术。 一、技术原理与特点 技术原理:无人机自组网技术基于自组织网络(Ad-Hoc Network)的原理,通过无线…...
【WebLogic】Oracle发布2024年第四季度中间件安全公告
Oracle于美国时间2024年10月15日发布了 WebLogic 12c(12.2.1.4.0)和14c(14.1.1.0.0)两个大版本2024年第4季度的安全公告,涉及漏洞ID共计 6 个,包含2个高危漏洞 2 个,4个中危漏洞,其中…...
Java集合(3:Set和Map)
文章目录 Set概述哈希值HashSet去重原理LinkedHashSetTreeSet自定义排序规则 Map概述Map的基本方法Map集合的获取功能哈希表HashMap底层源码 特点注意 Set 概述 Set集合也是一个接口,继承自Collection,与List类似,都需要通过实现类来进行操…...
【Golang】Gin框架中如何定义路由
✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…...
CPU内存飙升
CPU 飙升介绍 CPU 飙升是指中央处理器(CPU)的使用率在短时间内急剧上升,达到一个较高的水平。正常情况下,CPU 会根据系统和应用程序的需求合理分配资源,使用率会在一定范围内波动。但当 CPU 飙升时,可能会导…...
【Java】LinkedList实现类的使用
LinkedList实现类的使用 package com.star.test04;import java.util.Iterator;import java.util.LinkedList;/** * author : Starshine */public class Test { //这是main方法,程序的入口 public static void main(String[] args) { /* LinkedL…...
创建人物状态栏
接下来,我们来尝试制作一下我们的UI,我们会学习unity基本的UI系统 ************************************************************************************************************** 我们要先安装一个好用的插件到我们的unity当中,帮助…...
django5入门【01】环境配置
注意: ⭐前提:安装了annaconda(python版本管理工具),如果没有安装,强烈建议安装一下!!!操作: 前言: 这里新创建一个名为“python_3.11_start_dja…...
1000集《楼兰》系列短剧开机仪式在疆举行,开启全球传播新篇章
2024年10月18日,光明媚,秋风送爽。 在这个收获的季节里,倍受期待的楼兰系列短剧《楼兰之天女归来》和《楼兰之时空秘宝》在新疆吐鲁番东方红卓览文化博物馆举行了隆重的开机仪式,正式拉开了摄制的序幕。 1000集《楼兰》系列短剧…...
【景观生态学实验】实验五 景观生态脆弱性评价
实验目的 1.学习层次分析模型思路,对丹江口库区2000年景观生态脆弱性评价建模:通过实验课的学习,深入理解层次分析(Analytic Hierarchy Process,AHP)理论与模型,了解其在决策问题中的应用&…...
ChatGPT 现已登陆 Windows 平台
今天,OpenAI 宣布其人工智能聊天机器人平台 ChatGPT 已开始预览专用 Windows 应用程序。OpenAI 表示,该应用目前仅适用于 ChatGPT Plus、Team、Enterprise 和 Edu 用户,是一个早期版本,将在今年晚些时候推出"完整体验"。…...
和鲸社区数据科学实训季,西安交通大学圆满收官,西安,后会有期!
和鲸社区数据科学实训季活动已走进数十家高校,在西安的收官之站,落定西安交通大学管理学院,为本次西安之旅画上了圆满的句号。 和鲸社区 2024秋 数据科学实训季以“帮助同学积累真实场景项目经验”为出发点,提供 60 个数据科学实践…...
工作使用篇:如何在centos系统中安装anaconda
在CentOS 7上安装Anaconda的步骤如下: 1. 下载Anaconda 首先,你需要下载Anaconda的安装脚本。可以使用wget命令从Anaconda的官网获取最新版本的安装脚本。打开终端并运行以下命令: wget https://repo.anaconda.com/archive/Anaconda3-2024…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...
Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...
应用升级/灾备测试时使用guarantee 闪回点迅速回退
1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...
反向工程与模型迁移:打造未来商品详情API的可持续创新体系
在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...
mongodb源码分析session执行handleRequest命令find过程
mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程,并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令,把数据流转换成Message,状态转变流程是:State::Created 》 St…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...
【论文阅读28】-CNN-BiLSTM-Attention-(2024)
本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...
九天毕昇深度学习平台 | 如何安装库?
pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子: 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...
