六安网站定制/百度最容易收录的网站
工作变动总结一下之前的笔记,整理一个速查的东西,方便之后查阅
K8s开发相关
1、k8s yml apiverison:
Kubernetes (k8s) 的 API 版本表示资源定义在 API 服务器中的稳定性和支持程度。API 版本由一个字符串表示,如 v1
或 apps/v1
,其中包括两个部分:
- 组 (Group): 如果资源属于某个 API 组,则该字段表示该组的名称。例如,
apps
表示应用程序相关的资源如 Deployments。 - 版本 (Version): 表示 API 的版本,常见的有
v1
、v1beta1
等。
常见的 API 版本有:
- v1: 核心组的稳定版本,包括常用的资源如 Pods、Services、ConfigMaps 和 Secrets。
- apps/v1: 用于管理应用的稳定版本,包括 Deployments、StatefulSets、DaemonSets 等。
- batch/v1: 用于批处理任务,包括 Job 资源。
- batch/v1beta1: 包括 CronJob 资源。
- extensions/v1beta1: 早期版本的一些资源,例如 Ingress(现在推荐使用
networking.k8s.io/v1
)。 - networking.k8s.io/v1: 网络相关资源,包括 NetworkPolicies 和 Ingresses。
- rbac.authorization.k8s.io/v1: 用于角色基础访问控制的资源,包括 Roles 和 RoleBindings。
- storage.k8s.io/v1: 存储相关的资源,包括 StorageClasses 和 VolumeAttachments。
- autoscaling/v1: 自动缩放相关资源,包括 HorizontalPodAutoscalers。
- policy/v1beta1: 包括 PodSecurityPolicies,用于定义 Pod 的安全性相关设置。
2、开发人员比较常用的一些 Kubernetes Kind类型:
核心资源类型
- Pod: 作为应用的最小和最简单的单元,每个 Pod 包含一个或多个容器。
- Service: 提供稳定的 IP 地址和 DNS 名称,将外部网络流量路由到后端的 Pod。
- Deployment: 用来描述应用的期望状态,Kubernetes 会确保真实状态符合期望状态。
- ConfigMap: 存储非敏感数据的键值对,可以用来存储环境变量、配置文件等信息。
- Secret: 存储敏感数据,如密码、OAuth 令牌等。
- PersistentVolume 和 PersistentVolumeClaim: 提供 Pod 持久化存储的能力。
- Namespace: 提供一种将集群资源分隔成多个独立的部分的方式。
配置和管理资源类型
- ResourceQuota: 确保每个命名空间下的资源使用量不超过设定的配额。
- LimitRange: 限制命名空间下资源的大小,请求和限制。
- HorizontalPodAutoscaler: 根据 CPU 使用或其他选择的度量自动缩放 Pod 的数量。
网络资源类型
- Ingress: 为服务提供外部可访问的 URL,负载均衡,SSL/TLS 终止等。
- NetworkPolicy: 定义 Pod 间通信的网络策略。
其他资源类型
- Job 和 CronJob: 用于执行一次性或周期性的任务。
- StatefulSet: 用于运行需要持久存储和唯一网络标识符的应用。
- DaemonSet: 确保所有(或部分)节点运行一个 Pod 的副本。
- ReplicaSet: 确保指定数量的 Pod 副本始终可用。
- Node: 表示集群中的一个节点。
开发人员在使用 Kubernetes 时,通常会涉及到这些资源的创建和管理。通过这些资源,他们可以定义和配置应用的运行环境,实现自动化和弹性伸缩等特性。理解这些资源的作用和使用方式,是开发人员在 Kubernetes 平台上高效工作的基础。
3、开发常用的配置文件的模版
标准结构
apiVersion: <string>
kind: <string>
metadata:name: <string>namespace: <string>labels:<key>: <value>annotations:<key>: <value>
spec:...
status:...
字段解释
- apiVersion (必选): 指定 Kubernetes API 的版本,用于确定使用哪个版本的 API 来创建该资源。
- kind (必选): 指定资源的类型,例如 Pod、Service、Deployment 等。
- metadata (必选): 提供资源的元数据,包括名称、命名空间和标签等。
- name (必选): 资源的唯一名称。
- namespace (可选): 指定资源所属的命名空间。
- labels (可选): 键值对,用于组织和选择资源。
- annotations (可选): 键值对,用于存储非标识性的元数据。
- spec (根据资源类型,可能是必选或可选): 指定资源的期望状态,包括所需的配置参数。
- status (可选): 描述资源的当前状态。通常由 Kubernetes 系统维护和更新。
spec 字段
spec
字段的内容高度依赖于资源的 kind
类型。以下是一些常见资源类型的 spec
字段示例:
-
Pod:
spec:containers:- name: <container-name>image: <container-image>ports:- containerPort: <port-number>
-
Service:
spec:selector:<label-key>: <label-value>ports:- protocol: TCPport: <port-number>targetPort: <target-port-number>
-
Deployment:
spec:replicas: <number-of-replicas>selector:matchLabels:<label-key>: <label-value>template:metadata:labels:<label-key>: <label-value>spec:containers:- name: <container-name>image: <container-image>
-
ConfigMap
apiVersion: v1
kind: ConfigMap
metadata:name: <string>namespace: <string>labels:<key>: <value>annotations:<key>: <value>
data: # ConfigMap\Secret 特有的<key>: <value>
- Ingress
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: <string>namespace: <string>labels:<key>: <value>annotations:<key>: <value>
spec:ingressClassName: <string>defaultBackend:service:name: <string>port:number: <integer>resource:apiGroup: <string>kind: <string>name: <string>tls:- hosts:- <string>secretName: <string>rules:- host: <string>http:paths:- path: <string>pathType: <string>backend:service:name: <string>port:name: <string>number: <integer>resource:apiGroup: <string>kind: <string>name: <string>
status:loadBalancer:ingress:- ip: <string>hostname: <string>
4、Deployment和StatefulSet的区别
StatefulSet
和 Deployment
是 Kubernetes 中两种不同类型的资源控制器,它们用于管理 Pod 的生命周期,但它们主要用于不同的场景,并提供不同的功能。
Deployment
- 无状态应用:
Deployment
适用于无状态的应用。这意味着单个 Pod 的实例是可以互换的,它们不需要保持任何持久状态。 - 副本: 通过
Deployment
创建的所有 Pod 副本都是相同的。 - 滚动更新:
Deployment
支持滚动更新,可以在不停止服务的情况下更新应用。 - 快速扩展: 适用于需要快速启动或缩容的应用。
- 生命周期管理:
Deployment
确保指定数量的 Pod 副本始终处于运行状态。
StatefulSet
- 有状态应用:
StatefulSet
适用于需要持久存储和特定网络标识的有状态应用。 - 稳定的网络标识: 每个 Pod 副本都有一个稳定的、唯一的网络标识符。
- 稳定的存储: 即使 Pod 被重新调度到不同的节点,它也能保持对存储卷的访问。
- 有序部署:
StatefulSet
保证 Pod 是按顺序创建和删除的。 - 有序扩展: 当扩展或缩容时,
StatefulSet
确保操作是按照顺序进行的。
用例对比
- 无状态应用: 如果你的应用不需要保存状态、快速扩展和缩容,以及滚动更新,那么
Deployment
更适合。 - 有状态应用: 如果你的应用需要稳定的网络标识、稳定的持久存储和有序、优雅的部署和扩展,那么
StatefulSet
更适合。
总的来说,选择 StatefulSet
或 Deployment
取决于你的应用是否需要保持状态以及你对网络标识和存储的需求。
5、apollo部署实例
下面是一个使用Kubernetes部署Apollo的例子,包括一个Pod、一个Service和一个Deployment。
- Deployment
apiVersion: apps/v1
kind: Deployment
metadata:name: apollonamespace: default
spec:replicas: 3selector:matchLabels:app: apollotemplate:metadata:labels:app: apollospec:containers:- name: apolloimage: apolloconfig/apollo-portal:latestenv:- name: SPRING_DATASOURCE_URLvalue: jdbc:mysql://your-mysql-server:3306/ApolloConfigDB?characterEncoding=utf8- name: SPRING_DATASOURCE_USERNAMEvalue: yourusername- name: SPRING_DATASOURCE_PASSWORDvalue: yourpasswordports:- containerPort: 8070# ---
# apiVersion: v1
# kind: Service
# metadata:
- Service
apiVersion: v1
kind: Service
metadata:name: apollo-servicenamespace: default
spec:selector:app: apolloports:- protocol: TCPport: 80targetPort: 8070type: ClusterIP
- Pod
Pods通常由Deployment管理,但如果你要创建单独的Pod:
apiVersion: v1
kind: Pod
metadata:name: apollo-podlabels:app: apollo
spec:containers:- name: apolloimage: apolloconfig/apollo-portal:latestenv:- name: SPRING_DATASOURCE_URLvalue: jdbc:mysql://your-mysql-server:3306/ApolloConfigDB?characterEncoding=utf8- name: SPRING_DATASOURCE_USERNAMEvalue: yourusername- name: SPRING_DATASOURCE_PASSWORDvalue: yourpasswordports:- containerPort: 8070
在这个例子里面, service和deployment是分开写的, 你也可以写到一块。
当你在创建 Service 时,Kubernetes 不要求对应的 Pod 或 Deployment 已经存在。Service 会持续地监听并动态地更新其选择的 Pod 列表。这意味着你可以先创建 Service,再创建 Deployment,Service 会自动发现并开始转发流量到正确的 Pod。
- 如果先创建 Service: Service 会一直等待,直到有符合其标签选择器的 Pod 被创建,然后它会开始转发流量到这些 Pod。
- 如果先创建 Deployment: Pod 会被创建,并且等待 Service 被创建。一旦 Service 创建并且其标签选择器正确配置,它就会开始转发流量到这些 Pod。
6、Kubernetes 的核心组件的实现
- 容器runtime:
- Kubernetes 支持多种容器运行时,包括 Docker 和 containerd。容器运行时负责在节点上运行和管理容器。它们实现了 OCI(Open Container Initiative) 标准,以确保跨不同环境的一致性和可移植性。
- 容器编排:
- Kubernetes 的编排功能通过其控制平面中的各种控制器和调度器实现。例如,ReplicaSet 控制器确保指定数量的副本始终在运行,而 Deployment 控制器可以帮助管理应用程序的更新和回滚。
- 容器中心的基础架构编排:
- Kubernetes 通过其网络和存储抽象实现了基础架构编排。例如,它提供了 Service 和 Ingress 对象来管理网络通信,以及 PersistentVolume 和 PersistentVolumeClaim 对象来管理存储资源。
- 自愈机制:
- Kubernetes 通过其控制器和健康检查机制实现自愈功能。例如,如果一个节点变得不健康,Kubernetes 可以自动重新调度该节点上的 Pod 到其他健康节点。
- 服务发现和负载均衡:
- Kubernetes 通过其 Service 和 Ingress 对象实现服务发现和负载均衡。Service 对象提供了一个稳定的网络地址,用于访问一个或多个 Pod,而 Ingress 对象提供了 HTTP 和 HTTPS 路由到集群内的服务。
相关文章:

