【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…...
(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...
【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...
基于当前项目通过npm包形式暴露公共组件
1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹,并新增内容 3.创建package文件夹...
【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)
骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术,它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton):由层级结构的骨头组成,类似于人体骨骼蒙皮 (Mesh Skinning):将模型网格顶点绑定到骨骼上,使骨骼移动…...
dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...
SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题
分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...
Go 语言并发编程基础:无缓冲与有缓冲通道
在上一章节中,我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道,它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好࿰…...
C++:多态机制详解
目录 一. 多态的概念 1.静态多态(编译时多态) 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1).协变 2).析构函数的重写 5.override 和 final关键字 1&#…...
