自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(58)
  • 资源 (1)
  • 收藏
  • 关注

原创 Kubernetes 之 Ingress

Ingress 可以把外部需要进入到集群内部的请求转发到集群中的一些服务上,从而实现把服务映射到集群外部的需要。Ingress 能把集群内 Service 配置成外网能够访问的 URL,流量负载均衡,提供基于域名访问的虚拟主机等,相当于一个流量入口。它的基础构件叫做 Ingress Controller。

2024-07-20 17:56:22 300

原创 Kubernetes Service 之 LoadBalancer

负载均衡器 (LoadBalancer) 是 Kubernetes 中用来对外暴露 Service 服务的,它可以将服务集中到一个公共 IP 上。我们常用 MetalLB 作为自建均衡器。

2024-07-19 21:12:12 374 2

原创 Kubernetes RBAC 之 UserAccount

Kubernetes 用户账户可以直接在终端使用,用来读写其有权限的资源或者非资源数据,而 Service Account 一般是用来绑定程序调用的。

2024-07-16 17:08:01 165

原创 MongoDB Shard 集群 Docker 部署

将 shard1 shard2 shard3 容器初始化并验证。分别在三台上启动 Config Server 容器。初始化 Config Server 复制集。在 mongo1 上部署容器。在 mongo2 上部署容器。在 mongo3 上部署容器。

2024-07-14 20:56:23 413

原创 Kubernetes RBAC 之 ServiceAccount

RABC 英文全称是 Role-Based Access Control,它通过角色绑定账户,来使得账户拥有某些操控 K8S 集群的权限。ServiceAccount 是集群内部 Pod 访问集群所使用的服务账户,它包括了 Namespace、Token、Ca 证书,并且通过目录挂载的方式绑定 Pod。当 Pod 运行起来的时候,就会使用这些信息与 ApiServer 进行通信。

2024-07-06 11:28:59 982 2

原创 Kubernetes 之 Secret

Secret 解决了密码、token、秘钥等敏感数据的配置问题,它避免了把这些敏感数据直接暴露在镜像或者 Pod 的配置文件中。但是它只是一种相对安全的策略,我们还是可以在容器内找到这些信息。

2024-06-03 13:13:16 273

原创 Kubernetes 之 ConfigMap

ConfigMap 是一种 API 对象,用来将非机密性的数据保存到键值对中。使用时,可以将其用作环境变量、命令行参数或者存储卷中的配置文件。通过使用 ConfigMap 可以将你的配置数据和应用程序代码分开。

2024-06-01 10:23:39 2345

原创 Kubernetes 之 DaemonSet 基本原理

DaemonSet 确保全部(或者某些)节点上运行一个 Pod 的副本。当有节点加入集群时, 也会为他们新增一个 Pod。当有节点从集群移除时,这些 Pod 也会被回收。删除 DaemonSet 将会删除它创建的所有 Pod。它最经常被使用在收集集群日志的用途上。

2024-05-31 13:24:44 416

原创 Kubernetes StatefulSet 扩缩容与升级

滚动更新将会以倒叙的方式逐次更新 Pod , 同时我们也可以用partition字段来分割更新部分与不更新部分。假设partition为2,副本数为3,则副本索引为 0,1,2。即更新部分为副本数(3-1)至 2,索引 2 更新;不更新部分索引 0 和 1。OnDelete 指的是不直接更新 Pod,只有在 Pod 被删除后才会被更新。

2024-05-30 19:21:27 303

原创 Kubernetes 之 StatefulSet基本原理

StatefulSet 是一个有状态的集合,不同于一般 Pod 的一致性,不同的 Stateful Set 创建的 Pod 之间存在数据上的差异。同时它们是有序的,这样它们在故障或删除后恢复,自身的名字也不会变化,以达到维护整个分布式系统的目的。例如在 Redis 主从集群中,我们不能用 Pod 模式来部署,以为主从容器之间的配置信息是不一样的,这时候我们就需要 Stateful Set 来实现我们的需求。

2024-05-30 09:48:26 430

原创 Kubernetes 硬盘持久化之 StorageClass

StorageClass 为管理员提供了描述存储"类"的方法。不同的类型可能会映射到不同的服务质量等级或备份策略,或是由集群管理员制定的任意策略。这个类的概念在其他存储系统中有时被称为"配置文件"。每个 StorageClass 都包含parameters和字段, 这些字段会在 StorageClass 需要动态制备 PersistentVolume 时会使用到。

2024-05-29 09:55:40 1228

原创 Kubernetes 硬盘持久化之 PV 和 PVC

