實(shí)戰(zhàn)篇:使用rook在k8s上搭建ceph集群

寫(xiě)在開(kāi)篇

上一次背稼,我發(fā)了一篇:《理論篇:讓我們一起魯克魯克——rook(開(kāi)源存儲(chǔ)編排)》蟹肘。這次帘腹,來(lái)一篇實(shí)戰(zhàn)阳欲,使用rook在k8s上把ceph集群搞起來(lái)球化。后續(xù)瓦糟,還會(huì)陸續(xù)分享如何對(duì)接k8s(作為k8s的后端存儲(chǔ))菩浙、以及分享一些在生產(chǎn)上的實(shí)踐經(jīng)驗(yàn)。

環(huán)境規(guī)劃

主機(jī)名 IP 角色 數(shù)據(jù)磁盤(pán)
k8s-a-master 192.168.11.10 k8s master
k8s-a-node01 192.168.11.11 k8s worker考余、ceph osd 1個(gè)1TB硬盤(pán)
k8s-a-node02 192.168.11.12 k8s worker楚堤、ceph osd 1個(gè)1TB硬盤(pán)
k8s-a-node03 192.168.11.13 k8s worker钾军、ceph osd 1個(gè)1TB硬盤(pán)
k8s-a-node04 192.168.11.14 k8s worker、ceph osd 1個(gè)1TB硬盤(pán)
k8s-a-node05 192.168.11.15 k8s worker重罪、ceph osd 1個(gè)1TB硬盤(pán)
k8s-a-node06 192.168.11.16 k8s worker剿配、ceph osd 1個(gè)1TB硬盤(pán)
k8s-a-node07 192.168.11.17 k8s worker呼胚、ceph osd 1個(gè)1TB硬盤(pán)
k8s-a-node08 192.168.11.18 k8s worker蝇更、ceph osd 1個(gè)1TB硬盤(pán)
k8s-a-node09 192.168.11.19 k8s worker年扩、ceph osd 1個(gè)1TB硬盤(pán)
k8s-a-node010 192.168.11.20 k8s worker厨幻、ceph osd 1個(gè)1TB硬盤(pán)

準(zhǔn)備工作

準(zhǔn)備工作在所有worker節(jié)點(diǎn)上做操作腿时。

  1. 數(shù)據(jù)盤(pán)準(zhǔn)備批糟,除了sda是裝了操作系統(tǒng)之外徽鼎,sdb是用于osd盤(pán)的,不能被格式化文件系統(tǒng)
[root@k8s-a-node01 ~]# lsblk 
sda               8:0    0  500G  0 disk 
├─sda1            8:1    0    2G  0 part /boot
└─sda2            8:2    0  498G  0 part 
  ├─centos-root 253:0    0  122G  0 lvm  /
...
sdb               8:16   0 1000G  0 disk  # 就是這塊
  1. 安裝lvm2 如果在裸設(shè)備或未使用的分區(qū)上創(chuàng)建OSD肤频,則Ceph OSD具有對(duì)LVM(邏輯卷管理)的依賴宵荒。
yum install -y lvm2
  1. 加載rbd模塊 Ceph 需要使用帶有 RBD 模塊的 Linux 內(nèi)核报咳。許多 Linux 發(fā)行版都已經(jīng)包含了 RBD 模塊暑刃,但不是所有的發(fā)行版都有岩臣,所以要確認(rèn)架谎。
modprobe rbd
lsmod | grep rbd

Rook 的默認(rèn) RBD 配置僅指定了 layering 特性谷扣,以便與較舊的內(nèi)核保持兼容会涎。如果您的 Kubernetes 節(jié)點(diǎn)運(yùn)行的是 5.4 或更高版本的內(nèi)核瑞凑,您可以選擇啟用其他特性標(biāo)志蛔溃。其中篱蝇,fast-diff 和 object-map 特性尤其有用零截。

  1. 升級(jí)內(nèi)核(可選) 如果你將使用 Ceph 共享文件系統(tǒng)(CephFS)來(lái)創(chuàng)建卷(Volumes)哪工,則 rook 官方建議使用至少 4.17 版本的 Linux 內(nèi)核。如果你使用的內(nèi)核版本低于 4.17稚虎,則請(qǐng)求的 Persistent Volume Claim(PVC)大小將不會(huì)被強(qiáng)制執(zhí)行蠢终。存儲(chǔ)配額(Storage quotas)只能在較新的內(nèi)核上得到強(qiáng)制執(zhí)行寻拂。

