自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

nvd11的专栏

it's a blank description

  • 博客(435)
  • 收藏
  • 关注

原创 K8S ingress 初体验 - ingress-ngnix 的安装与使用

1个ingress controller 可以对应多个ingress 吗?答: 可以的如果1个ingress 的controller 配有多个ingress instance, 里面的配置会冲突吗?如果有相同的path 设置答: 会冲突, 所以要保证多个ingress instance 的配置中 path 互相不重复如果一个 Ingress 控制器对应两个 Ingress 资源,并且这两个 Ingress 的配置中具有相同的路径,那么会发生冲突。

2024-07-12 03:16:18 1120

原创 K8S - 在集群内反向代理外部资源 - headless service 的使用

referring:无头服务(Headless Services)有时你并不需要负载均衡,也不需要单独的 Service IP。遇到这种情况,可以通过显式设置 集群 IP(spec.clusterIP)的值为 "None" 来创建无头服务(Headless Service)。你可以使用无头 Service 与其他服务发现机制交互,而不必绑定到 Kubernetes 的实现。

2024-06-24 02:23:26 1027

原创 K8S - 理解ClusterIP - 集群内部service之间的反向代理和loadbalancer

集群内部通信:ClusterIP 为 Service 提供了一个虚拟的内部 IP 地址,用于在 Kubernetes 集群内的其他组件和服务之间进行通信。其他 Pod 可以通过该虚拟 IP 地址和 Service 的端口来访问该 Service。内部负载均衡:ClusterIP 实现了基于轮询算法的负载均衡,它将请求均匀地分发给 Service 关联的后端 Pod。这意味着无论有多少个后端 Pod,它们都可以被平等地访问,从而实现负载均衡和高可用性。

2024-06-23 21:07:00 1493

原创 K8S - 实现statefulset 有状态service的灰度发布

参考理解 什么是 滚动更新,蓝绿部署,灰度发布 以及它们的区别。

2024-06-23 00:49:00 618

原创 理解 什么是 滚动更新,蓝绿部署,灰度发布 以及它们的区别

滚动更新,蓝绿部署,灰度发布这3种 现代化的 发布模式相信很多人都听过, 但是并不是都能正确理解他们的作用和区别。

2024-06-22 23:53:00 734

原创 K8S -理解StatefulSet - 部署有状态应用

有状态服务(Stateful Service):有状态服务是指在处理请求期间维护和跟踪用户状态或会话信息的服务。这意味着服务在多个请求之间保持状态,并且需要在请求之间共享和使用这些状态信息。通常,有状态服务会将用户数据存储在内存、数据库或其他持久化存储中,并使用该状态来处理后续请求。有状态服务通常需要进行会话管理和状态同步,以确保正确处理和维护用户状态。无状态服务(Stateless Service):无状态服务是指在处理请求期间不维护任何用户状态或会话信息的服务。

2024-06-22 22:55:11 1193

原创 VPC Access Connector 介绍 - 让 Non-VPC product 也可以访问VPC Network内的资源

在GCP 上, VPC product 指的是属于某个制定的vpc subnet, 具有至少1个 该 subnet 的内网ip的产品某些dataflow job (指定了 可选参数subnet )Cloud Composer (基于airflow)而 Non VPC product 通常是1个共用产品和 server less 的平台,例如:5. Pubsub。

2024-06-19 02:30:43 1148

原创 K8S - 用kubectl远程访问内网的k8s集群

在之前的文章介绍过, 通过任何node 的主机, 用kubectl 管理集群是很简单。

2024-06-10 00:45:25 1298

原创 摆脱Jenkins - 使用google cloudbuild 部署 java service 到 compute engine VM

在之前 介绍 cloud build 的文章中已经介绍过, 用cloud build 去部署1个 spring boot service 到 cloud run 是很简单的, 因为部署cloud run 无非就是用gcloud 去部署1个 GAR 上的docker image 到cloud run 容器。

2024-06-09 05:33:17 841 1

原创 创建google cloud storage notification 的权限问题

Google 文档也不是很靠谱, 更新并不是非常及时。

2024-06-08 13:31:04 420