K8s开发人员也需要了解的相关知识
工作变动总结一下之前的笔记,整理一个速查的东西,方便之后查阅 K8s开发相关 1、k8s yml apiverison: Kubernetes (k8s) 的 API 版本表示资源定义在 API 服务器中的稳定性和支持程度。API 版本由一个字符串表示,如 v1 或 apps/v1,…...

创建并启动华为HarmonyOS本地与远程模拟器及远程真机
1.打开设备管理器 2.选择要添加的手机设备,然后点击安装 3.正在下载华为手机模拟器 4.下载完成 5.创建新模拟器 下载系统镜像 点击下一步,创建模拟器 创建成功 启动模拟器 华为模拟器启动成功 6.登陆华为账号并使用远程模拟器 7.使用远程真机...

责任链模式应用案例
前几天系统商品折扣功能优化,同事采用了责任链模式重构了代码,现整理如下。 一、概念 责任链模式是为请求创建一个处理者对象的链条,所有处理者(除最末端)都含有下一个对象的引用从而形成一条处理链,该模…...

给你一个整数 num ,返回 num 中能整除 num 的数位的数目
给你一个整数 num ,返回 num 中能整除 num 的数位的数目。 如果满足 nums % val 0 ,则认为整数 val 可以整除 nums 。 示例 1: 输入:num 7 输出:1 解释:7 被自己整除,因此答案是 1 。 示例 2&…...

