当前位置: 首页 > news >正文

K8s开发人员也需要了解的相关知识

工作变动总结一下之前的笔记,整理一个速查的东西,方便之后查阅

K8s开发相关

1、k8s yml apiverison:

Kubernetes (k8s) 的 API 版本表示资源定义在 API 服务器中的稳定性和支持程度。API 版本由一个字符串表示,如 v1apps/v1,其中包括两个部分:

  1. (Group): 如果资源属于某个 API 组,则该字段表示该组的名称。例如,apps 表示应用程序相关的资源如 Deployments。
  2. 版本 (Version): 表示 API 的版本,常见的有 v1v1beta1 等。

常见的 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类型:

核心资源类型

  1. Pod: 作为应用的最小和最简单的单元,每个 Pod 包含一个或多个容器。
  2. Service: 提供稳定的 IP 地址和 DNS 名称,将外部网络流量路由到后端的 Pod。
  3. Deployment: 用来描述应用的期望状态,Kubernetes 会确保真实状态符合期望状态。
  4. ConfigMap: 存储非敏感数据的键值对,可以用来存储环境变量、配置文件等信息。
  5. Secret: 存储敏感数据,如密码、OAuth 令牌等。
  6. PersistentVolumePersistentVolumeClaim: 提供 Pod 持久化存储的能力。
  7. Namespace: 提供一种将集群资源分隔成多个独立的部分的方式。

配置和管理资源类型

  1. ResourceQuota: 确保每个命名空间下的资源使用量不超过设定的配额。
  2. LimitRange: 限制命名空间下资源的大小,请求和限制。
  3. HorizontalPodAutoscaler: 根据 CPU 使用或其他选择的度量自动缩放 Pod 的数量。

网络资源类型

  1. Ingress: 为服务提供外部可访问的 URL,负载均衡,SSL/TLS 终止等。
  2. NetworkPolicy: 定义 Pod 间通信的网络策略。

其他资源类型

  1. JobCronJob: 用于执行一次性或周期性的任务。
  2. StatefulSet: 用于运行需要持久存储和唯一网络标识符的应用。
  3. DaemonSet: 确保所有(或部分)节点运行一个 Pod 的副本。
  4. ReplicaSet: 确保指定数量的 Pod 副本始终可用。
  5. 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的区别

StatefulSetDeployment 是 Kubernetes 中两种不同类型的资源控制器,它们用于管理 Pod 的生命周期,但它们主要用于不同的场景,并提供不同的功能。

Deployment

  1. 无状态应用: Deployment 适用于无状态的应用。这意味着单个 Pod 的实例是可以互换的,它们不需要保持任何持久状态。
  2. 副本: 通过 Deployment 创建的所有 Pod 副本都是相同的。
  3. 滚动更新: Deployment 支持滚动更新,可以在不停止服务的情况下更新应用。
  4. 快速扩展: 适用于需要快速启动或缩容的应用。
  5. 生命周期管理: Deployment 确保指定数量的 Pod 副本始终处于运行状态。

StatefulSet

  1. 有状态应用: StatefulSet 适用于需要持久存储和特定网络标识的有状态应用。
  2. 稳定的网络标识: 每个 Pod 副本都有一个稳定的、唯一的网络标识符。
  3. 稳定的存储: 即使 Pod 被重新调度到不同的节点,它也能保持对存储卷的访问。
  4. 有序部署: StatefulSet 保证 Pod 是按顺序创建和删除的。
  5. 有序扩展: 当扩展或缩容时,StatefulSet 确保操作是按照顺序进行的。

用例对比

  • 无状态应用: 如果你的应用不需要保存状态、快速扩展和缩容,以及滚动更新,那么 Deployment 更适合。
  • 有状态应用: 如果你的应用需要稳定的网络标识、稳定的持久存储和有序、优雅的部署和扩展,那么 StatefulSet 更适合。

总的来说,选择 StatefulSetDeployment 取决于你的应用是否需要保持状态以及你对网络标识和存储的需求。

5、apollo部署实例