原创 Google Cloudbuild yaml file 中 entrypoint 和 args 的写法

id: 显示在 cloud build logs 里的item 名字name: docker 镜像名字 - 下面的命令会在这个镜像的1个容器instance 内执行entrypoint: 执行的命令入口 , 只能有1个对象args: 命名的参数, 它是1个list问题来了, 如何理解深而慢是entrypoint 和 argsentrypoint 就是执行的命令 bin file 名字, args 是参数, 不能混淆中cat 就entrypoint。

2024-06-01 21:41:40 968

原创 理解 numpy 中的布尔索引

布尔索引是一种通过使用布尔值(True或False)数组来选择数组中的元素的方法。布尔数组的长度必须与源数组相同,它指示了哪些元素应该被选择或过滤。通过使用布尔索引,我们可以根据指定条件来选择数组中的元素,这些条件可以是基于元素值的比较、逻辑运算符的组合或其他布尔表达式。简单来将, 布尔索引就是让 1个 boolean dtype 的adarray 作为另1个adarry 的 filter, 所以 布尔索引更应该是个filter 而不是 index。

2024-05-20 00:26:37 770

原创 理解numpy中的切片访问

numpy 中的一维数组的切片方法与 python 内置的list 切片类似.arr[0轴上的切片, 1轴上的切片…, n-1轴上的切片]规则, 其实是基于1维数组的。

2024-05-19 21:17:33 232

原创 理解 numpy 中数组的索引访问

与python 普通的数组 (list) 一样。numpy 中的ndarray 一样是支持 正向索引 和 负数索引如图如上图 array[1] 和 array[-8] 都是指向 同1个元素 8。

2024-05-19 19:29:58 289

原创 numpy 多维数组的轴顺序

我要获取第2行第1个元素(4) 必须用 arr[1,0] , 因为arr[x,y] 中 x是0轴的index, y是1轴的index, 它们的顺序不能乱。其中竖向的是0轴, 横向的是1轴, 他们的顺序不能乱, 因为我们必须以正确的顺序获取元素。所以0轴 所对应的元素是 多个 1维数组, 而1轴(最深轴) 对应的是标量。上图中我用不同的颜色表示第4维, 实际上将多个3维数组 构建称1个4维数组。竖向的轴不再是0轴, 而表示深度的才是0轴, 如上图。这时, 0轴 对应的元素就是2维数组(矩阵)

2024-05-19 05:21:17 417

原创 Python 利用迭代器or生成器,让小内存也能处理大文件

首先准备1个log 文件 app.log 它有60000 行数据。

2024-05-13 01:51:30 272

原创 Python生成器使用场景2 - 处理无限队列 - 节省cpu 资源

什么是无限队列?例如常见的斐波那契数列, 自然数队列等这次我们用素数队列来举个例子。

2024-05-13 00:44:26 562

原创 Python 生成器常用场景一 取代普通迭代器

在上一篇文章已经简单介绍了生成器 是 一种特殊的迭代器而的确, 大部分普通的迭代器是可以被生成器取代的, 以达到简化代码的目的。

2024-05-12 23:23:58 301

原创 入门理解python中的generator - 生成器

生成器(Generator)是一种特殊的函数,可以用于迭代地生成一系列值,而不需要一次性生成所有值并将它们存储在内存中。生成器在需要时逐个生成值,并在生成值后暂停执行,保留函数的状态,以便下次调用时能够从停止的地方继续执行。生成器函数使用 yield 语句来定义,而不是常规函数中的 return 语句。当生成器函数被调用时,它返回一个生成器对象,而不是立即执行函数体。每次调用生成器对象的 next() 方法时,生成器函数将从上次执行停止的位置继续执行,直到遇到下一个 yield 语句。

2024-05-12 22:43:00 888 1

原创 理解python中的Iterator 和 Iterable 迭代器和可迭代对象

Iterable 的中文意思是可迭代对象, 就是可以被循环的对象, 它在内部必须实现__iter__ 方法而iter方法会返回1个 iterator , 所以实际上iterable 是依赖于它内置的 iterator去迭代元素的常见的iterable 有List, Dict, String 等等, 所以它们都是可以用for … in … 来循环的python 不像java 没有内置链表 link list 这个容器.但是我们可以利用迭代器自己写1个, 当然只实现链表部分简单的功能。