持久卷申领(PersistentVolumeClaim,PVC)表达的是用户对存储的请求。概念上与 Pod 类似。Pod 会耗用节点资源,而 PVC 申领会耗用 PV 资源。Pod 可以请求特定数量的资源(CPU 和内存)。同样 PVC 申领也可以请求特定的大小和访问模式。

2024-05-28 20:18:18 826

原创 Kubernetes 硬盘持久化之 NFS 使用

NFS 全称是 Network File System (网络文件系统),即通过网络协议挂载一块远端的逻辑盘。

2024-05-27 21:21:52 259

原创 基于 Debian 部署 NFS 及其 NFS 配置

安装 NFS 软件包创建一个目录,通过 NFS 服务器共享文件和文件夹由于该文件夹将会被共享给客户端中的任何用户使用,因此权限设置为 nobody 用户和 nogroup 组使用户共享文件夹具有足够的读写权限,我们一般将权限设置成 755编辑 /etc/exports 配置文件编辑完。

2024-05-27 14:29:34 963

原创 MongoDB 单点 Docker 启动及其持久化配置

【代码】MongoDB 单点 Docker 启动及其持久化配置。

2024-05-26 21:44:22 622

原创 Kubernetes 之硬盘持久化和 EmptyDir 与 HostPath 挂载类型

EmptyDir 是 Pod 多容器之间共享的临时性沟通目录,它会随着 Pod 的删除而删除。它通常只是用来多容器共享数据之用。kind: Podmetadata:spec:volumes:emptyDir:/ # exitHostPath 只是将 Pod 中容器的目录映射到其所在的工作节点上,Pod 被删除后,该目录依旧存在于工作节点上。但是当恢复Pod节点的时候,它不一定存在于原来的工作节点上,所以这种挂在方式很不常用。

2024-05-26 21:42:32 469

原创 Kubernetes Service 之 ExternalName

ExternalName 用来定义在不同的命名空间想要引用其它命名空间 Service 的别名,使得本空间 Service 名字在本空间更有区分度。

2024-05-25 21:27:06 464

原创 Kubernetes Service 之原理与 ClusterIP 和 NodePort 用法

在 Kubernetes 中,由于Pod 是有生命周期的,如果 Pod 重启它的 IP 可能会发生变化以及升级的时候会重建 Pod,我们需要 Service 服务去动态的关联这些 Pod 的 IP 和端口,从而使我们前端用户访问不受后端变更的干扰。

2024-05-25 09:09:03 1372

原创 Kubernetes Deployment 之版本回退和灰度(金丝雀)发布

在版本发布的过程中,可能升级的版本存在问题,那么就需要版本回退。查看指定 Deployment 版本历史回退至第一个发布的版本。

2024-05-24 10:40:47 450

原创 Kubernetes Deployment 之扩缩容与滚动更新

扩缩容非常简单,我们可以直接调整 replica 副本数目,然后指定进行动态更新。下面将动态改为 1 个 Pod 和 3 个 Pod 的操作。

2024-05-24 09:01:14 251

原创 Kubernetes 之 Deployment

Deployment 是 Kubernetes 中最常用资源之一,为 ReplicaSet 和 Pod 的创建提供了一种声明式的定义方法。Kubernetes 通过定义一个Deployment 控制器会创建一个新的 ReplicaSet 资源,通过 ReplicaSet 资源创建对应 Pod 的副本数。同时,如果我们删除 Deployment 控制器,也会删除 Deployment 控制器下对应的 ReplicaSet 控制器和 Pod 副本,这也是声明式定义的一个特点。

2024-05-23 15:17:44 489

原创 Kubernetes 之 ReplicaSet

ReplicaSet 是 Kubernetes 中的一种副本控制器,其主要作用是控制其管理的 Pod 的预设副本数量。它会持续监听这些 Pod 的运行状态,在Pod发生故障时执行重启策略,当 Pod 数量减少时会重新启动新的 Pod 副本。但官方推荐不要直接使用 ReplicaSet,推荐用Deployment 取而代之,Deployment 是 ReplicaSet 的父集。ReplicaSet 无法灵活性升级回退和扩缩容,但 Deployment 支持了这两大功能。

2024-05-23 10:47:36 608

原创 Kubernetes 生命周期之三大探测

在 Kubernetes 中 Pod 是最小的计算单元,而一个 Pod 又由多个容器组成,相当于每个容器就是 Pod 的一个进程。容器在运行期间,可能因为某些意外情况致崩溃重启。为了监测容器运行的状态,Kubernetes 提供了三大探测机制和。这三大探测机制可以是容器安全的启动和退出,并平滑的加入网络给应用侧提供服务。

