目录

1  秦淮八艳

2 人生幸事(volume)

3 秦淮风流(persistent volume / persistent volumn claim)

4 下回分解


1  秦淮八艳

        南京,一座香艳的城市;秦淮,则在这段香艳中不急不缓流淌了千年。

        去年年底,因为公司招聘去了南京,于是又鬼使神差去了秦淮。

        依然记得,那是一个周五的清晨,寒风刺骨。因为是工作日,又是旅游淡季,整个秦淮河显得落寞而阴冷。我一个人信步走在深深浅浅的石道上,终于在一个不起眼的小门楼前停下,静静买了票,拾级入园。

        这个不起眼的二层门楼,就是传说李香君的香闺。李香君,秦淮八艳之首,青楼出身,才艺双绝,跟才子侯方域一见钟情。侯想为其赎身,无奈李名气太大,赎身费巨贵,正苦于无计可施之时,阮大铖倾囊相助。才子佳人再度重逢,侯方域赠与李香君定情信物桃花扇。没想到阮大铖后期陷害侯方域,逼迫其投奔史可法,同时又唆使皇帝宠臣田仰抢亲李香君,性情刚烈的李香君誓死不从,从香闺二楼直接跳下,然后一头撞向门柱,鲜血顷刻迸溅在桃花扇之上......

        时间尚早,整个香闺空无一人。我穿过天井,抬腿迈进前厅。

        前厅是秦淮八艳的生平介绍,场景布局简单、粉红色的色调。空气里弥漫着淡淡的檀香,耳边萦绕着林海的《琵琶语》,曲调缱绻,神思荡漾。一脚门里,一脚门外,两个世界,让我这个外乡人一下子从冬天的僵硬走向了春天的松软。

        秦淮八艳:顾横波、董小宛、卞玉京、李香君、寇白门、马湘兰、陈圆圆、柳如是。每个人都有不同的人生境遇,无奈红颜多薄命,大多香消玉损。

        本节我们以柳如是为主线,介绍她跟钱谦益的感情纠葛。这里需要首先声明一下,以下写的内容搞不好会有一些不堪,会有十八岁禁的内容,考虑到现在程序员的低龄化,如果你未满十八岁,请在父母陪同下一起观看。


2 人生幸事(volume)

        中国人有四大幸事。久旱逢甘雨、他乡遇故知、洞房花烛夜、金榜题名时。而今天,是刚中探花不久、年仅 28 岁的钱谦益纳妾的日子,新人王氏并非本地人,而是江南名门望族的千金,温柔体贴,娇羞可爱。婚礼很是热闹隆重,同乡友人推杯换盏,觥筹交错。原配陈氏是本地大户陈财主之女,也是大家闺秀,虽不甚开心,但碍于情面也只能哑巴吃黄连,强颜欢笑。

        繁华散尽、灯影摇曳,钱谦益望着新人,心潮澎湃,解衣宽带之后,两人极尽缠绵之事、尽享鱼水之欢......

        上面的事情你可以尽情地回味,但是下面我要讲技术了。如果你硬了,我只能表示抱歉。

        如果把房事看作挂载(mount),那么挂载的主动方就是 pod(钱谦益),挂载的被动方则是 volume(原配陈氏和小妾王氏),她们两人出身不同,陈氏是本地节点(hostPath),而王氏则是远程节点(比如 nfs)。

        钱谦益 pod 定义如下:

apiVersion: v1

kind: Pod

metadata:

name: qianqianyi

spec:

    containers:

    -  name: qianqianyi

        image: busybox

        imagePullPolicy: IfNotPresent

        command: [ "/bin/sh", "-c", "sleep 3600" ]

        volumeMounts:

        - name: chenshi

        mountPath: /home/chenshi

        - name: wangshi

        mountPath: /home/wangshi

volumes:

- name: chenshi

    hostPath:

        path: /local/chencaizhu

- name: wangshi

    nfs:

        server: 10.110.101.106

        path: /data/nfs/gitlab