在 Kubernetes 中祭钉,PVC 用于向存儲(chǔ)系統(tǒng)請(qǐng)求指定大小的存儲(chǔ)空間己沛。如果請(qǐng)求的 PVC 大小無(wú)法得到強(qiáng)制執(zhí)行泛粹,則無(wú)法保證所請(qǐng)求的存儲(chǔ)空間大小晶姊。由于存儲(chǔ)配額在較舊的內(nèi)核上無(wú)法得到強(qiáng)制執(zhí)行们衙,因此在使用 CephFS 創(chuàng)建卷時(shí)蒙挑,如果使用較舊的內(nèi)核版本忆蚀,則可能無(wú)法正確地管理和分配存儲(chǔ)空間馋袜。因此欣鳖,rook 官方建議使用至少 4.17 版本的內(nèi)核泽台。

在所有k8s節(jié)點(diǎn)升級(jí)內(nèi)核,之前忘記考慮這個(gè)事情稻爬,以后得提前升級(jí)好內(nèi)核再搭建k8s集群因篇,這種情況下升級(jí)內(nèi)核竞滓,很難保證不會(huì)對(duì)k8s集群帶來(lái)直接影響商佑。注意了厢塘,生產(chǎn)環(huán)境可不能這么玩晚碾,得提前做好規(guī)劃和準(zhǔn)備格嘁。

我的centos7內(nèi)核當(dāng)前版本:

[root@k8s-a-node01 ~]# uname -r
3.10.0-1160.el7.x86_64

開(kāi)始升級(jí)

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
yum --enablerepo=elrepo-kernel install kernel-ml-devel kernel-ml-headers kernel-ml -y
grub2-set-default 0
grub2-mkconfig -o /boot/grub2/grub.cfg
reboot
uname -sr

# 升級(jí)完成后查看內(nèi)核糕簿,已經(jīng)滿足條件
[root@k8s-a-node10 ~]# uname -sr
Linux 6.2.9-1.el7.elrepo.x86_64

# 看看k8s是否正常懂诗,我的沒(méi)問(wèn)題殃恒,非常順利。
kubectl get nodes
kubectl get pod -n kube-system

部署ceph集群

  1. 部署Rook Operator
git clone --single-branch --branch v1.11.2 https://github.com/rook/rook.git
cd rook/deploy/examples/
kubectl create -f crds.yaml -f common.yaml -f operator.yaml

# 在繼續(xù)操作之前隆嗅,驗(yàn)證 rook-ceph-operator 是否正常運(yùn)行
kubectl get deployment -n rook-ceph
kubectl get pod -n rook-ceph
  1. 創(chuàng)建 Ceph 集群

現(xiàn)在 Rook Operator已經(jīng)運(yùn)行起來(lái)了胖喳,接下來(lái)我們可以創(chuàng)建 Ceph 集群贮竟。

Rook允許通過(guò)自定義資源定義(CephCluster CRD)創(chuàng)建和自定義存儲(chǔ)集群,創(chuàng)建群集的主要模式有四種不同的模式技健,關(guān)于模式以及關(guān)于cluster.yaml所有可用的字段和說(shuō)明請(qǐng)仔細(xì)閱讀和參考:https://rook.io/docs/rook/v1.11/CRDs/Cluster/ceph-cluster-crd/

本次創(chuàng)建的集群就先按官方示例里的cluster.yaml啊送,不改動(dòng)示例里的內(nèi)容欣孤,它會(huì)在每個(gè)節(jié)點(diǎn)將創(chuàng)建一個(gè)OSD

kubectl create -f cluster.yaml

創(chuàng)建后查看降传,請(qǐng)確保所有Pod處于Running声旺,OSD POD處于Completed:

[root@k8s-a-master ~]# kubectl get pod -n rook-ceph
NAME                                                     READY   STATUS      RESTARTS       AGE
csi-cephfsplugin-4cx9v                                   2/2     Running     0              45m
csi-cephfsplugin-84fd4                                   2/2     Running     0              45m
csi-cephfsplugin-dnx6l                                   2/2     Running     0              45m
csi-cephfsplugin-gb4f7                                   2/2     Running     0              45m
csi-cephfsplugin-mtd67                                   2/2     Running     0              45m
csi-cephfsplugin-nrnck                                   2/2     Running     0              45m
csi-cephfsplugin-p5kmv                                   2/2     Running     0              45m
csi-cephfsplugin-provisioner-9f7449fc9-9qf67             5/5     Running     0              45m
csi-cephfsplugin-provisioner-9f7449fc9-k2cxc             5/5     Running     0              45m
csi-cephfsplugin-vhfr7                                   2/2     Running     0              45m
csi-cephfsplugin-wrgrb                                   2/2     Running     0              45m
csi-cephfsplugin-xt6f6                                   2/2     Running     0              45m
csi-rbdplugin-5mnb8                                      2/2     Running     0              45m
csi-rbdplugin-9j69s                                      2/2     Running     0              45m
csi-rbdplugin-ffg9b                                      2/2     Running     0              45m
csi-rbdplugin-ggfxk                                      2/2     Running     0              45m
csi-rbdplugin-h5gj7                                      2/2     Running     0              45m
csi-rbdplugin-ks7db                                      2/2     Running     0              45m
csi-rbdplugin-l2kmv                                      2/2     Running     0              45m
csi-rbdplugin-l5jm2                                      2/2     Running     0              45m
csi-rbdplugin-m7nc4                                      2/2     Running     0              45m
csi-rbdplugin-provisioner-649c57b978-m5pdk               5/5     Running     0              45m
csi-rbdplugin-provisioner-649c57b978-trp8j               5/5     Running     0              45m
csi-rbdplugin-szchk                                      2/2     Running     0              45m
rook-ceph-crashcollector-k8s-a-node01-6db7865746-clr4h   1/1     Running     0              50m
rook-ceph-crashcollector-k8s-a-node02-97bb5864c-wqbx4    1/1     Running     0              37m
rook-ceph-crashcollector-k8s-a-node03-59777d587b-gkr24   1/1     Running     0              41m
rook-ceph-crashcollector-k8s-a-node04-7f77bbdcfc-qgh7x   1/1     Running     0              45m
rook-ceph-crashcollector-k8s-a-node05-7cd59b4bc8-nkfgt   1/1     Running     0              45m
rook-ceph-crashcollector-k8s-a-node06-74dc6dc879-n9z5z   1/1     Running     0              45m
rook-ceph-crashcollector-k8s-a-node07-5f4c5c6c56-27zs9   1/1     Running     0              50m
rook-ceph-crashcollector-k8s-a-node08-7fd7ff557-5qthx    1/1     Running     0              39m
rook-ceph-crashcollector-k8s-a-node09-6b7d5645f4-fdpwp   1/1     Running     0              50m
rook-ceph-crashcollector-k8s-a-node10-69f8f5cbfb-6mhtw   1/1     Running     0              33m
rook-ceph-mgr-a-86f445fdcc-vdg4b                         3/3     Running     0              50m
rook-ceph-mgr-b-7b7967fd54-wjhxw                         3/3     Running     0              50m
rook-ceph-mon-a-6dd564d54d-cq4rb                         2/2     Running     0              52m
rook-ceph-mon-b-5c4875d7b9-xbd7l                         2/2     Running     0              51m
rook-ceph-mon-c-7fb466569d-qwb6v                         2/2     Running     0              51m
rook-ceph-operator-c489cccb5-8dtnz                       1/1     Running     1 (116m ago)   14h
rook-ceph-osd-0-f7cc57ddf-vc9tg                          2/2     Running     0              50m
rook-ceph-osd-1-7d79b4d4c-rbrkn                          2/2     Running     0              50m
rook-ceph-osd-2-564d78d445-jpjqk                         2/2     Running     0              50m
rook-ceph-osd-3-7ddf87bfd6-dlvmf                         2/2     Running     0              45m
rook-ceph-osd-4-849ddc4b68-5xg8h                         2/2     Running     0              45m
rook-ceph-osd-5-5ff57d4d55-skwv6                         2/2     Running     0              45m
rook-ceph-osd-6-668fcb969c-cwb46                         2/2     Running     0              41m
rook-ceph-osd-7-7876687b4d-r4b2g                         2/2     Running     0              39m
rook-ceph-osd-8-6c7784c4c-6xtv6                          2/2     Running     0              37m
rook-ceph-osd-9-654ffc5b66-qqhnr                         2/2     Running     0              33m
rook-ceph-osd-prepare-k8s-a-node01-6lf6r                 0/1     Completed   0              33m
rook-ceph-osd-prepare-k8s-a-node02-8rcpw                 0/1     Completed   0              33m
rook-ceph-osd-prepare-k8s-a-node03-dqcl4                 0/1     Completed   0              33m
rook-ceph-osd-prepare-k8s-a-node04-8qtmq                 0/1     Completed   0              33m
rook-ceph-osd-prepare-k8s-a-node05-qm78x                 0/1     Completed   0              33m
rook-ceph-osd-prepare-k8s-a-node06-qq58n                 0/1     Completed   0              33m
rook-ceph-osd-prepare-k8s-a-node07-lp9j8                 0/1     Completed   0              33m
rook-ceph-osd-prepare-k8s-a-node08-vh4sn                 0/1     Completed   0              33m
rook-ceph-osd-prepare-k8s-a-node09-smvp8                 0/1     Completed   0              32m
rook-ceph-osd-prepare-k8s-a-node10-k6ggk                 0/1     Completed   0              32m
rook-ceph-tools-54bdbfc7b7-hqdw4                         1/1     Running     0              24m
[root@k8s-a-master ~]# 
  1. 驗(yàn)證ceph集群