2024-05-22 16:30:28 515

原创 Kubernetes 生命周期之容器钩子

容器钩子是指容器在 Pod 运行过程中的触发事件,它可以用来做一些容器启动前准备和容器停止前准备。PostStart和PreStop。PostStart: 这个钩子在容器启动后立即被执行,但是它不能保证在容器Entrypoint脚本前执行,它们两个没有沟通的参数渠道。同时由于其在 Pod 中上下文是同步的,有可能因为PostStart运行或者挂起时间太长,容器无法达到Running状态Prestop。

2024-05-22 09:46:18 353

原创 Kubernetes Pod 生命周期之初始化容器

Init 容器是一种特殊容器,在 Pod 内的应用容器启动之前运行。Init 容器可以包括一些应用镜像中不存在的实用工具和安装脚本,以用来实现启动前检查依赖服务是否正常并生成初步配置文件。

2024-05-21 16:27:49 495

原创 Kubernetes 之 Pod 生命周期介绍

Pod 从创建到销毁的一整个过程被称为生命周期。在这个生命周期的过程中,Pod 历经初始化容器创建,Pod 启动后钩子事件、启动探测、准备完成探测和存活性探测等多个过程,直至终止前勾子事件停止 Pod。

2024-05-21 15:27:23 251

原创 Kubernetes 之 Pod 常见的状态和重启策略

Kubernetes 之 Pod 常见的状态和重启策略。

2024-05-20 15:46:36 891

原创 Kubernetes 之 Pod 容忍度与节点污点

节点污点taints和 Pod 容忍度是结合使用的。它给了节点选择 Pod 的权利,污点设置了effect参数来选择 Pod,如果 Pod 的容忍度级别不够,那么 Pod 将不会出现在该节点上,反之,则有可能被分配这个节点上。

2024-05-19 11:56:54 1780

原创 Kubernetes 之 Pod 之间的亲和性与反亲和性

Pod 反亲和性是与亲和性完全相反的定义,一旦发现它的约束条件匹配,那么这个 Pod 比与匹配 Pod 在不同的上的工作节点上。它主要可以用来保障不是热点区域和不需要高性能响应但很重要的业务不受干扰。

2024-05-18 10:09:26 514 1

原创 Kubernetes 之 Pod 标签、节点选择器和节点亲和性

我们在创建 Pod 资源的时候,Pod 会根据 Scheduler 进行调度,默认会调度到随机的一个工作节点。如果我们想要将 Pod 调度到指定节点或者调度到一些具有相同特点的 Node 节点,可以使用 Pod 中的nodeName或者字段来指定要调度到的 Node 节点。节点亲和性是 Pod 在调度过程中一系列调度约束规则,主要针对节点选择器的匹配,匹配度越高,则该节点执行该 Pod 的概率就越高。节点亲和性分为硬亲和性和软亲和性,硬亲和性代表必须满足,软亲和性在不满足约束规则的条件上,仍可以随机启动。

2024-05-18 10:08:54 627

原创 Kubernetes 之 Pod 基本原理

Pod是 Kubernetes 中的最小调度单元,k8s是通过定义一个Pod的资源,然后在Pod里面运行容器,容器需要指定一个镜像,这样就可以用来运行具体的服务。一个Pod封装一个容器,也可以封装多个容器。其类似于豌豆荚,容器则是里面的豆子。Pod 里的容器共享存储、网络等。我们可以把整个 pod 看作一台虚拟机,每个容器相当于运行在虚拟机的进程。Pod 是需要被调度到 k8s 集群的工作节点来运行的,具体调度到哪个节点,是根据 k8s scheduler 调度器实现的。

2024-05-18 10:08:23 364

原创 Kubernetes 之 Namespace

Kubernetes 可以构建多个逻辑域进行隔离,它们底层依赖于同一个物理集群, 这些虚拟域被称为命名空间。命名空间 Namespace 是 k8s 顶层级别的资源,可以给不同的管理员、租户、项目环境或项目创建对应的命名空间,例如,可以为 test、development、production 环境分别创建各自的命名空间。

2024-05-18 10:07:50 339

原创 基于 debian 12 利用 kubeadm 部署 k8s 1.29 版本