Java后端开发——房贷计算器(Ajax版、Json版、等额本息+等额本金)
MVC房贷计算器(Ajax版) 1.新建一个JavaWeb项目hslcalweb,设置tomcat10。 2.创建房贷计算器JavaBean:HslCalBean.java,增加以下的属性,并生成Getter/Setter方法。 private double total; //贷款额度pr…...

2023.10.28 关于 synchronized 原理
目录 synchronized 特性 synchronized 优化机制 锁升级(锁膨胀) 其他优化机制 锁消除 锁粗化 synchronized 特性 开始时是乐观锁,如果锁冲突频繁,就转为悲观锁开始是轻量级锁,如果锁被持有的时间较长,…...

力扣 27. 移除元素
目录 1.解题思路2.代码实现 1.解题思路 利用双指针思路,当让一个指针先走,指针指向的位置不等于val时,将此时该指针的值给另一个指针并且两个指针都加一,如果等于val,则让该指针加一继续走.最后另一个指针的下标就为排好的数组的…...

redis爆满导致数据丢失
记一则redis爆满导致数据丢失的一场事故 某功能上线后,发现出现问题,最后定位到了 redis. 由于存储的数据过多,导致阿里云4G大小的 redis 爆满,触发了回收策略。 于是临时扩容,运维同学当时未找到阿里云配置。 后面我用工具连接了…...

