强的网站建设/如何提升关键词的自然排名
文章目录
- 命名空间(Namespaecs)
- 查看命名空间
- 查看带有命名空间对象下资源
- 文件存储
- 持久卷(pv,Persistent Volumes)
- 卷容量
- 卷模式(volumeMode)
- 访问模式(accessModes)
- 回收策略(persistentVolumeReclaimPolicy)
- local卷
- nfs卷
- 持久卷声明(pvc,PersistentVolumesClaims)
- 资源
- PV绑定PVC
- Deployment
- Service(服务)
- 服务类型(spec.type)
- 端口定义(spec.ports)
在K8s中,进行资源命名时,大部分支持的命名方式为DNS子域名命名方式,即xxx-xxx的方式,在大部分资源命名时,不支持_,所以在命名时但需要进行驼峰划分时,推荐使用-进行划分
命名空间(Namespaecs)
查看命名空间
# 列出集群所有命名空间
kubectl get namespaces
kubectl get ns# 获取命名空间摘要信息
kubectl get ns ${namespace_name}# 获取命名空间详情信息
kubectl describe ns ${namespace_name}
ns: namespace命令的缩写,在k8s中可用ns命令指代namespaces,下面统一采用ns代替namespaces
查看带有命名空间对象下资源
# 以pods资源为例
kubectl get pods --ns=${namespace_name}
文件存储
在K8s中通过卷(volume)来存储文件信息。在容器中的的文件内容在磁盘上临时存放,当容器崩溃或被销毁时,容器上的生命周期、状态,文件信息等内容都会丢失。若是我们希望能够将容器内的文件信息和容器外的磁盘上文件进行关联,需要通过挂载卷的方式进行挂载,这些当容器出错时挂载的内容将不会被销毁。
持久卷(pv,Persistent Volumes)
K8s中的持久卷(Persistent Volumes,简称PV)是一种特殊类型的存储资源,它可以为 Kubernetes中的Pod 供持久性的数据存储。持久卷的特点如下:
- 数据持久性:持久卷的数据在 Pod 退出时不会丢失,即使 Pod 被删除,卷中的数据也会保留。这使得持久卷成为一个非常适合存储数据持久性的解决方案。
- 独立于 Pod:每个持久卷都是独立于 Pod 的,卷的存储和访问并不依赖于某个特定的 Pod。这意味着可以使用不同的持久卷来存储不同的数据,或者将多个持久卷分配给同一个Pod。
- 动态分配:持久卷可以在Kubernetes中动态创建和删除。当一个PersistentVolumeClaim需要使用持久卷时,Kubernetes会自动为其分配一个空闲的持久卷。当PersistentVolumeClaim不再需要该卷时,Kubernetes会自动释放该卷,以便其他PersistentVolumeClaim使用。
- 存储类型:持久卷可以存储各种类型的数据,如Block存储、File存储、网络文件系统(如NFS)等。这使得持久卷可以用于各种不同的场景和用例。
- 共享访问:多个PersistentVolumeClaim可以共享同一个持久卷。这可以提高存储利用率,减少卷的创建和删除次数,从而简化了 Kubernetes 中的存储管理。
总之,持久卷是 Kubernetes 中一种非常灵活和强大的存储解决方案,它提供了数据持久性、独立性、动态分配、多种存储类型和共享访问等特点,使得在管理和存储数据时具有很高的灵活性和效率。
卷容量
一般来说,在PV持久卷里面需要声明卷容量,该容量通过spec.capacity.storage
指定
卷模式(volumeMode)
在PV持久卷中,支持两种卷模式:
- Filesystem(文件系统):
- 属性设置为Filesystem的卷会被Pod挂载到某个目录
- 如果卷的存储来自某块设备而该设备目前为空,Kuberneretes会在第一次挂载卷之前在设备上创建文件系统。
- Block(快设备):
- 将卷作为原始块设备来使用,其上没有任何文件系统
- 这种模式对于为 Pod 提供一种使用最快可能方式来访问卷而言很有帮助
- Pod和卷之间不存在文件系统层。另外,Pod中运行的应用必须知道如何处理原始块设备
在yaml中可以通过spec.volumeMode
指定卷模式,该模式是可选的,默认为Filesystem
访问模式(accessModes)
在PV上的访问模式有:
- ReadWriteOnce(RWO):卷可以被一个节点以读写方式挂载。ReadWriteOnce访问模式仍然可以在同一节点上运行的多个Pod访问该卷。 对于单个Pod的访问,请参考ReadWriteOncePod访问模式。
- ReadOnlyMany(ROX):卷可以被多个节点以只读方式挂载。
- ReadWriteMany(RWX):卷可以被多个节点以读写方式挂载。
- ReadWriteOncePod(RWOP):卷可以被单个Pod以读写方式挂载。如果你想确保整个集群中只有一个Pod可以读取或写入该PVC,请使用ReadWriteOncePod访问模式。
在yaml中可以通过spec.accessModes
指定卷模式,该模式是可选的,默认为Filesystem
回收策略(persistentVolumeReclaimPolicy)
目前的回收策略有:
- Retain:手动回收
- Recycle:简单擦除 (rm -rf /thevolume/*)
- Delete:删除存储卷
local卷
local卷所代表的是某个被挂载的本地存储设备,例如磁盘、分区或者目录。local 卷只能用作静态创建的持久卷。不支持动态配置。
当我们需要挂载集群上某一宿主机的卷时,可以使用local卷进行挂载。
以下是一个PV使用local卷的示例:
apiVersion: v1
kind: PersistentVolume
metadata:name: example-pv
spec:capacity:storage: 100GivolumeMode: FilesystemaccessModes:- ReadWriteManypersistentVolumeReclaimPolicy: RetainstorageClassName: local-storagelocal:# 卷路径path: /mnt/disks/ssd1nodeAffinity:required:nodeSelectorTerms:- matchExpressions:- key: kubernetes.io/hostnameoperator: Invalues:# 卷所在集群节点名称- example-node
nfs卷
nfs卷能将NFS(网络文件系统) 挂载到你的Pod中。
apiVersion: v1
kind: PersistentVolume
metadata:name: example-pv
spec:capacity:storage: 100GivolumeMode: FilesystemaccessModes:- ReadWriteManypersistentVolumeReclaimPolicy: RetainstorageClassName: nfs-storagenfs:server: xxxxxpath: "/"
持久卷声明(pvc,PersistentVolumesClaims)
在上述声明的PV卷是集群中的资源。声明了资源之后是无法直接对资源操作的,在K8s中通过持久卷声明(pvc,PersistentVolumesClaims)声明对资源对请求和检查工作。
即PV声明资源,PVC声明对资源的访问方式,通过PVC来访问持久卷资源。
同PV一样,PVC同样支持访问模式,卷模式,具体参考上文
资源
同Pod一样,PVC可以请求特定数量的资源。但在中,请求的资源是存储。
通过spec.resources.requests.storage
来声明请求的资源
PVC参考示例:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: example-pvc
spec:volumeMode: FilesystemaccessModes:- ReadWriteManystorageClassName: local-storageresources:requests:storage: 8Gi
PV绑定PVC
- 动态绑定:在PV和PVC中通过
spec.storageClassName
声明存储类。如果集群中有合适的PV可用(即与PVC规格匹配并且未被绑定),则Kubernetes会自动将两者绑定在一起。如果没有可用PV,则可能根据存储类触发动态供应流程创建新的PV。 - 静态绑定:管理员可以手动创建PV,并为其设置特定的标签或者注解。然后在创建PVC时,可以明确指定需要匹配的标签,这样Kubernetes会在已有PV中寻找符合标签条件的PV进行绑定。
Deployment
在K8s中,通过Deployment定义Pod和ReplicaSet的状态来提供声明式更新能力。通过在Deployment声明期望服务的目标状态,当运行中的Pod等资源以非目标状态访问时,Deployment控制器(Controller)以受控速率更改实际状态,将目标资源变为期望状态。
deployment示例
apiVersion: apps/v1
kind: Deployment
metadata:name: nginx-deploymentnamespace: example-nslabels:app: nginx
spec:replicas: 3selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:1.14.2ports:- containerPort: 80env:- name: "TZ"value: "Asia/Shanghai"volumeMounts:- name: local-storagemountPath: /data/data/uploadsubPath: datavolumes:- name: local-storagepersistentVolumeClaim:claimName: ysocr-pvc
- metadata: Deployment元数据信息
- name: 定义了deployment名称,且后续的Pod和ReplicaSet等资源以该name开头
- namespace: 指定该deployment所在命名空间
- label: 在Deployment中定义的标签,以
key: value
的方式定义
- spec.replicas: 声明的Pod和ReplicaSet资源的分片数量
- spec.selector: 定义所创建的ReplicaSet如何查找要管理的Pod。这里选择在Pod模板中定义的标签进行管理
- spec.template:
- metadata: 定义pod的元数据和
- spec: pod容器配置
- container: 创建一个容器并使用
- ports.containerPort: 定义容器内暴露的端口
- env: 容器环境变量配置
- volumeMounts: 卷挂载
- name: volumes定义的卷名称
- mountPath: 容器内路径
- subPath: 相对于卷的路径
- volumes: 卷配置,通过关联PVC,挂载卷和容器
- container: 创建一个容器并使用
Service(服务)
Deployment中定义了容器信息和容器的状态等内容,不同于Docker Compose或Docker Swarm同一服务下的容器可以相互访问。K8s中Deployment仅定义了容器的状态相关信息,如果希望在命名空间内部或者在宿主机上访问内部资源,需要通过Service的方式来公开程序为网络服务。
Servic 是将运行在一个或一组 Pod 上的网络应用程序公开为网络服务的方法。
服务类型(spec.type)
K8s允许通过服务类型来设置容器对外提供服务的方式
- ClusterIP
- 这类服务仅在Kubernetes集群内部可见,不暴露给集群外部
- ClusterIP服务使用
ClusterIP
类型,将Pods的网络接口与集群IP地址关联起来 - 这种服务适用于在集群内部进行通信的情况
- 该服务为默认Service服务类型,当不进行服务类型配置时,默认使用该配置
- NodePort
- 这类服务在集群内部和外部都可以访问
- 通过为Pods分配一个NodePort,NodePort服务允许用户在外部访问Pods,从而实现服务在集群内部和外部的统一访问
- 适用于宿主机需要访问集群内部服务的情况
- LoadBalancer
- 这类服务在集群内部和外部都可以访问
- 这类服务将Pods的网络接口与集群external IP地址关联起来。LoadBalancer 服务在集群外部是可见的,可以接收来自外部的流量
- 通常,LoadBalancer服务用于负载均衡和高可用场景,当Pod有多个分片时,可以考虑使用LoadBalancer进行负载均衡
- ExternalName
- 这类服务将Pods的网络接口与外部的域名关联起来
- ExternalName服务允许用户为服务指定一个外部域名,并将该域名解析为Pods的网络接口
- 这种服务适用于将服务提供以域名的方式提供给外部用户的情况
端口定义(spec.ports)
在Kubernetes中,Services的spec.ports定义了服务的外部访问端口。这些端口在集群内是可见的,并且允许集群内的节点访问该服务。
spec.ports
参数是一个包含多个端口对象的数组,每个端口对象表示一个外部访问端口。spec.ports
参数对象的常见参数有:
- name: 当Services中只定义单个端口时,端口名称是可选的,当在一个Services中定义多个端口时,必须为所有端口提供名称,以使它们无歧义
- protocol: 支持的协议,可选参数,默认为
TCP
- port: 服务访问端口,集群内部访问的端口,暴露到集群上的端口,定义了服务对外的访问接口,可以通过
clusterIp:port
的形式访问 - targetPort: 表示服务内部使用的端口。是Pod控制器中定义的端口(应用访问的端口)。一般情况下port和targetPort保持一致
- 在Services中使用Pod控制器定义的端口时,需要在Pod中声明containerPort参数
- nodePort: 提供了集群外部客户端访问 Service 的一种方式,指定nodePort后,可以通过
nodeIp:nodePort
的形式进行访问- 默认情况下,为了方便起见,Kubernetes控制平面会从某个范围内分配一个集群外部可访问端口号(默认:30000-32767)
Services示例:
apiVersion: v1
kind: Service
metadata:name: nginx-service
spec:type: NodePortselector:app: nginxports:- name: name-of-service-portprotocol: TCPport: 80targetPort: 80nodePort: 30080
相关文章:

Kubernetes基本部署概念
文章目录 命名空间(Namespaecs)查看命名空间查看带有命名空间对象下资源 文件存储持久卷(pv,Persistent Volumes)卷容量卷模式(volumeMode)访问模式(accessModes)回收策略…...

QT c++ 海康红外热像仪
//本文描述2通道海康通道红外热像仪预览和抓图 #include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); userID-1; …...

OpenAI 的 GPTs 提示词泄露攻击与防护实战:防御卷(一)
前面的OpenAI DevDay活动上,GPTs技术的亮相引起了广泛关注。随着GPTs的创建权限开放给Plus用户,社区里迅速涌现了各种有趣的GPT应用,这些都是利用了Prompt提示词的灵活性。这不仅展示了技术的创新潜力,也让人们开始思考如何获取他…...

中科大计网学习记录笔记(十五):可靠数据传输的原理
前前言:看过本节的朋友应该都知道本节长度长的吓人,但其实内容含量和之前的差不多,老师在本节课举的例子和解释比较多,所以大家坚持看完是一定可以理解透彻的。本节课大部分是在提出问题和解决问题,先明确出现的问题是…...

五种多目标优化算法(MOGWO、MOJS、NSWOA、MOPSO、MOAHA)性能对比(提供MATLAB代码)
一、5种多目标优化算法简介 1.1MOGWO 1.2MOJS 1.3NSWOA 1.4MOPSO 1.5MOAHA 二、5种多目标优化算法性能对比 为了测试5种算法的性能将其求解9个多目标测试函数(zdt1、zdt2 、zdt3、 zdt4、 zdt6 、Schaffer、 Kursawe 、Viennet2、 Viennet3)࿰…...

力扣:93. 复原 IP 地址
回溯: 1.先定义一个接收的集合,之后再定义一个记录小数点的变量。之后编写回溯函数,终止条件为小数点的个数为3时,同时要判断最后一段的组合的值是否属于ip地址的范围。之后再用for循环来遍历ip地址的组合,先判断组合…...

利用序列化和反序列化实现深拷贝
利用序列化和反序列化可以实现对象的深拷贝,具体步骤如下: 将要深拷贝的对象序列化为字节流。从字节流中反序列化出一个新的对象,即完成了深拷贝。下面是一个示例代码: import java.io.*;class MyClass implements Serializable {private static final long serialVersion…...

【AHK】68键键盘键位布局优化/esc改退格键/回车键
本人习惯使用~作为退格键,但是由于keychron 68键的布局只能用esc平替~来修改,然后也将回车键通过alt和大小写锁定键一起触发 esc::bs ;次步骤与下面步骤相对应,如果是用send bs方式则下面的不生效^esc:: ;通过建立 保留esc功能 send {esc} re…...

计算机体系架构初步入门
🎬个人简介:一个全栈工程师的升级之路! 📋个人专栏:高性能(HPC)开发基础教程 🎀CSDN主页 发狂的小花 🌄人生秘诀:学习的本质就是极致重复! 目录 1 计算机五大…...

常见的序列化数据结构方法及其优缺点汇总
文章目录 1. JSON (JavaScript Object Notation)2. XML (eXtensible Markup Language)3. YAML (YAML Aint Markup Language)4. Protobuf (Protocol Buffers)5. MessagePack6. BSON (Binary JSON)7. Avro8. Thrift9. CBOR (Concise Binary Object Representation) 将常见的序列化…...

华清远见嵌入式学习——驱动开发——作业1
作业要求: 通过字符设备驱动分步注册过程实现LED驱动的编写,编写应用程序测试,发布到CSDN 作业答案: 运行效果: 驱动代码: #include <linux/init.h> #include <linux/module.h> #include &l…...

小苯的IDE括号问题(CD) -----牛客小白月赛87(双链表)
C题:C-小苯的IDE括号问题(easy)_牛客小白月赛87 (nowcoder.com) D题: D-小苯的IDE括号问题(hard)_牛客小白月赛87 (nowcoder.com) C题代码: #include<bits/stdc.h>using namespace std…...

Redis如何修改key名称
点击上方蓝字关注我 近期出现过多次修改Redis中key名字的场景,本次简介一下如何修改Redis中key名称的方法。 1. 命令行方式修改在Redis中,可以使用rename命令来修改Key的名称。这个命令的基本语法如下: RENAME old_key new_key 在这里&#…...

浅谈redis之SDS
SDS 什么是SDSSDS结构len的作用free的作用buf的作用简单示例 SDS机制重新分配内存分配内存机制小于1MB情况大于1MB情况为什么这样分配 惰性释放内存 什么是SDS SDS:全名 simple dynamic string,意为简单动态字符串,作为redis里的一种数据结构…...

数据结构知识点总结-线性表(1)-线性表的定义、基本操作、顺序表表示
线性表 定义 线性表是具有相同数据类型的N(N>0)个元素的有限序列,其中N为表长,当N0时线性表是一张空表。 线性表的逻辑特征:每个非空的线性表都有一个表头元素和表尾元素,中间的每个元素有且仅有一个直…...

Spring Boot 手写starter!!!
原因:为什么要手写starter??? 原因:简化功能。 实例:以分页为例:写一个starter。 1.首先定义一个PageX注解。 Target({ElementType.METHOD}) Retention(RetentionPolicy.RUNTIME) Documented p…...

移动端自动化常用的元素定位工具 介绍
在移动端自动化测试和开发中,元素定位是非常关键的一步。以下是一些常用的工具和技术来帮助开发者或测试工程师在移动设备上定位元素: 1. **UiAutomator**: - **UiAutomator** 是 Android 官方提供的自动化测试框架。它可以用来编写测试脚本&…...

问题:Spark SQL 读不到 Flink 写入 Hudi 表的新数据,打开新 Session 才可见
博主历时三年精心创作的《大数据平台架构与原型实现:数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行,点击《重磅推荐:建大数据平台太难了!给我发个工程原型吧!》了解图书详情,…...

数学建模资料分享
1. 往年各赛题的优秀论文 可以用来参考一下论文是怎么写的。参考论文的结构,格式,思路等等。 链接:https://pan.baidu.com/s/1WG2t4-x9MjtaSgkq4ue5AQ?pwdnlzx 提取码:nlzx --来自百度网盘超级会员V4的分享 2.论文模板 链接&a…...

应用配置管理
一、Pod 配置管理 可变配置用 ConfigMap; 敏感信息用 Secret; 身份认证用 ServiceAccount 这几个独立的资源来实现的; 资源配置用 Resources; 安全管控用 SecurityContext; 前置校验用 InitContainers 这几个在 …...

This dependency was not found解决方法
问题如上(前端代码),我是引用js文件出的问题,无法找到api/userManage模块。 解决:没感觉哪有问题,把后面加了个/,就解决了,代表src目录,应该是目录和目录之间应该有/作为分割:...

基于SpringBoot的停车场管理系统
基于SpringBootVue的停车场管理系统的设计与实现~ 开发语言:Java数据库:MySQL技术:SpringBootMyBatis工具:IDEA/Ecilpse、Navicat、Maven 系统展示 前台首页 停车位 个人中心 管理员界面 摘要 摘要:随着城市化进程的…...

SQL库操作
1、创建数据库 概念 创建数据库:根据项目需求创建一个存储数据的仓库 使用create database 数据库名字创建 数据库层面可以指定字符集:charset/character set 数据库层面可以指定校对集:collate 创建数据库会在磁盘指定存放处产生一个文件夹 创建语法 create …...

物麒平台根据入耳出耳状态使能或禁止触摸按键实现方法
是否需要申请加入数字音频系统研究开发交流答疑群(课题组)?可加我微信hezkz17, 本群提供音频技术答疑服务,+群赠送语音信号处理降噪算法,蓝牙耳机音频,DSP音频项目核心开发资 料, 1 消息发送 2 消息处理 3 宏开关 4 代码 #include "app_main.h" #include &q…...

CAS5.3使用JPA实现动态注册服务
cas同时支持cas协议和OAuth2协议,官方默认是通过扫描json文件的形式注册客户端服务,但是此种方式需要重启服务才能生效,此次我们将使用JPA来完美实现动态注册服务,如果不知道cas如何部署,可以擦看之前的文章 cas-client基于CAS协议客户端搭建-CSDN博客 cas-server5.3自定义密…...

unity ui界面优化
优化一个比较复杂的界面,里面有多个rt和组件。 在初次打开这个界面的时候会发生1s多的卡顿,还是非常严重的。 分析 通过profiler分析 1.打开界面时卡顿。 分析:除了update和dotween相关逻辑,主要在于打开时的lua function调用…...

mysql-MVCC
一、基础概念 1. MVCC的含义 MVCC (Multiversion Concurrency Control),即多版本并发控制技术,它是通过读取某个时间点的快照数据, 来降低并发事务冲突而引起的锁等待, 从而提高并发性能的一种机制. MVCC 的实现,是通过保存数据…...

Sqli-labs靶场第9关详解[Sqli-labs-less-9]
Sqli-labs-Less-9 前言: SQL注入的三个条件: ①参数可控;(从参数输入就知道参数可控) ②参数过滤不彻底导致恶意代码被执行;(需要在测试过程中判断) ③参数带入数据库执行。&#…...

第3.5章:StarRocks数据导入——Broker Load
注:本篇文章阐述的是StarRocks-3.2版本的Broker Load导入机制 一、概述 Broker Load导入方式支持从HDFS类的外部存储系统(例如:HDFS、阿里OSS、腾讯COS、华为云OBS等),支持Parquet、ORC、CSV、及 JSON 四种文件格式&a…...

Linux之ACL权限chmod命令
一. chmod命令 chmod命令来自英文词组change mode的缩写,其功能是改变文件或目录权限的命令。默认只有文件的所有者和管理员可以设置文件权限,普通用户只能管理自己文件的权限属性。 设置权限时可以使用数字法,亦可使用字母表达式࿰…...