准备三台debian 12开放root账户允许其远程ssh登录打开将no修改为yes,以允许 root 用户远程登录。执行如下指令安装必备软件关闭三台机器的 swap关闭防火墙三台主机之间设置免密登录先在三台主机上执行ssh-keygen指令,然后一直回车直至结束再在三台虚拟机上/etc/hosts文件末尾加入如下三行解析最后在三台主机上分别执行如下指令修改三台主机内核参数,分别在三台机器上执行如下指令三台主机安装 docker 、containerd 和 crictl$($(&&echo。

2024-05-18 10:07:12 723

原创 Docker 部署 Redis Cluster 集群

为了解决 Redis 高性能高可用的问题,Redis 推出了自带的 Cluster 模式。他通过将一整个集群分成 16384 哈希槽位,再将槽位平均分配到每个主节点上面。同时主节点采用 Redis Replication 主从模式(自带 Sentinel 哨兵机制)防止主节点故障。同时 Redis 作者强烈不建议集群数目大于 1000 台节点,因为通信需要占用很大的带宽。这里可以指定固定的源节点,然后回车输入。指定所有的源节点进行迁移。

2023-06-22 12:27:57 434

原创 Docker 部署 Redis Sentinel 哨兵模式集群

在Redis Replication 主从模式下,Redis 不能在主节点故障的情况下,重新选举新的主节点。而 Redis 哨兵模式就是用来实现这一目的的,从而实现高可用的目标。的局域网,同时 Redis 已经提供了 NAT 模式的解决方案,但是在故障迁移的过程中,其会使用。,当投票数量为 2 的时候,该节点会被认为是主节点。主机名称格式,因为在实验过程中,它会出现指定固定 IP 失效的问题。出来去执行故障迁移,而新的主节点则是根据副本的偏移指针。当主节点下线的时候,哨兵会用 RAFT 算法选出一名。

2023-06-20 11:28:54 708

原创 Docker 方式下的 Redis 主从部署

Redis 除了持久化方案以外,可以改造成一主多从的多实例方式进行部署。这样往 Redis 主节点写入的数据,可以在极短的时间内同步到多个从节点,从而实现数据的多处备份。参数简介masterauthRedis 主从之间通信公共密码Redis 广播 IP,用来指定同步通信的 IPRedis 广播端口,用来指定同步通信的端口replicaof指定 Redis 主节点的 IP 和端口,是从节点链接主节点的必须参数。

2023-06-18 16:56:45 398

原创 Redis 单点 Docker 启动及其持久化配置

则是使用所在系统的文件系统同步时间,一般默认为 30s ,这样就会丢失较多数据;所以这个参数我们尽可能使用默认值。RDB 模式开启后,是按照在满 M 次写操作后且到达间隔时间 N 秒后进行的备份,备份文件名默认为。操作将会导致 Redis 数据库性能变得非常非常慢,失去了这款数据库自身存在意义;其手动执行会导致与自动执行冲突,产生不可控的 bug,所以在这里不做赘述。这样启动所有数据库自动备份文件会保存在容器的。会阻断 Redis 读写,所以一般用。存放备份的AOF文件。首先也是最重要的是配置。

2023-06-15 10:05:22 257

原创 Docker 部署 RabbitMQ 单点和集群

使用 docker 部署 rabbitmq 单点和集群

2023-06-07 09:19:37 328

原创 递归在跳变台阶问题中的运用

递归 Recursion在编程语言中,递归的概念无法用抽象的语言让人一目了然,甚至知道它的意思后,也根本无法理解它为什么名字叫做“递归”。这里我们根据图示,用现实中的一个现象来阐述一下什么叫递归。假设我们在行军打仗中,匍匐着 F、D、C、B、A 这 5 个士兵,F 迷失了自己,不知道自己埋伏在第几个位置。这时他向 D 询问,然后 D 也不知道,再然后向 C ,C 再向 B 询问,最后询问到 A ,A 肯定知道我是第 1 个,然后 B 知道自己是第 2 个,即 C 是第 3 个,D 是第 4 个,F 是第

2022-03-06 09:43:37 136

原创 队列数组和链表的实现

队列 Queue队列也是一种约束型数据结构,它跟栈的功能正好相反,遵循“先进先出,后进后出”原则,从它的名字我们就可以看出来。队列的应用队列在计算机中是一种朴素直观的设计应用,在各个领域都可以看见其身影。比如我们的 HTTP 请求,在服务器资源不足的情况下,它会天然的形成队列,先进先访问;再比如多线程软件,众多线程在资源不足的情况下也是按照队列的方式等待的。队列的实现数组的实现from typing import Optionalclass ArrayQueue: def __i

2022-03-05 10:45:25 150

docker-19.03.5.tar.gz

Docker19.03.5离线安装包是基于CentOS 7.6以上系统的。经过测试,该文件可以在未执行yum update的最小CentOS系统上成功安装并运行。

2019-12-01

空空如也

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

TA关注的人

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