转载:原文链接

认识k8s之后,他的操作模式对我来说是一种很不错的体验。他提供了更接近现实世界的面向对象接口。

什么是k8s?

Kubernetes(K8s)是一种开源容器编排平台,用于自动化部署、扩展和管理容器化应用程序。它简化了容器化应用的管理,提供自动化、可扩展的部署,并允许高效管理跨多个主机的容器化应用程序。

在Kubernetes中有许多对象。其中,Deployment创建ReplicaSets,ReplicaSets负责创建Pod。ReplicaSets它们是一组具有相同配置的Pod的集合。Pod是Kubernetes的最小部署单元,可容纳一个或多个容器。ReplicaSets确保指定数量的Pods运行,如果失败则重新创建,而Deployment则管理和配置ReplicaSets,确保应用程序可靠地运行。

我要如何操作他?

在使用中,我需要关心Deployment如何创建ReplicaSets吗?我需要关心ReplicaSets如何创建Pod吗?实际上我并不需要,我对此一无所知。我只需要对他们的spec进行定义即可。什么意思呢?我只需要告诉系统(控制面)每个对象应该是什么(或者定义对象的模板),例如需要几个pod,升级策略是什么(注意:不是如何升级,而是升级应该确保什么?例如确保有3个可用的pod)。控制面会监控每个对象的情况,并尽可能的让他们的实际情况接近我定义的情况。至于他们是怎么做的我完全不需要理会。

声明式编程

没错,上面的体验正是我想说的:声明式编程。与过程式编程不同,声明式编程只用告诉机器我需要怎样的东西,而不需要告诉他我要怎么做。例如SQL,我只声明了我要怎样的数据,却不用告诉机器如何查找,不需要告诉他走哪个索引或者全表搜索。

如何在实务中使用声明式编程

我们可以做一个事件处理系统,前端发送来请求,记录到事件里面去。事件处理系统收到事件,则进行处理,再反馈给前端。前端的请求是精准的一个大的需求,而不是多次的分步的请求。事件处理系统更像是一个大的状态机,根据前端发来的各种请求,改变各种状态,以达到需求。

例如,我要实现当用户的密码被修改(包括用户修改和管理员修改),然后发送短信通知用户的请求。

首先,前端发送用户修改请求,状态机收到信息,修改密码,更新密码修改时间。此时系统达到了第一个状态。

很快,系统轮询发现,密码修改通知的事件早于密码最新修改的事件,就触发密码修改通知,然后更新密码修改通知的事件为当前时间(晚于密码最新修改时间)。

再次,前端发送管理员修改请求,状态机同样修改密码,更新修改密码时间。随后,系统轮询再次发现密码修改通知的事件早于密码最新修改的事件,就触发密码修改通知,然后更新密码修改通知的事件为当前时间(晚于密码最新修改时间)。

好了,有人可能就会问了。我搞这么复杂,还要轮询维护状态,为什么不直接修改密码请求的时候,一并发送通知呢?我给出的例子实际上是简化的,只有两个修改密码的方式。如果其他情况,我要100个,1000个修改方式呢?甚至我允许直接改数据库修改呢?是不是就没办法及时响应了。

当然,问题也很明显了。需要许多CPU算力和内存来监控数据变化,轮询各种事件。即便什么都没做,监控与轮询依然存在,这将非常消耗资源。

希望在不久的将来,资源不再成为问题。

