转载:原文链接

认识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. RCU的简单认识

    RCU RUC是什么? RCU(Read-Copy-Update)是一种用于并发编程的技术,旨在提供高效且无锁(lock-free)的读操作,同时保证数据一致性和并发性. 也就是说他并不需要锁的机制来 ...

  2. Vue源码学习(八):生命周期调用

    好家伙,   Vue源码学习(七):合并生命周期(混入Vue.Mixin) 书接上回,在上一篇中,我们已经实现了合并生命周期 现在,我们要在我们的初始化过程中,注册生命周期 1.项目目录  红框为本篇 ...

  3. ElasticSearch系列——介绍、安装、插件介绍、安装ElasticSearch插件、安装Kibana、安装中文分词器、倒排索引、索引操作、映射管理

    文章目录 ElasticSearch之介绍 一 Elasticsearch产生背景 1.1 大规模数据如何检索 1.2 传统数据库的应对解决方案 1.3 非关系型数据库解决方案 1.4 内存数据库解决 ...

  4. 解决在VS Code中运行有中文字符的Java代码(第三种方式),出现编码 GBK 的不可映射字符 (0x81)

    写代码时,我们不避免的会使用一些中文注释,这些在其他的语言中没有问题.但是在Java的注释里面如果有中文字符,就会报错.即使文件编码是utf-8也无济于事.是因为使用CMD运行java程序的时候,系统 ...

  5. MediaRecorder test

    public class MediaRecorder extends Object java.lang.Object    ↳ android.media.MediaRecorder Class Ov ...

  6. docker入门加实战—docker常见命令

    docker入门加实战-docker常见命令 在介绍命令之前,先用一副图形象的展示一下docker的命令: 常见命令 docker的常见命令和文档地址如下表: 命令 说明 文档地址 docker pu ...

  7. 每天5分钟复习OpenStack(三)

    每天5分钟复习OpenStack(三) 为什么要拉起kvm 虚拟机要熟悉这些操作? 作为一个运维工程师,将来有大量的时间是在制作镜像,镜像的制作就是在kvm虚拟化环境拉起kvm 管理的虚拟机的过程,安 ...

  8. mac os 升级到13后,系统免密失败

    # sudo vim /etc/ssh/ssh_config # 添加以下内容 PubkeyAcceptedKeyTypes +ssh-rsa

  9. 服务器没有开放3306端口 远程访问MySQL数据库方法

    一.前言 ​ 当装有MySQL的服务器为了防止数据库被黑,提高安全性,把3306端口禁止掉,禁止对外访问,我之前写过一篇是借助跳板机的SSH隧道来访问实现安全,这种情况依然需要开放3306端口和使用一 ...

  10. 贪心算法:7-6 Swan学院社团招新

    Swan学院社团招新,招新宣讲会分散在不同时间段,大一新生小花花想知道自己最多能完整的参加多少个招新宣讲会(参加一个招新宣讲会的时候不能中断或离开). [问题说明]这个问题是对几个相互竞争的招新宣讲会 ...