3 秦淮风流(pv / pvc)

        光阴好像流水一般从指缝间悄然滑过,转眼十几年过去,钱谦益也从而立之年到了知天命的年纪。虽然这十几年期间又纳一小妾朱氏,但生活却波澜不惊,日子寡淡如水。渐渐地,钱谦益心底涌起了阵阵惆怅。

        一日,好友开八思来见,两人相谈甚欢,酒过三巡,菜过五味,钱谦益突然望着满园春色,低头不语。开八思关切问道:“兄长,为何兴致索然?”钱谦益沉默半响道:“人生天地之间,若白驹之过隙,忽然而已”。之后,便又陷入了沉默。

        开八思善解人意,顷刻间便读懂了好友的心思。于是会心一笑道:“兄台可知,秦淮河畔又新开了一家青楼,听说艺女都美丽得不可方物,明天我陪兄台前往观瞻如何?”

        钱谦益听罢,微微一皱眉。“我们是读书人,这样行事是否不妥?”

        开八思哈哈大笑道:“兄台,雅到极致不风流。我们读书目的何在,不就是为了黄金屋和颜如玉吗?如今美景美人尽在眼前,错过才是罪过”。

        钱谦益听罢,心头一动,思想左右摇摆不定,继而陷入沉思。

        开八思见状知道好友已茅塞顿开,再劝反而不雅,于是告辞退出。

        次日,开八思早早便来府上拜访,钱谦益心知朋友好意,忸怩反而矫情,反而招人笑话,索性慨然应允。两人泛舟秦淮,径直向青楼而去。

        远远地便看到青楼门前车水马龙,人声鼎沸,二人弃船登岸,随着人流穿天井、过前厅、到大堂二楼雅间落座。没过多久,门帘一挑,一婀娜妇人袅然而至,虽上了一点年纪,但依旧风韵犹存、双目含笑,眉眼尽是风流。开八思见状立即起身相迎,拱手作揖完毕后向钱谦益引荐,此人便是徐拂。徐拂跟钱打过招呼,又跟开八思寒暄一阵,转身告辞。

        钱谦益怔怔望着徐拂渐行渐远,终于消失在楼角,不由轻轻叹了一口气。

        “兄台因何叹气?”开八思不解道。

        “此女风华绝代,却落得坠落红尘,着实可惜。”钱谦益不禁黯然。

        开八思闻言,也跟着叹了一口气道:“世事难料,人命天定,红颜佳人,命运多舛,也是无可奈何之事。徐拂虽早入红尘,阅尽人情冷暖,但如今也算衣食无忧,相比而言,多数红尘女的下场却悲惨得多。这对她而言,倒也算一种福报”。

        钱谦益闻言,微微点头称是。

        “兄台,我们此行目的是寻欢,何必多愁善感、自寻烦恼。来,我敬你,干......”,开八思不愧是情场高手,控场能力一流,举杯间又将情绪推向顶点。正在此时,小二进来添菜倒水,顺便将花名册交给开八思。开八思边查阅花名册,边问钱谦益道:“兄台今日有何偏好?选择何种节目?”

        钱谦益几杯酒水下肚,早已意乱情迷,卸下心中伪装,轻佻说道:“今日钟情燕瘦,不喜环肥。至于节目吗?呵呵,当与兄弟共戏之。”开八思听罢,哈哈一笑,与小二耳语几句。小二闻言,会心一笑,旋即离开,不多时进来一位体态轻盈的美丽女子,在二人之间坐下。三人推杯换盏,酒酣脑热,耳鬓厮磨,好不快活......

        上面的事情你可以尽情地回味,但是下面我要讲技术了。如果你硬了,我只能表示抱歉。

        上文把 volume 比作钱谦益家室,这里便把 pv 比作“漂亮”红尘女子。volume 跟 persistent volume 区别在于:pod 跟 volume 是非常明确的强绑定关系(即:钱谦益非常清楚跟哪个女子结婚),volume 在 pod 文件中作为附属品而存在,我们无法单独创建 volume,因为它并不是 k8s 的资源对象;与之相反的是,pod 跟 persistent volume 并非明确的强绑定关系,pod 事先并不知道 pv 具体指的是谁,两者之间是通过 pvc 动态关联在一起的。即:钱谦益(pod)指定择偶标准(pvc),然后开八思(k8s)会根据择偶标准(pvc )寻找合适的红尘女 (pv),我们可以单独创建 pv,因为它是 k8s 的资源对象。

        pv 生命周期有 4 个阶段:provision(供应)-> available(可用)-> binding (绑定)-> released(释放)。

        pv 定义里有三项非常重要的内容,即:容量大小、访问模式和回收策略。

        容量大小:类比红尘女的罩杯。

        访问模式:类比玩弄红尘女的方式。有三种:ReadWriteOnce(可读可写,但只支持被单个 pod 挂载)、ReadOnlyMany(以只读方式被多个 pod 挂载)、ReadWriteMany(以读写方式被多个 pod 挂载)

        回收策略:类比红尘女的结局。有如下三种:重新接客(即:Recycle。 k8s 将 pv 中的数据进行删除,然后将 pv 的生命周期状态修改为 available,处于 available 状态的 pv 又可以被 pvc 选中,进而继续服务某个 pod );人死埋葬(即:Delete。k8s 自动删除 pv 和其内部数据);保留(即:Retain。k8s 不做任何操作,等用户手动处理 pv 内的数据,处理完,可以选择手动删除 pv)。

        徐拂 pv 定义如下:

apiVersion: v1

kind: PersistentVolume

metadata:

    name: xufu

spec:

    capacity:

        storage: 100Gi

    volumeMode: Filesystem

    accessModes:

    -  ReadWriteOnce

    persistentVolumeReclaimPolicy: Retain

    nfs:

        server: 10.110.101.106

        path: /qinglou

        讲完了 pv,下面简单讲一下 pvc。pvc 也是一种 k8s 资源对象,可被单独创建。它是 pod 选择 pv 的声明。pod 不会跟 pv 直接关联,只会通过 pvc 让 k8s 自动选择合适的 pv 进行关联。pvc 的定义中主要声明两项内容:pv 容量和访问模式,即 pvc 只会考虑 pv 的罩杯和玩弄方式,根本不会关注 pv 以后的命运。

        钱谦益 pvc 定义如下:

apiVersion: v1

kind: PersistentVolumeClaim

metadata:

name: qianqianyi-claim

spec:

    accessModes:

    - ReadWriteOnce

    resources:

        requests:

            storage: 5Gi

    volumeMode: Filesystem

        很多时候 pvc 和 pv 的创建并不是一个人。pv 由专门的存储人员创建,pvc 往往由 pod 的创建者创建。可以对比青楼的例子自行脑补。


4 下回分解

        美好的时光总是如此短暂,一转眼几个月过去了......

        要想知道钱谦益怎么在烟柳繁华地、温柔富贵乡偶遇柳如是,两人又是如何情投意合,且听下回分解。