云原生-IaaS专栏
文章平均质量分 95
云原生时代的三驾马车,已经不仅仅是针对IT的技术侧能力表述,还蕴含了业务上云后的研发全生命周期管理含义与研发团队组织思想变革。云原生体系是企业管理模式向互联网模式进化的核心关键技术与管理思想、组织流程的深度融合,必将重新定义企业的开发、交付、运维、运营!
江中散人
在移动前端、微服务后端均有多年研发实施与团队管理经验,当选全球云原生技术基金会CNCF、信通院、华为云牵头组织的全球性云原生专业交流组织创原会2022年度与2023年度年度云原生MVP、2023年度云原生最佳创作奖。2023年新一代集中交易系统与国产集中式DB的软硬件联合调优方案,先后获得创原会2023年第三届“云原生技术先锋实践”奖,以及CNBPA的“最佳云原生行业实践奖”。相关技术博客积累超10年,技术领域涵盖云原生(容器/计算/存储/网络/PaaS/微服务/DevOps)、产品设计、IOS开发、Android开发、Hybrid混合开发等领域
展开
-
【云原生进阶之PaaS中间件】第一章Redis-1.4过期策略
Redis 所有的数据结构都可以设置过期时间,时间一到,就会自动删除。你可以想象 Redis 内部有一个死神,时刻盯着所有设置了过期时间的 key,寿命一到就会立即收割。原创 2023-09-05 21:00:46 · 855 阅读 · 0 评论 -
【云原生进阶之容器】第六章容器网络6.4.1--Flannel组网方案综述
Flannel是 CoreOS 团队针对 Kubernetes 设计的一个覆盖网络(Overlay Network)工具,其目的在于帮助每一个使用 Kuberentes 的 CoreOS 主机拥有一个完整的子网。这次的分享内容将从Flannel的介绍、工作原理及安装和配置三方面来介绍这个工具的使用方法。原创 2023-04-13 18:00:00 · 574 阅读 · 0 评论 -
【云原生进阶之容器】第五章容器运行时5.8--容器热迁移
容器使用 CRIU (Checkpoint Restore in Userspace)技术进行容器的迁移,它是一个 Linux 软件工具,使用此工具,可以冻结正在运行的应用程序,并将其导出为磁盘上的文件集合。然后,可以使用这些文件来恢复应用程序,恢复之后程序和被冻结的时候状态一致。使用 Checkpoint 和 Restore 功能,将进程组(传统容器从本质上来讲就是系统中的一个或者一组进程)冻结与恢复。原创 2023-04-12 18:00:00 · 625 阅读 · 0 评论 -
【云原生进阶之容器】第五章容器运行时5.7--容器逃逸原理
容器逃逸,是指“流氓”容器尝试突破正常隔离环境限制,借助一些手段获得容器所在的直接宿主机、宿主机上的其他容器或集群内其他主机、其他容器的某种权限下的命令执行能力,进行恶意攻击或执行越权访问的行为。容器逃逸漏洞可能打穿容器节点,甚至整个集群。原创 2023-04-11 18:30:00 · 793 阅读 · 0 评论 -
【云原生进阶之容器】第五章容器运行时5.6--容器运行时之gVisor
gVisor是一款新型容器沙箱解决方案,其能够为容器提供安全的隔离措施,同时继续保持远优于虚拟机的轻量化特性。gVisor能够与Docker及Kubernetes实现集成,从而在生产环境中更轻松地建立起沙箱化容器系统。原创 2023-04-05 18:30:00 · 473 阅读 · 0 评论 -
【云原生进阶之容器】第六章容器网络6.2--K8S网络模型
一个K8S集群的网络通讯,主要涉及以下4个方面的通信:1. 容器与容器之间的直接通信;2. Pod与Pod之间的通信;3. Pod到Service之间的通信;4. 集群外部与内部组件之间的通信。原创 2023-04-07 18:30:00 · 541 阅读 · 4 评论 -
【云原生布道系列】第三篇:“软”饭“硬”吃的计算
援引一段《虚拟化技术发展编年史》中针对虚拟化技术的定义:在计算机科学中,虚拟化技术(Virtualization)是一种资源管理(优化)技术,将计算机的各种物理资源(例如CPU、内存、磁盘空间,以及网络适配器等 I/O 设备)予以抽象、转换,然后呈现出一个可供分割并任意组合为一个或多个(虚拟)计算机的配置环境。虚拟化技术打破了计算机内部硬件实体结构不可分割的物理障碍,使用户能够以更灵活、更精细化的配置方式来使用硬件资源,即现下常提到的硬件变的软件“可定义”了。原创 2023-03-31 18:00:00 · 1019 阅读 · 0 评论 -
【重识云原生】第六章容器基础6.4.12节——IPv4与IPv6双协议栈配置
IPv4/IPv6 双协议栈网络能够将 IPv4 和 IPv6 地址分配给Pod和Service。从 1.21 版本开始,Kubernetes 集群默认启用 IPv4/IPv6 双协议栈网络, 以支持同时分配 IPv4 和 IPv6 地址。原创 2022-12-08 18:00:00 · 1673 阅读 · 0 评论 -
【重识云原生】第六章容器基础6.4.8节—— Network Policy
网络策略(NetworkPolicy)是一种关于 Pod 间及与其他Network Endpoints间所允许的通信规则的规范。NetworkPolicy资源使用 标签 选择 Pod,并定义选定 Pod 所允许的通信规则。网络策略通过网络插件来实现。要使用网络策略,用户必须使用支持 NetworkPolicy 的网络解决方案。默认情况下,Pod间是非隔离的,它们接受任何来源的流量。Pod 可以通过相关的网络策略进行隔离。原创 2022-11-20 18:00:00 · 1343 阅读 · 1 评论 -
【重识云原生】第六章容器基础6.4.9.6节——Service 与 Pod 的DNS
Kubernetes 为 Service 和 Pod 创建 DNS 记录。 你可以使用一致的 DNS 名称而非 IP 地址访问 Service。Kubernetes DNS 除了在集群上调度 DNS Pod 和 Service, 还配置 kubelet 以告知各个容器使用 DNS Service 的 IP 来解析 DNS 名称。集群中定义的每个 Service (包括 DNS 服务器自身)都被赋予一个 DNS 名称。原创 2022-11-18 18:00:00 · 708 阅读 · 0 评论 -
【重识云原生】第六章容器基础6.4.9.5节——Service特性端点切片(Endpoint Slices)
端点切片(EndpointSlices) 是一个新API,它提供了 Endpoint API 可伸缩和可拓展的替代方案。EndpointSlice 会跟踪 Service Pod 的 IP 地址、端口、readiness 和拓扑信息。在Kubernetesv1.19 中,此功能将默认启用:从 EndpointSlice (不是 Endpoint)中读取 kube-proxy。尽管这个更改看起来并不起眼,但实际上它能让大型集群的可伸缩性得到显着提高。原创 2022-11-17 18:00:00 · 1007 阅读 · 0 评论 -
【重识云原生】第六章容器基础6.4.9.4节——Service拓扑感知提示
拓扑感知提示包含客户怎么使用服务端点的建议,从而实现了拓扑感知的路由功能。 这种方法添加了元数据,以启用 EndpointSlice(或 Endpoints)对象的调用者, 这样,访问这些网络端点的请求流量就可以在它的发起点附近就近路由。原创 2022-11-15 18:00:00 · 467 阅读 · 1 评论 -
【重识云原生】第六章容器基础6.4.9.3节——Service拓扑感知
服务拓扑(Service Topology)可以让一个服务基于集群的 Node 拓扑进行流量路由。 例如,一个服务可以指定流量是被优先路由到一个和客户端在同一个 Node 或者在同一可用区域的端点。原创 2022-11-11 18:00:00 · 1038 阅读 · 0 评论 -
【重识云原生】第六章容器基础6.4.9.2节——使用 Service 连接到应用
既然有了一个持续运行、可复制的应用,我们就能够将它暴露到网络上。Kubernetes 假设 Pod 可与其它 Pod 通信,不管它们在哪个主机上。 Kubernetes 给每一个 Pod 分配一个集群私有 IP 地址,所以没必要在 Pod 与 Pod 之间创建连接或将容器的端口映射到主机端口。 这意味着同一个 Pod 内的所有容器能通过 localhost 上的端口互相连通,集群中的所有 Pod 也不需要通过 NAT 转换就能够互相看到。 本文档的剩余部分详述如何在上述网络模型之上运行可靠的服务。原创 2022-11-10 18:00:00 · 490 阅读 · 1 评论 -
【重识云原生】第六章容器基础6.4.11.1节——Ingress综述
Ingress只需一个或者少量的公网IP和LB,即可同时将多个HTTP服务暴露到外网,七层反向代理。 可以简单理解为service的service,它其实就是一组基于域名和URL路径,把用户的请求转发到一个或多个service的规则。原创 2022-11-07 18:00:00 · 1277 阅读 · 0 评论 -
【重识云原生】第六章容器基础6.4.9.1节——Service综述
Service服务也是Kubernetes里的核心资源对象之一,Kubernetes里的每个Service其实就是我们经常提起的微服务架构中的一个微服务,受kube-proxy管理,运行在每个Node上的kube-proxy进程其实就是一个智能的软件负载均衡器,负责把对Service的请求转发到后端的某个Pod实例上,并在内部实现服务的负载均衡与会话保持机制。原创 2022-11-06 18:00:00 · 1033 阅读 · 0 评论 -
【重识云原生】第六章容器基础6.4.10.5节——Statefulset原理剖析
StatefulSet其实就是一种特殊的Deployment,而其独特之处在于,它的每个Pod都被编号了.而且,这个编号会体现在Pod的名字和hostname等标识信息上,这不仅代表了Pod的创建顺序,也是Pod的重要网络标识(即:在整个集群里唯一的、可被的访问身份).有了这个编号后StatefulSet就使用Kubernetes里的两个标准功能:HeadlessService和PV/PVC,实现了对Pod的拓扑状态和存储状态的维护。原创 2022-11-01 18:00:00 · 523 阅读 · 0 评论 -
【重识云原生】第六章容器基础6.4.10.4节——StatefulSet实操案例-使用 StatefulSet 部署Cassandra
本教程描述了如何在 Kubernetes 上运行Apache Cassandra。 数据库 Cassandra 需要永久性存储提供数据持久性(应用状态)。 在此示例中,自定义 Cassandra seed provider 使数据库在接入 Cassandra 集群时能够发现新的 Cassandra 实例。原创 2022-10-31 18:00:00 · 506 阅读 · 0 评论 -
【重识云原生】第六章容器基础6.4.10.3节——StatefulSet实操案例-部署WordPress 和 MySQL
本示例描述了如何通过 Minikube 在 Kubernetes 上安装 WordPress 和 MySQL。 这两个应用都使用 PersistentVolumes 和 PersistentVolumeClaims 保存数据。原创 2022-10-30 18:00:00 · 774 阅读 · 1 评论 -
【重识云原生】第六章容器基础6.4.10.2节——StatefulSet常规操作实操
StatefulSet 旨在与有状态的应用及分布式系统一起使用。本节将通过使用 StatefulSet 部署一个简单的 Web 应用,来演示StatefulSet的常规操作,包括如何创建 StatefulSet,StatefulSet 怎样管理它的 Pod,如何删除 StatefulSet,如何对 StatefulSet 进行扩容/缩容,如何更新一个 StatefulSet 的 Pod。原创 2022-10-29 18:00:00 · 391 阅读 · 0 评论 -
【重识云原生】第六章容器基础6.4.10.1节——StatefulSet概述
StatefulSet 是用来管理有状态应用的工作负载 API 对象。StatefulSet 用来管理某Pod集合的部署和扩缩, 并为这些 Pod 提供持久存储和持久标识符。和Deployment类似, StatefulSet 管理基于相同容器规约的一组 Pod。但和 Deployment 不同的是, StatefulSet 为它们的每个 Pod 维护了一个有粘性的 ID。这些 Pod 是基于相同的规约来创建的, 但是不能相互替换:无论怎么调度,每个 Pod 都有一个永久不变的 ID。原创 2022-10-24 21:03:59 · 905 阅读 · 0 评论 -
【重识云原生】第六章容器基础6.4.7.2节——CronJob
CronJob控制器以Job控制器资源为其管控对象,并借助它管理pod资源对象,Job控制器定义的作业任务在其控制器资源创建之后便会立即执行,但CronJob可以以类似于Linux操作系统的周期性任务作业计划的方式控制其运行时间点及重复运行的方式。也就是说,CronJob可以在特定的时间点(反复的)去运行job任务。原创 2022-10-20 18:00:00 · 1052 阅读 · 0 评论 -
【重识云原生】第六章容器基础6.4.7.1节——K8S Job组件
Job 负责批量处理短暂的一次性任务 (short lived one-off tasks),即仅执行一次的任务,它保证批处理任务的一个或多个 Pod 成功结束。容器中的进程在正常运行结束后不会对其进行重启,而是将Pod对象置于"Completed"(完成)状态,若容器中的进程因错误而终止,则需要按照重启策略配置确定是否重启,未运行完成的Pod对象因其所在的节点故障而意外终止后会被调度。原创 2022-10-16 14:11:40 · 1235 阅读 · 0 评论 -
【重识云原生】第六章容器基础6.4.6节——Daemonset
Deployment是 Kubernetes 中用于处理无状态服务的资源,而StatefulSet是用于支持有状态服务的资源,这两种不同的资源从状态的角度对服务进行了划分,而 DaemonSet 从不同的维度解决了集群中的问题 — 如何同时在集群中的所有节点上提供基础服务和守护进程。原创 2022-10-12 18:00:00 · 659 阅读 · 0 评论 -
【重识云原生】第六章容器基础6.4.5.3节——Deployment实现原理解析
DeploymentController作为管理 Deployment 资源的控制器,会在启动时通过Informer监听三种不同资源的通知,Pod、ReplicaSet 和 Deployment,这三种资源的变动都会触发DeploymentController中的回调。原创 2022-10-10 18:00:00 · 778 阅读 · 1 评论 -
【重识云原生】第六章容器基础6.4.5.2节——Deployment配置详细说明
在所有的 Kubernetes 配置中,Deployment 也需要apiVersion,kind和metadata这些配置项。本节将介绍配置文件的通用使用说明,包括查看/部署应用、配置容器,和使用 kubeclt 管理资源文档,Deployment 也需要.specsection.原创 2022-10-09 18:00:00 · 1068 阅读 · 0 评论 -
【重识云原生】第六章容器基础6.4.5.1节——Deployment概述
k8s在V1.2版本开始,引入了deployment控制器,值得一提的是,这种控制器并不直接管理pod,而是通过管理replicaset来间接管理pod,即:deployment管理replicaset,replicaset管理pod。所以deployment比replicaset的功能更强大。Deployment在内部使用了ReplicaSet实现编排pod功能,当创建一个Deployment时,ReplicaSet资源会随之创建,ReplicaSet是新一代的ReplicationController原创 2022-10-08 10:31:20 · 798 阅读 · 0 评论 -
【重识云原生】第六章容器6.4.4节——ReplicaSet组件
ReplicaSet(简称RS)是Pod控制器类型的一种实现,用于确保由其管控的Pod对象副本数在任一时刻都能精确满足期望的数量。Kubernetes中还有一个类似功能的控制器:Replication Controller。ReplicaSet是Replication Controller的下一代副本控制器,目前两者只在标签选择器支持的查找方式有区别,ReplicaSet支持等式查找与集合查找两种方式,Replication Controller只支持等式查找。原创 2022-10-02 10:58:10 · 852 阅读 · 0 评论 -
【重识云原生】第六章容器6.4.3节——ReplicationController
Replication Controller简称RC,它能够保证Pod持续运行,并且在任何时候都有指定数量的Pod副本,在此基础上提供一些高级特性。ReplicationController是一种Kubernetes资源对象,也是一类控制器,可确保它的pod始终保持运行状态。如果pod因任何原因消失(例如节点从集群中消失或由于该pod已从节点中逐出),则ReplicationController会注意到缺少了pod并创建替代pod。原创 2022-09-30 18:30:00 · 516 阅读 · 0 评论 -
【重识云原生】第六章容器6.4.2.3节——Pod使用(下)
接上节,本节继续介绍Pod的详细使用原创 2022-09-29 18:30:00 · 534 阅读 · 0 评论 -
【重识云原生】第六章容器6.4.2.2节——Pod使用(上)
接下来两篇将详细讲述Pod的常规使用原创 2022-09-28 18:30:00 · 830 阅读 · 0 评论 -
【重识云原生】第六章容器6.4.2.1节——pod详解
Pod是Kubernetes应用程序的最基本执行单元—是你创建或部署Kubernetes对象模型中的最小和最简单的单元。 Pod表示在集群上运行的进程。Pod封装了应用程序的容器(或者在某些情况下是多个容器)、存储资源、唯一的网络标识(IP地址)以及控制容器应该如何运行的选项。 Pod表示一个部署单元:Kubernetes中的应用程序的单个实例,该实例可能由单个容器或少量紧密耦合并共享资源的容器组成。Docker是Kubernetes Pod中最常见的容器,但Pods也支持其他容器。原创 2022-09-27 19:58:26 · 1285 阅读 · 0 评论 -
【重识云原生】第六章容器6.4.1节——K8S资源对象总览
本节为Kubernetes 主要资源对象索引篇,接下来将分节介绍原创 2022-09-27 19:30:07 · 482 阅读 · 0 评论 -
【云原生布道系列】第二篇:云原生时代领域解决方案专家的价值
在当今移动互联网的下半场、云原生的上半场,全社会行业经过互联网技术的洗礼,不论前端还是后端,纯IT技术的稀缺性优势越来越小,各行各业急缺的都是能将IT技术能力融合自身业务的方案落地能力,若能最终形成某一领域的整体产品级解决方案甚至能一跃成为行业龙头,这类人才才是当今最稀缺的精英级资源,这有一个专业称谓——某某领域解决方案专家。原创 2022-09-25 12:06:51 · 1026 阅读 · 0 评论 -
【重识云原生】第六章容器6.3.8节——kube-proxy
kube-proxy是Kubernetes的核心组件,部署在每个Node节点上,它是实现Kubernetes Service的通信与负载均衡机制的重要组件;kube-proxy负责为Pod创建代理服务,从apiserver获取所有server信息,并根据server信息创建代理服务,实现server到Pod的请求路由和转发,从而实现K8s层级的虚拟转发网络。原创 2022-09-24 18:00:00 · 278 阅读 · 0 评论 -
【重识云原生】第六章容器6.3.7节——命令行工具kubectl
kubectl 是 Kubernetes 的命令行工具(CLI),是 Kubernetes 用户和管理员必备的管理工具。kubectl安装在k8s的master节点,kubectl在$HOME/.kube目录中查找一个名为config的文件, 你可以通过设置Kubeconfig环境变量或设置--kubeconfig来指定其他的kubeconfig文件。kubectl通过与apiserver交互可以实现对k8s集群中各种资源的增删改查。原创 2022-09-23 18:00:00 · 398 阅读 · 0 评论 -
【重识云原生】第六章容器6.3.6节——kubelet组件
Kubelet组件运行在Node节点上,维持运行中的Pods以及提供kuberntes运行时环境,其主要功能就是定时从某个地方获取节点上pod/container的期望状态(运行什么容器、运行的副本数量、网络或者存储如何配置等等),并调用对应的容器平台接口达到这个状态。每个Node节点上都运行一个 Kubelet 服务进程,默认监听 10250 端口,接收并执行 Master 发来的指令,管理 Pod 及 Pod 中的容器。原创 2022-09-22 18:30:00 · 849 阅读 · 0 评论 -
【重识云原生】第六章容器6.3.5节——Controller Manager概述
Controller Manager作为K8S集群内部的管理控制中心,负责集群内的Node、Pod副本、服务端点(Endpoint)、命名空间(Namespace)、服务账号(ServiceAccount)、资源定额(ResourceQuota)的管理,当某个Node意外宕机时,Controller Manager会及时发现并执行自动化修复流程,确保集群始终处于预期的工作状态。原创 2022-09-21 19:00:00 · 493 阅读 · 0 评论 -
【重识云原生】第六章容器6.3.4节——etcd组件
etcd是CoreOS基于Raft协议开发的分布式key-value存储系统,可用于服务发现、共享配置以及一致性保障(如数据库选主、分布式锁等),授权协议为Apache。在分布式系统中,如何管理节点间的状态一直是一个难题,etcd像是专门为集群环境的服务发现和注册而涉及,它提供了数据TTL失效、数据改变监视、多值、目录监听、分布式锁原子操作等功能,可以方便的跟踪并管理集群节点的状态。原创 2022-09-20 18:30:00 · 830 阅读 · 3 评论 -
【重识云原生】第六章容器6.3.2节——API Server组件
kube-apiserver 是 Kubernetes 最重要的核心组件之一,是所有服务访问的统一入口(所有请求的统一的入口),并提供认证、授权、访问控制、API 注册和发现等能力,同时也是是 Kubernetes Cluster 的前端接口,各种客户端工具(CLI 或 UI)以及 Kubernetes 其他组件可以通过它管理 Cluster 的各种资源。原创 2022-09-19 19:16:19 · 1569 阅读 · 0 评论