下面是一个使用Kubernetes部署Apollo的例子,包括一个Pod、一个Service和一个Deployment。

  1. 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:
  1. Service
apiVersion: v1
kind: Service
metadata:name: apollo-servicenamespace: default
spec:selector:app: apolloports:- protocol: TCPport: 80targetPort: 8070type: ClusterIP
  1. 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。

  1. 如果先创建 Service: Service 会一直等待,直到有符合其标签选择器的 Pod 被创建,然后它会开始转发流量到这些 Pod。
  2. 如果先创建 Deployment: Pod 会被创建,并且等待 Service 被创建。一旦 Service 创建并且其标签选择器正确配置,它就会开始转发流量到这些 Pod。

6、Kubernetes 的核心组件的实现

  1. 容器runtime:
    • Kubernetes 支持多种容器运行时,包括 Docker 和 containerd。容器运行时负责在节点上运行和管理容器。它们实现了 OCI(Open Container Initiative) 标准,以确保跨不同环境的一致性和可移植性。
  2. 容器编排:
    • Kubernetes 的编排功能通过其控制平面中的各种控制器和调度器实现。例如,ReplicaSet 控制器确保指定数量的副本始终在运行,而 Deployment 控制器可以帮助管理应用程序的更新和回滚。
  3. 容器中心的基础架构编排:
    • Kubernetes 通过其网络和存储抽象实现了基础架构编排。例如,它提供了 Service 和 Ingress 对象来管理网络通信,以及 PersistentVolume 和 PersistentVolumeClaim 对象来管理存储资源。
  4. 自愈机制:
    • Kubernetes 通过其控制器和健康检查机制实现自愈功能。例如,如果一个节点变得不健康,Kubernetes 可以自动重新调度该节点上的 Pod 到其他健康节点。
  5. 服务发现和负载均衡:
    • Kubernetes 通过其 Service 和 Ingress 对象实现服务发现和负载均衡。Service 对象提供了一个稳定的网络地址,用于访问一个或多个 Pod,而 Ingress 对象提供了 HTTP 和 HTTPS 路由到集群内的服务。

相关文章:

K8s开发人员也需要了解的相关知识

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

创建并启动华为HarmonyOS本地与远程模拟器及远程真机

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

责任链模式应用案例

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

给你一个整数 num ,返回 num 中能整除 num 的数位的数目

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

Java后端开发——房贷计算器(Ajax版、Json版、等额本息+等额本金)

MVC房贷计算器&#xff08;Ajax版&#xff09; 1.新建一个JavaWeb项目hslcalweb&#xff0c;设置tomcat10。 2.创建房贷计算器JavaBean&#xff1a;HslCalBean.java&#xff0c;增加以下的属性&#xff0c;并生成Getter/Setter方法。 private double total; //贷款额度pr…...

2023.10.28 关于 synchronized 原理

目录 synchronized 特性 synchronized 优化机制 锁升级&#xff08;锁膨胀&#xff09; 其他优化机制 锁消除 锁粗化 synchronized 特性 开始时是乐观锁&#xff0c;如果锁冲突频繁&#xff0c;就转为悲观锁开始是轻量级锁&#xff0c;如果锁被持有的时间较长&#xff0c…...

力扣 27. 移除元素

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

redis爆满导致数据丢失

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

Android14 WMS启动流程

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

磁盘管理(初始化,引导块,坏块管理,固态硬盘)

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

mysql冷拷贝大表

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

苍穹外卖-01

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

GAMP源码阅读(中)伪距单点定位 SPP

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

Epinoia-有状态网络的意图验证模块,略读

Epinoia relies on a unified model for NFs by leveraging the causal precedence relationshipsthat exist between NF packet I/Os and states. 这句话的意思是&#xff1a;“Epinoia依靠一种统一的网络功能&#xff08;NF&#xff09;模型&#xff0c;通过利用存在于 NF 包…...

14.力扣c++刷题-->有效括号