Android14 WMS启动流程
一 概述 本文Android14源代码可参考:Search 在 Android 系统中,从设计的角度来看,窗口管理系统是基于 C/S 模式的。整个窗口系统分为服务端和客户端两大部分,客户端负责请求创建窗口和使用窗口,服务端完成窗口的维护…...

磁盘管理(初始化,引导块,坏块管理,固态硬盘)
目录 1.磁盘初始化2.引导块3.坏块的管理1.坏块检查2.坏块链表3.扇区备用 4.固态硬盘(SSD)1.原理2.组成3.读写性能特性4.与机械硬盘相比5.磨损均衡技术 1.磁盘初始化 ①进行低级格式化(物理格式化),将磁盘的各个磁道划分…...

mysql冷拷贝大表
1、简述: mysql数据迁移有多种方式,最常见的就是先把数据库导出,然后导入新的数据库。拷贝数据目录data是另外一种方式。 尤其是当数据库启动不了,或者大型数据库迁移的时候,可以考虑这个方式。 2、场景:…...

苍穹外卖-01
苍穹外卖-01 课程内容 软件开发整体介绍苍穹外卖项目介绍开发环境搭建导入接口文档Swagger 项目整体效果展示: 管理端-外卖商家使用 用户端-点餐用户使用 当我们完成该项目的学习,可以培养以下能力: 1. 软件开发整体介绍 作为一名…...

GAMP源码阅读(中)伪距单点定位 SPP
原始 Markdown文档、Visio流程图、XMind思维导图见:https://github.com/LiZhengXiao99/Navigation-Learning 文章目录 一、SPP 解算1、spp():单点定位主入口函数2、estpos()3、estpose_()4、valsol():GDOP和卡方检验结果有效性 二、卫星位置钟…...

Epinoia-有状态网络的意图验证模块,略读
Epinoia relies on a unified model for NFs by leveraging the causal precedence relationshipsthat exist between NF packet I/Os and states. 这句话的意思是:“Epinoia依靠一种统一的网络功能(NF)模型,通过利用存在于 NF 包…...

14.力扣c++刷题-->有效括号
题目:给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合…...

scrapy-redis分布式爬虫(分布式爬虫简述+分布式爬虫实战)
一、分布式爬虫简述 (一)分布式爬虫优势 1.充分利用多台机器的带宽速度 2.充分利用多台机器的ip地址 (二)Redis数据库 1.Redis是一个高性能的nosql数据库 2.Redis的所有操作都是原子性的 3.Redis的数据类型都是基于基本数据…...

单目深度估计之图像重构原理解析
一、参考资料 浅析自监督深度估计中的光度损失(Photometric Loss) 二、图像重构原理 设输入位姿估计网络的3帧连续单目序列为 < I t − 1 , I t , I t 1 > <I_{t-1},I_{t},I_{t1}> <It−1,It,It1>,其中 t t t 为时间索引,…...

【爬虫】charles手机抓包环境设置(设置系统证书)
1.说明 想要对手机抓包,最关键的是需要设置好根证书,用户证书在安卓7.0之后就不受信任了,想要对手机app抓包,就需要把用户证书设置为系统证书(根证书) 注意,想要设置为根证书,你的…...

