【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…...

C++_核心编程_多态案例二-制作饮品
#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...
三维GIS开发cesium智慧地铁教程(5)Cesium相机控制
一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点: 路径验证:确保相对路径.…...

23-Oracle 23 ai 区块链表(Blockchain Table)
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练
前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...
Axios请求超时重发机制
Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式: 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...
Python 包管理器 uv 介绍
Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...
Redis:现代应用开发的高效内存数据存储利器
一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发,其初衷是为了满足他自己的一个项目需求,即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源,Redis凭借其简单易用、…...