题目&#xff1a;给定一个只包括 ‘(’&#xff0c;‘)’&#xff0c;‘{’&#xff0c;‘}’&#xff0c;‘[’&#xff0c;‘]’ 的字符串 s &#xff0c;判断字符串是否有效。 有效字符串需满足&#xff1a; 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合…...

scrapy-redis分布式爬虫(分布式爬虫简述+分布式爬虫实战)

一、分布式爬虫简述 &#xff08;一&#xff09;分布式爬虫优势 1.充分利用多台机器的带宽速度 2.充分利用多台机器的ip地址 &#xff08;二&#xff09;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​>&#xff0c;其中 t t t 为时间索引&#xff0c;…...

【爬虫】charles手机抓包环境设置(设置系统证书)

1.说明 想要对手机抓包&#xff0c;最关键的是需要设置好根证书&#xff0c;用户证书在安卓7.0之后就不受信任了&#xff0c;想要对手机app抓包&#xff0c;就需要把用户证书设置为系统证书&#xff08;根证书&#xff09; 注意&#xff0c;想要设置为根证书&#xff0c;你的…...

【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方法是一种客观权重赋权法&#xff0c;其基本思路是确定指标的客观权数以两个基本概念为基础。一是对比强度&#xff0c;它表示同一指标各个评价方案取值差…...

uniapp 对接腾讯云IM群组成员管理(增删改查)

UniApp 实战&#xff1a;腾讯云IM群组成员管理&#xff08;增删改查&#xff09; 一、前言 在社交类App开发中&#xff0c;群组成员管理是核心功能之一。本文将基于UniApp框架&#xff0c;结合腾讯云IM SDK&#xff0c;详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法

树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作&#xff0c;无需更改相机配置。但是&#xff0c;一…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解

【关注我&#xff0c;后续持续新增专题博文&#xff0c;谢谢&#xff01;&#xff01;&#xff01;】 上一篇我们讲了&#xff1a; 这一篇我们开始讲&#xff1a; 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下&#xff1a; 一、场景操作步骤 操作步…...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils&#xff1a; ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类&#xff0c;封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz&#xff0c;先构建任务的 JobD…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章&#xff1f;AI自动生成&#xff0c;效率提升10倍&#xff01; 支持多语言、自动配图、定时发布&#xff0c;让内容创作更轻松&#xff01; AI内容生成 → 不想每天写文章&#xff1f;AI一键生成高质量内容&#xff01;多语言支持 → 跨境电商必备&am…...

HTML前端开发:JavaScript 常用事件详解

作为前端开发的核心&#xff0c;JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例&#xff1a; 1. onclick - 点击事件 当元素被单击时触发&#xff08;左键点击&#xff09; button.onclick function() {alert("按钮被点击了&#xff01;&…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)

本期内容并不是很难&#xff0c;相信大家会学的很愉快&#xff0c;当然对于有后端基础的朋友来说&#xff0c;本期内容更加容易了解&#xff0c;当然没有基础的也别担心&#xff0c;本期内容会详细解释有关内容 本期用到的软件&#xff1a;yakit&#xff08;因为经过之前好多期…...

C#中的CLR属性、依赖属性与附加属性

CLR属性的主要特征 封装性&#xff1a; 隐藏字段的实现细节 提供对字段的受控访问 访问控制&#xff1a; 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性&#xff1a; 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑&#xff1a; 可以…...

站群服务器的应用场景都有哪些?

站群服务器主要是为了多个网站的托管和管理所设计的&#xff0c;可以通过集中管理和高效资源的分配&#xff0c;来支持多个独立的网站同时运行&#xff0c;让每一个网站都可以分配到独立的IP地址&#xff0c;避免出现IP关联的风险&#xff0c;用户还可以通过控制面板进行管理功…...

宇树科技,改名了!

提到国内具身智能和机器人领域的代表企业&#xff0c;那宇树科技&#xff08;Unitree&#xff09;必须名列其榜。 最近&#xff0c;宇树科技的一项新变动消息在业界引发了不少关注和讨论&#xff0c;即&#xff1a; 宇树向其合作伙伴发布了一封公司名称变更函称&#xff0c;因…...