要驗(yàn)證群集是否處于正常狀態(tài)澈缺,可以連接到 toolbox 工具箱并運(yùn)行命令

kubectl create -f toolbox.yaml
kubectl exec -it rook-ceph-tools-54bdbfc7b7-hqdw4 -n rook-ceph -- bash

# 進(jìn)去之后就可以執(zhí)行各種命令了:
ceph status
ceph osd status
ceph df
rados df

# 看看我的
[root@k8s-a-master examples]# kubectl exec -it rook-ceph-tools-54bdbfc7b7-pzkd4 -n rook-ceph -- bash
bash-4.4$ ceph -s
  cluster:
    id:     0b64957b-9aaa-43ef-9946-211ca911dc92
    health: HEALTH_OK
 
  services:
    mon: 3 daemons, quorum a,b,c (age 3m)
    mgr: a(active, since 64s), standbys: b
    osd: 10 osds: 10 up (since 116s), 10 in (since 2m)
 
  data:
    pools:   1 pools, 1 pgs
    objects: 2 objects, 449 KiB
    usage:   234 MiB used, 9.8 TiB / 9.8 TiB avail
    pgs:     1 active+clean
 
bash-4.4$ ceph osd status
ID  HOST           USED  AVAIL  WR OPS  WR DATA  RD OPS  RD DATA  STATE      
 0  k8s-a-node02  23.9M   999G      0        0       0        0   exists,up  
 1  k8s-a-node03  20.9M   999G      0        0       0        0   exists,up  
 2  k8s-a-node04  24.9M   999G      0        0       0        0   exists,up  
 3  k8s-a-node06  24.9M   999G      0        0       0        0   exists,up  
 4  k8s-a-node05  23.8M   999G      0        0       0        0   exists,up  
 5  k8s-a-node07  23.8M   999G      0        0       0        0   exists,up  
 6  k8s-a-node08  19.8M   999G      0        0       0        0   exists,up  
 7  k8s-a-node10  23.8M   999G      0        0       0        0   exists,up  
 8  k8s-a-node01  23.8M   999G      0        0       0        0   exists,up  
 9  k8s-a-node09  23.7M   999G      0        0       0        0   exists,up  

每個(gè) OSD 都有一個(gè)狀態(tài)误堡,可以是以下幾種之一:

  • up:表示該 OSD 正常運(yùn)行锁施,并且可以處理數(shù)據(jù)請(qǐng)求。
  • down:表示該 OSD 當(dāng)前無(wú)法運(yùn)行或不可用肩狂,可能由于硬件故障或軟件問(wèn)題傻谁。
  • out:表示該 OSD 不參與數(shù)據(jù)存儲(chǔ)或恢復(fù)列粪,這通常是由于管理員手動(dòng)將其標(biāo)記為不可用谈飒。
  • exists:表示該 OSD 配置存在杭措,但尚未啟動(dòng)或加入集群钾恢。