K8s和声明式编程的更多相关文章

  1. k8s对象类资源格式

    k8s api仅接受及响应json格式的数据,同时,为了便于使用,它也允许用户提供yaml格式的post对象,但apiserver需要事先自行将其转换为json格式后方能提交.每个资源通常仅接受并返回 ...

  2. K8s控制器

    K8s控制器 POD分类 #自主式pod:退出后,不会被创建 #控制器管理的pod:在控制器的生命周期内,始终位置pod的副本数 控制器类型 ReplicationController和Replica ...

  3. 【Kubernetes】K8S网络方案--最近在看的

    K8S网络-最近在看的 Create a Minikube cluster - Kubernetes Kubernetes Documentation - Kubernetes Kubernetes ...

  4. 【Kubernetes】K8S 网络隔离 方案

    参考资料: K8S-网络隔离参考 OpenContrail is an open source network virtualization platform for the cloud. – Kub ...

  5. k8s入门系列之guestbook快速部署

    k8s集群以及一些扩展插件已经安装完毕,本篇文章介绍一下如何在k8s集群上快速部署guestbook应用. •实验环境为集群:master(1)+node(4),详细内容参考<k8s入门系列之集 ...

  6. k8s volume

        只有nfs和rbd的,本人翻译确实很渣         在容器中磁盘文件寿命是短暂的,当在容器中运行一些重要程序时,这会产生一些问题. 首先,当一个容器崩溃后,kubelet将重新启动该容器, ...

  7. k8s pv

    这个文档描述当前在k8s中PersistentVolumes的使用. 我们建议和volume一起进行了解   Introduction     管理存储和管理计算是截然不同的问题. 持久存储子系统对用 ...

  8. k8s DNS 服务发现的一个坑

    按照官当文档,以及大家的实践进行k8s dns 服务发现搭建还是比较简单的,但是会有一个因为系统默认dns 配置造成的一个问题 1. linux  默认dns 配置在 /etc/resolv.conf ...

  9. k8s dns 服务安装配置说明

    1. 提前条件 安装k8s 集群 2.  dns  安装配置 安装方式: 使用controller  service controller  脚本: 基于官方改动 apiVersion: v1 kin ...

  10. 第四十四章 微服务CICD(6)- gitlab + jenkins + docker + k8s

    总体流程: 在开发机开发代码后提交到gitlab 之后通过webhook插件触发jenkins进行构建,jenkins将代码打成docker镜像,push到docker-registry 之后将在k8 ...

随机推荐

  1. ConcurrentHashMap底层源码分析

    ConcurrentHashMap源码底层分析 1.ConcurrentHashMap初始化 jdk8之后,ConcurrentHashMap采用了HashMap的底层结构(数据,链表,红黑树),在此 ...

  2. MASA MAUI iOS 文件下载与断点续传

    @ 目录 背景 介绍 方案及代码 1.新建MAUI项目 2.建立NSUrlSession会话连接 3.使用NSUrlSessionDownloadTask 创建下载任务 4.DidWriteData ...

  3. tomcat环境

    tomcat环境部署时需要先部署JDK工具: JDK环境: #将上传的jdk包进行解压/并移至Java目录下: tar xf jdk1.8.0_131.tar.gz mkdir -p /usr/jav ...

  4. ACAM 学习笔记 | 附 YbtOJ 全部题解

    怎么有人现在才学 ACAM 呢. 好像比 SAM 简单挺多啊,也不记得当时是哪里看不懂. AC 自动机() 自动 AC 机(✘) 概述 ACAM(Aho–Corasick Automaton),是用来 ...

  5. 我与Vue.js 2.x 的七年之痒

    --过去日子的回顾(这是个副标题) --其实这是篇广告软文(这是个副副标题) 以下是一些牢骚和感悟,不感兴趣的可以滑倒最下面,嘻嘻. 每每回忆起从前,就感觉时间飞逝,真切的感受到了那种课本中描述的白驹 ...

  6. ASP.NET CORE MVC的一些说明

    1.ASP.NET CORE MVC 是微软公司的Web应用开发框架,结合了MVC架构的高效.简洁等优秀思想并融合了.NET的灵活性. 2.ASP.NET诞生于2002年,当时微软想保持桌面应用程序的 ...

  7. Java 7之基础 - 强引用、弱引用、软引用、虚引用(转)

    载自:http://blog.csdn.net/mazhimazh/article/details/19752475 1.强引用(StrongReference) 强引用是使用最普遍的引用.如果一个对 ...

  8. (Good topic)卡牌分组(3.27leetcode每日打卡)

    给定一副牌,每张牌上都写着一个整数. 此时,你需要选定一个数字 X,使我们可以将整副牌按下述规则分成 1 组或更多组:  每组都有 X 张牌. 组内所有的牌上都写着相同的整数. 仅当你可选的 X &g ...

  9. java中Calendar日历类型常见方法

    Calendar是Java中常用的时间处理工具之一,它提供了很多日历类型常见方法,下面是一些常用的方法及对应的代码和运行结果. 1. 如何创建 Calendar 日历对象 Calendar 是一个抽象 ...

  10. AutoCAD ObjectARX 二次开发(2020版)--4,使用ARX向导创建CAD二次开发项目(编程框架)--

    手动创建ObjectARX应用程序非常麻烦,在此步骤中,将介绍ObjectARX向导. 在这里,我们将使用ObjectARX向导创建我们的ObjectARX应用程序. 本节的程序的需求是,接收CAD用 ...