【flink sql table api】时间属性的指定与使用注意事项
文章目录 一. 时间属性介绍二. Table api指定时间属性三. 处理时间的指定1. 在创建表的 DDL 中定义2. 在 DataStream 到 Table 转换时定义3. 使用 TableSource 定义 四. 事件时间的指定1. 在 DDL 中定义2. 在 DataStream 到 Table 转换时定义3. 使用 TableSource 定义 五. 小结…...

评价模型:CRITIC客观赋权法
目录 1.算法原理介绍2.算法步骤2.1 数据标准化2.2 计算信息承载量2.3 计算权重和得分 3.案例分析 1.算法原理介绍 CRITIC方法是一种客观权重赋权法,其基本思路是确定指标的客观权数以两个基本概念为基础。一是对比强度,它表示同一指标各个评价方案取值差…...

两个Tomcat插件配置不同端口,session冲突,同时登录被挤下线问题的解决
如果是配置了两个Tomcat的插件,在同一ip有两个需要同时登录的项目,可以在其中一个web项目的web.xml文件里添加session命名的配置,如下: <!--配置不同的session,避免管理端和手机端两个同时登录被挤下线--><se…...

Mybatis中执行Sql的执行过程
MyBatis中执行SQL的过程可以分为以下几个步骤: 解析配置文件:在运行时,MyBatis会加载并解析配置文件(通常为mybatis-config.xml),获取数据库连接信息、映射文件等。 创建SqlSessionFactory:MyB…...

IEEE Standard for SystemVerilog—Chapter 25.7 Tasks and functions in interfaces
子例程(任务和函数)可以在接口中定义,也可以在连接的一个或多个模块中定义。这允许更抽象的建模级别。例如,“读”和“写”可以定义为任务,而不需要引用任何连线,主模块只能调用这些任务。在modport中&…...

一台服务器最大能支持多少条 TCP 连接
文章目录 1. 一台服务器最大能打开的文件数1.1 限制参数1.2 调整服务器能打开的最大文件数示例 2. 一台服务器最大能支持多少连接3. 一台客户端机器最多能发起多少条连接4. 其他5. 相关实际问题5.1 "too many open files" 报错是怎么回事,该如何解决5.2 一…...

Qt重定向QDebug,Qt/C++开源作品39-日志输出增强版V2022
Qt重定向QDebug,自定义一个简易的日志管理类 Chapter1 Qt重定向QDebug,自定义一个简易的日志管理类0.前言1.最简单的操作运行结果2.实现一个简易的日志管理类 Chapter2 Qt::Qt Log日志模块Qt Log日志模块官方解释官方Demo思路 Chapter3 QT日志模块的个性…...

linux入门---多线程的控制
目录标题 线程库pthread_create如何一次性创建多个线程线程的终止线程的等待线程取消分离线程如何看待其他语言支持的多线程线程id的本质线程的局部存储线程的封装 线程库 要想控制线程就得使用原生线程库也可以将其称为pthread库,这个库是遵守posix标准的…...

基于android的 rk3399 同时支持多个USB摄像头
基于android的 rk3399 同时支持多个USB摄像头 一、前文二、CameraHal_Module.h三、CameraHal_Module.cpp四、编译&烧录Image五、App验证 一、前文 Android系统默认支持2个摄像头,一个前置摄像头,一个后置摄像头 需要支持数量更多的摄像头࿰…...

【Qt之控件QTreeView】设置单元格高度、设置图标尺寸
设置列宽 设置高度 自定义代理 继承QItemDelegate,实现sizeHint ()方法,设置自定义委托。 class itemDelegate : public QItemDelegate {Q_OBJECTpublic:explicit itemDelegate(QObject *parent 0) : QItemDelegate(parent){}~itemDelegate(){}virtua…...

力扣42.接雨水(java,暴力法、前缀和解法)
Problem: 42. 接雨水 文章目录 思路解题方法复杂度Code 思路 要能接住雨水,感性的认知就是要形成一个“下凹区域”,则此时我们就要比较当前柱子和其左右柱子高度的关系,易得一个关键的式子:当前小区域的积水 min(当前…...

hdlbits系列verilog解答(移位寄存器)-23
文章目录 一、问题描述二、verilog源码三、仿真结果 一、问题描述 您将获得一个具有两个输入和一个输出的模块 my_dff (实现 D 触发器)。实例化其中的三个,然后将它们链接在一起以形成长度为 3 的移位寄存器。端口 clk 需要连接到所有实例。…...