在我這里瘩蚪,exists,up 表示該 OSD 配置存在募舟,并且已經(jīng)成功啟動(dòng)并參與了數(shù)據(jù)存儲(chǔ)和恢復(fù)。exists 狀態(tài)表示 OSD 配置已經(jīng)存在琢锋,但是 OSD 還沒(méi)有啟動(dòng)吴超。只有當(dāng) OSD 運(yùn)行后鲸阻,狀態(tài)才會(huì)變?yōu)?up鸟悴。因此细诸,exists,up 表示 OSD 的啟動(dòng)過(guò)程已經(jīng)完成震贵,并且 OSD 正常運(yùn)行猩系。

暴露Dashboard

Dashboard可以讓我們查看Ceph集群的狀態(tài)寇甸,包括整體的運(yùn)行狀況拿霉、mon仲裁狀態(tài)友浸、mgr收恢、osd 和其他Ceph守護(hù)程序的狀態(tài)伦意、查看池和PG狀態(tài)、顯示守護(hù)程序的日志等熏矿。關(guān)于Dashboard的更多配置票编,請(qǐng)參考:https://rook.io/docs/rook/v1.11/Storage-Configuration/Monitoring/ceph-dashboard/

  1. 查看dashboard的svc慧域,Rook將啟用端口 8443 以進(jìn)行 https 訪問(wèn):
[root@k8s-a-master ~]# kubectl get svc -n rook-ceph
NAME                      TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)             AGE
rook-ceph-mgr             ClusterIP   10.103.90.1      <none>        9283/TCP            52m
rook-ceph-mgr-dashboard   ClusterIP   10.108.66.238    <none>        8443/TCP            52m
rook-ceph-mon-a           ClusterIP   10.104.191.13    <none>        6789/TCP,3300/TCP   54m
rook-ceph-mon-b           ClusterIP   10.108.194.172   <none>        6789/TCP,3300/TCP   53m
rook-ceph-mon-c           ClusterIP   10.98.32.80      <none>        6789/TCP,3300/TCP   53m
[root@k8s-a-master ~]# 
  • rook-ceph-mgr:是 Ceph 的管理進(jìn)程(Manager)昔榴,負(fù)責(zé)集群的監(jiān)控互订、狀態(tài)報(bào)告仰禽、數(shù)據(jù)分析、調(diào)度等功能错负,它默認(rèn)監(jiān)聽(tīng) 9283 端口坟瓢,并提供了 Prometheus 格式的監(jiān)控指標(biāo)勇边,可以被 Prometheus 拉取并用于集群監(jiān)控犹撒。
  • rook-ceph-mgr-dashboard:是 Rook 提供的一個(gè) Web 界面,用于方便地查看 Ceph 集群的監(jiān)控信息粒褒、狀態(tài)识颊、性能指標(biāo)等。
  • rook-ceph-mon:是 Ceph Monitor 進(jìn)程的 Kubernetes 服務(wù)。Ceph Monitor 是 Ceph 集群的核心組件之一祥款,負(fù)責(zé)維護(hù) Ceph 集群的狀態(tài)刃跛、拓?fù)浣Y(jié)構(gòu)检号、數(shù)據(jù)分布等信息桂塞,是 Ceph 集群的管理節(jié)點(diǎn)。
  1. 查看默認(rèn)賬號(hào)admin的密碼
[root@k8s-a-master examples]# kubectl -n rook-ceph get secret rook-ceph-dashboard-password -o jsonpath="{['data']['password']}" | base64 --decode && echo
$}<EVv58G-*C3@/?J1@t

這個(gè)密碼就是等會(huì)用來(lái)登錄

  1. 使用 NodePort 類(lèi)型的Service暴露dashboard dashboard-external-https.yaml
apiVersion: v1
kind: Service
metadata:
  name: rook-ceph-mgr-dashboard-external-https
  namespace: rook-ceph
  labels:
    app: rook-ceph-mgr
    rook_cluster: rook-ceph
spec:
  ports:
  - name: dashboard
    port: 8443
    protocol: TCP
    targetPort: 8443
  selector:
    app: rook-ceph-mgr
    rook_cluster: rook-ceph
  sessionAffinity: None
  type: NodePort
  1. 創(chuàng)建后NodePort類(lèi)的svc后查看