2024-05-12 02:49:40 892

原创 理解Python的装饰器 decorator

既然是装饰器, 肯定就是跟设计模式中的装饰模式有关了装饰器就是python 中对装饰模式的一种注解实现,令其可以对其他函数进行一些功能上的增强。住这里的增强并不是真正的修改函数的业务逻辑, 只是前后增加一些步骤。

2024-05-06 05:26:17 710

原创 理解 python 中的* 打包和解包

注意, 本文的打包和解包的概念有点类似与java 的装箱和解箱但是还是有点区别java 中的装箱指的是 把一系列的值让放入1个对象的属性中而python的打包概念 包括。

2024-05-06 00:59:05 952

原创 理解 python 中的 import

import x如果想引用x里的所有的对象, 就直接用import x调用x里的对象时必须带上x作为前缀, 例如x.f1()如果执行引入x里的1个或者部分对象, 则用from x import f1会更节省资源.掉用f1时直接调用, 不能带x 作为前缀。

2024-05-05 03:30:52 1141

原创 快速构建vscode pytest 开发测试环境

如果不想用 heavy 的pycharmvscode 也是1个很好的选择。

2024-05-04 01:57:45 762

原创 初探 Google 云原生的CICD - CloudBuild

Google Cloud Build(谷歌云构建)是谷歌云平台(Google Cloud Platform,GCP)提供的一项服务,可帮助开发人员以一致和自动化的方式构建、测试和部署应用程序或构件。它为构建和部署应用程序提供了一个完全托管、可扩展和灵活的环境。使用Cloud Build,开发人员可以使用配置文件(如YAML或JSON)定义构建流水线,指定构建过程中要执行的步骤和操作。可以根据事件(如代码库提交或更改)自动触发这些流水线,也可以由开发人员手动触发。

2024-05-02 03:42:50 1538

原创 使用 proxySQL 来代理 Mysql

我有若干台云主机, 但是只有1个台vm 具有外部ip而在另1台vm上我安装了1个mysql instance, 正常来讲, 我在家里的电脑是无法连接上这个mysql尝试过用nginx 代理, 但是nginx只能代理http协议的, mysql 3306 并不是http协议解决方案两种。

2024-04-09 00:05:05 1314

原创 K8S - Service简介和 1个简单NodePort例子

严格来说,Kubernetes中的Service仅仅包括ClusterIP、NodePort和LoadBalancer这三种类型。NodePort类型的Service是Kubernetes中最常见的一种服务类型。让我来详细介绍一下NodePort Service:NodePort Service会在每个NodeNode上随机分配一个端口(默认范围30000-32767),通过这个端口就可以从集群外访问Service。

2024-04-08 00:01:42 1548

原创 K8S - Deployment 的版本回滚

更新回之前的版本, 与一般的更新不同, 因为之前已经有1个RS 是for image 1.1.2的所以这次k8s 重用了之前的rs而并没有增加1个。只不过1.1.3 版本的RS 有5个当前运行的POD 副本, 而1.1.1 和 1.1.2 的副本数量是0, 符合常规.可以看到回滚的实现就是无非把1.1.2的rs 里的pod副本逐渐增加到5, 而1.1.3 rs的pod副本从5 减少到0。有5个pod 正在运行, 关键pod 名字是包含了 rs 的对象名字的。回滚1个service 的版本有多种方法。

2024-04-05 00:22:36 1314

原创 K8S- Deployment 的滚动更新 Rolling Update

结果是 deployment 和 rs 的属性都更新了, 而且pod 也增加了两个, 但是实际上rs 的hash 没变, 还是那个RS, 而且pod 的版本仍然是1.1.1 并没有触发滚动更新。至于ReplicaSet 则是直接多了1个, 足以看出k8s 是新建1个 RS 作为临时的POD 容器进行滚动更新, 当新的RS 完成所有pod 更新时, 旧的RS 就被丢弃放在一边了。结果, 单纯地添加了1个label在deployment 对象, rs 和 pod 都没有触发更新。结果, 触发了滚动更新。