[root@k8s-a-master examples]# kubectl get svc -n rook-ceph
NAME                                     TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)             AGE
rook-ceph-mgr                            ClusterIP   10.96.58.93      <none>        9283/TCP            28m
rook-ceph-mgr-dashboard                  ClusterIP   10.103.131.77    <none>        8443/TCP            28m # 記得干掉
rook-ceph-mgr-dashboard-external-https   NodePort    10.107.247.53    <none>        8443:32564/TCP      9m38s
rook-ceph-mon-a                          ClusterIP   10.98.168.35     <none>        6789/TCP,3300/TCP   29m
rook-ceph-mon-b                          ClusterIP   10.103.127.134   <none>        6789/TCP,3300/TCP   29m
rook-ceph-mon-c                          ClusterIP   10.111.46.187    <none>        6789/TCP,3300/TCP   29m

ClusterIP類(lèi)型的SVC是集群部署后默認(rèn)創(chuàng)建的颈娜,要干掉,不然影響NodePort類(lèi)型的訪問(wèn)。

  1. 在任何節(jié)點(diǎn)訪問(wèn)dashboard

清理集群

如果你不想要這個(gè)集群了,干掉這個(gè)集群也是很簡(jiǎn)單的,時(shí)間有限速客,我就不再輸出位喂,可參考官方文檔:https://rook.io/docs/rook/v1.11/Getting-Started/ceph-teardown/#zapping-devices点待。后續(xù)我也會(huì)專(zhuān)門(mén)抽個(gè)時(shí)間做個(gè)分享聋呢。

寫(xiě)在最后

關(guān)于3種存儲(chǔ)類(lèi)型的實(shí)戰(zhàn),下次繼續(xù)分享:

  • 塊:創(chuàng)建要由 Pod (RWO) 使用的塊存儲(chǔ)
  • 共享文件系統(tǒng):創(chuàng)建要在多個(gè) Pod (RWX) 之間共享的文件系統(tǒng)
  • 對(duì)象:創(chuàng)建可在 Kubernetes 集群內(nèi)部或外部訪問(wèn)的對(duì)象存儲(chǔ)


PS:我會(huì)持續(xù)的分享k8s、rook ceph等等吧黄,感謝各位盆友高度關(guān)注赵抢,如你跟著我的文章做測(cè)試,遇到問(wèn)題解決不了的時(shí)候可私信我,我會(huì)盡力幫助您解決問(wèn)題。

本文轉(zhuǎn)載于WX公眾號(hào):不背鍋運(yùn)維(喜歡的盆友關(guān)注我們):https://mp.weixin.qq.com/s/gBErT26UikPBdsot9_Tjqg

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末囚企,一起剝皮案震驚了整個(gè)濱河市银酗,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,978評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件造虎,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡婚夫,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門(mén)奢讨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)亩码,“玉大人啊掏,你說(shuō)我怎么就攤上這事髓霞。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,623評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)凛澎。 經(jīng)常有香客問(wèn)我元媚,道長(zhǎng)甥角,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,324評(píng)論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上叉抡,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著法严,像睡著了一般。 火紅的嫁衣襯著肌膚如雪苫幢。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,741評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音棉浸,去河邊找鬼。 笑死抑堡,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的袖外。 我是一名探鬼主播鬓照,決...
    沈念sama閱讀 38,892評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼阴颖,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起蒲犬,我...
    開(kāi)封第一講書(shū)人閱讀 37,655評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤原叮,失蹤者是張志新(化名)和其女友劉穎奋隶,沒(méi)想到半個(gè)月后黍聂,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體脐区,經(jīng)...
    沈念sama閱讀 44,104評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年匿刮,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片慷妙。...
    茶點(diǎn)故事閱讀 38,569評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡僻焚,死狀恐怖允悦,靈堂內(nèi)的尸體忽然破棺而出膝擂,到底是詐尸還是另有隱情,我是刑警寧澤隙弛,帶...
    沈念sama閱讀 34,254評(píng)論 4 328
  • 正文 年R本政府宣布架馋,位于F島的核電站,受9級(jí)特大地震影響全闷,放射性物質(zhì)發(fā)生泄漏叉寂。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評(píng)論 3 312
  • 文/蒙蒙 一总珠、第九天 我趴在偏房一處隱蔽的房頂上張望屏鳍。 院中可真熱鬧,春花似錦局服、人聲如沸钓瞭。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,725評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)山涡。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間鸭丛,已是汗流浹背竞穷。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,950評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留鳞溉,地道東北人瘾带。 一個(gè)月前我還...
    沈念sama閱讀 46,260評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像熟菲,于是被迫代替她去往敵國(guó)和親月弛。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容