2024-04-04 22:12:57 1191

原创 K8S Deployment 简介, 1个简单的Kubernetes Deployment YAML 文件

当谈到 Kubernetes 集群中的应用程序部署和管理时,Deployment、ReplicaSet 和 Pod 是三个重要的概念。它们之间存在一定的关系和层次结构。下面是对 Deployment、ReplicaSet 和 Pod 的详细解释以及它们之间的关系。

2024-04-04 18:34:36 1680

原创 K8S Pod 的生命周期

本文会介绍 1个 POD 从启动到被关闭删除, 有什么事情发生, 和有什么组件被参与进来。

2024-04-03 00:39:22 1473

原创 让数据在两个buckets之间传输 - Google Storage Transfer Service

Google 已经具有个产品叫 Storage Transfer Service, 可以帮我们把文件在两个bucket 之间传输(甚至包括AWS S3 Bucket, 不在本文讨论范围内)就是storage transfer service 的源bucket参考https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/storage_transfer_job.html。

2024-03-21 02:48:06 1078

原创 K8S POD 启动探针 startupProbe 的使用

当我们启动一个POD 时, 当k8s detect 里面的容器启动成功时, 就会认为这个POD 启动完成了, 通常就会在状态里表示 ready 1/1 …例如至于K8S 是怎么判断pod 是否启动完成的:对于容器内没有设置探测规则的情况,默认的探测规则如下:启动完成检测:Kubernetes将监视容器的启动状态。如果容器的进程启动并且不处于终止状态(例如,未崩溃),Kubernetes将认为该容器已启动完成。

2024-03-18 04:15:23 997

原创 利用SpringBoot Actuator 来构造/health /info 等监控接口

当我们用K8S 部署微服务时, 很多时候需要调用 service的/health 等状态接口, 已确定container的运行状态是否健康。而Spring boot Actuator 就是用来快速构造这些状态接口的工具。

2024-03-17 18:59:09 689

原创 google cloud run service - 用CMEK 加密容器

GCP 的 CMEK 指的是 Customer-Managed Encryption Keys(客户管理的加密密钥)。在 Google Cloud Platform(GCP)中,CMEK 允许客户自行管理用于加密其云服务数据的加密密钥。简单来讲, 我们可以利用1个 Key 去加密保护我们的GCP component , 例如cloud run service 和 bigquery dataset, bucket 等等WTF, 我先检查一下service accounts 列表。

2024-03-15 03:51:15 597

原创 Java 启动参数 -- 和 -D写法的区别

当我们配置启动1个java 项目通常需要带一些参数例如 -Denv = uat , --spring.profiles.active=dev 这些那么用-D 和 – 的写法区别是什么?

2024-03-12 03:38:17 519 1

原创 K8S - 在任意node里执行kubectl 命令

当我们初步安装玩k8s (master 带 2 nodes) 时正常来讲kubectl 只能在master node 里运行当我们尝试在某个 node 节点来执行时, 通常会遇到下面错误看起来像是访问某个服务器的8080 端口失败了。

2024-03-10 00:02:59 490

原创 K8S - 解决NodePort 只能用Pod 所在的node 的ip 访问

我刚安装完k8s, 1个master 两个node然后用下面两句命令安装了1个nginxnginx 这个pod 安装在了k8s-node1 中但是我只能在k8s 上用k8s-node1 来访问这个nginx 服务, 例如但是用k8s-master 和 k8s-node0的ip都是不能访问的。

2024-03-09 04:20:09 987

原创 Nginx 配置反向代理 - part 3

一张图很清楚地表达了。

2024-01-14 02:34:21 1040

原创 Nginx location 配置 - Part 2

接上文链接:上文 我们简单地在 nginx 创建了3个虚拟主机, 虽然这个3个主机都是用占用80端口但是我们可以用不同的域名来实现区分访问3台虚拟主机。但是, 实际项目上, 我们更加多地会使用location 配置而不是用 域名区分。本文的重点就是location 配置。

2024-01-08 00:48:47 1075

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除