控制器Daemonset和job

DaemonSet?控制器:概念揖曾、原理

1.1?DaemonSet 概述

DaemonSet 控制器能夠確保?k8s?集群所有的節(jié)點(diǎn)都運(yùn)行一個(gè)相同的?pod?副本债鸡,當(dāng)向?k8s?集群中增

加?node?節(jié)點(diǎn)時(shí),這個(gè)?node?節(jié)點(diǎn)也會(huì)自動(dòng)創(chuàng)建一個(gè)?pod?副本钾恢,當(dāng)?node?節(jié)點(diǎn)從集群移除,這些?pod?也 會(huì)自動(dòng)刪除;刪除?Daemonset?也會(huì)刪除它們創(chuàng)建的?pod

1. 2 ? Daemonset?工作原理:如何管理?Pod?

daemonset?的控制器會(huì)監(jiān)聽?kuberntes?的?daemonset?對(duì)象、pod?對(duì)象享扔、node?對(duì)象底桂,這些被監(jiān) 聽的對(duì)象之變動(dòng),就會(huì)觸發(fā)?syncLoop?循環(huán)讓?kubernetes?集群朝著?daemonset?對(duì)象描述的狀態(tài)進(jìn)行 演進(jìn)惧眠。

1.3 Daemonset?典型的應(yīng)用場(chǎng)景

在集群的每個(gè)節(jié)點(diǎn)上運(yùn)行存儲(chǔ)籽懦,比如:glusterd?或?ceph来累。?

在每個(gè)節(jié)點(diǎn)上運(yùn)行日志收集組件思喊,比如:flunentd?、?logstash响驴、filebeat?等秀存。

?在每個(gè)節(jié)點(diǎn)上運(yùn)行監(jiān)控組件捶码,比如:Prometheus、?Node Exporter?或链、collectd?等惫恼。

?1.4 DaemonSet?與?Deployment?的區(qū)別

Deployment?部署的副本?Pod?會(huì)分布在各個(gè)?Node?上,每個(gè)?Node?都可能運(yùn)行好幾個(gè)副本株扛。?DaemonSet?的不同之處在于:每個(gè)?Node?上最多只能運(yùn)行一個(gè)副本尤筐。


DaemonSet?資源清單文件編寫技巧

kubectl explain ds

apiVersion <string> #當(dāng)前資源使用的?api?版本,跟?VERSION: app/v1保持一致

kind <string> #資源類型洞就,跟?KIND: DaemonSet?保持一致?

metadata<Object> #元數(shù)據(jù)盆繁,定義?DaemonSet?名字的

spec <Object> #定義容器的

status <Object> #狀態(tài)信息,不能改


DaemonSet?的?spec?字段kubectl explain ds.spec


FIELDS:

minReadySeconds <integer> #當(dāng)新的?pod?啟動(dòng)幾秒種后旬蟋,再?kill?掉舊的?pod油昂。?revisionHistoryLimit <integer> #歷史版本

selector <Object> -required- #用于匹配?pod?的標(biāo)簽選擇器

template <Object> -required-

#定義?Pod?的模板,基于這個(gè)模板定義的所有?pod?是一樣的?

updateStrategy #daemonset?的升級(jí)策略

#查看?DaemonSet?的?spec.template?字段如何定義?

#對(duì)于?template?而言倾贰,其內(nèi)部定義的就是?pod冕碟,pod?模板是一個(gè)獨(dú)立的對(duì)象

kubectl explain ds.spec.template

KIND: DaemonSet

VERSION:? apps/v1

RESOURCE: template <Object>

FIELDS:

? ?metadata? ? <Object>

? ?spec <Object> ??

FIELDS:

? metadata? ? <Object>

DaemonSet 部署日志收集組件?fluentd

把?fluentd-2-5-1.tar.gz?上傳到 所有節(jié)點(diǎn)上. ? ?

#編寫一個(gè)?DaemonSet?資源清單

cat daemonset.yaml

apiVersion: apps/v1

kind: DaemonSet

metadata:

? labels:

? ? k8s-app: fluentd-logging

? name: fluentd-elasticsearch

? namespace: kube-system

spec:

? selector:

? ? matchLabels:

? ? ? name: fluentd-elasticsearch

? template:

? ? metadata:

? ? ? name: fluentd

? ? ? labels:

? ? ? ? name: fluentd-elasticsearch

? ? spec:

? ? ? tolerations:

? ? ? - key: node-role.kubernetes.io/master

? ? ? ? effect: NoSchedule

? ? ? containers:

? ? ? - name: fluentd-elasticsearch

? ? ? ? image: god/fluentd:v2.5.1

? ? ? ? resources:

? ? ? ? ? limits:

? ? ? ? ? ? memory: 500Mi

? ? ? ? ? requests:

? ? ? ? ? ? cpu: 100m

? ? ? ? ? ? memory: 200Mi

? ? ? ? volumeMounts:

? ? ? ? - name: varlog

? ? ? ? ? mountPath: /var/log

? ? ? ? - name: varlibdockercontainers

? ? ? ? ? mountPath: /var/lib/docker/containers

? ? ? ? ? readOnly: true

? ? ? terminationGracePeriodSeconds: 30

? ? ? volumes:

? ? ? - name: varlog

? ? ? ? hostPath:

? ? ? ? ? path: /var/log

? ? ? - name: varlibdockercontainers

? ? ? ? hostPath:

? ? ? ? ? path: /var/lib/docker/containers

更新

kubectl apply -f daemonset.yaml

指定 kube-system名稱空間

kubectl get daemonset -n kube-system

NAME? ? ? ? ? ? ? ? ? ? DESIRED? CURRENT? READY? UP-TO-DATE? AVAILABLE? NODE SELECTOR? ? ? ? ? ? AGE

calico-node? ? ? ? ? ? 3? ? ? ? 3? ? ? ? 3? ? ? 3? ? ? ? ? ? 3? ? ? ? ? kubernetes.io/os=linux? 18d

fluentd-elasticsearch? 3? ? ? ? 3? ? ? ? 3? ? ? 3? ? ? ? ? ? 3? ? ? ? ? <none>? ? ? ? ? ? ? ? ? 3m9s

kube-proxy? ? ? ? ? ? ? 3? ? ? ? 3? ? ? ? 3? ? ? 3? ? ? ? ? ? 3? ? ? ? ? kubernetes.io/os=linux? 18d


kubectl get pods -n kube-system ? ? ??

萬(wàn)一沒有fluentd-elasticsearch的話,看daemonset詳細(xì)信息或者重啟kubelet

systemctl restart Kubelet ?重啟對(duì)pod沒有影響匆浙。跟apiserver交互的

kubectl describe daemonset fluentd-elasticsearch -n kube-system

kubectl get pods -n kube-system -o wide

#通過(guò)上面可以看到在?k8s?的三個(gè)節(jié)點(diǎn)均創(chuàng)建了?fluentd?這個(gè)?pod?

#pod?的名字是由控制器的名字-隨機(jī)數(shù)組成的

#資源清單詳細(xì)說(shuō)明

apiVersion: apps/v1 #DaemonSet?使用的?api?版本

kind: DaemonSet #?資源類型?

metadata:

name: fluentd-elasticsearch ? ? ? ?#資源的名字

namespace: kube-system ? ?#資源所在的名稱空間

labels:?

k8s-app: fluentd-logging. ??#資源具有的標(biāo)簽

?spec:

selector: #標(biāo)簽選擇器

?matchLabels:

name: fluentd-elasticsearch

?template:

metadata:

labels: ? ? ? ? ?#?基于這回模板定義的?pod?具有的標(biāo)簽

name: fluentd-elasticsearch?

spec:

tolerations: #定義容忍度

- key: node-role.kubernetes.io/master

effect: NoSchedule?

containers: ? ? ? ? ? ?#定義容器

- name: fluentd-elasticsearch

image: god/fluentd:v2.5.1 ? ??

resources: ? ?#資源配額

limits:

memory: 200Mi

requests:

cpu: 100m memory: 200Mi

volumeMounts: - name: varlog?

mountPath: /var/log ? ? ? ? ? ?#把本地的/var/log目錄掛在到容器

?- name: varlibdockercontainers

mountPath: /var/lib/docker/containers ? ? ?#把/var/lib/docker/containers/掛載到容器里

readOnly: true #掛載目錄是只讀權(quán)限

terminationGracePeriodSeconds: 30 #優(yōu)雅的關(guān)閉服務(wù)?

volumes:

- name: varlog hostPath:

path: /var/log #基于本地目錄創(chuàng)建一個(gè)卷?

- name: varlibdockercontainers

hostPath:

path: /var/lib/docker/containers ? ? #基于本地目錄創(chuàng)建一個(gè)卷


Daemonset?管理?pod:滾動(dòng)更新

#DaemonSet?實(shí)現(xiàn)?pod?的滾動(dòng)更新

#查看?daemonset?的滾動(dòng)更新策略

kubectl explain ds.spec.updateStrategy

#查看?rollingUpdate?支持的更新策略?

kubectl explain ds.spec.updateStrategy.rollingUpdate

KIND: DaemonSet

VERSION:? apps/v1

RESOURCE: rollingUpdate <Object>

DESCRIPTION:

? ? Rolling update config params. Present only if type = "RollingUpdate".

? ? Spec to control the desired behavior of daemon set rolling update.

#上面表示?rollingUpdate?更新策略只支持?maxUnavailabe安寺,先刪除在更新;因?yàn)槲覀儾恢С忠?個(gè)節(jié)點(diǎn)運(yùn)行兩個(gè)?pod,因此需要先刪除一個(gè)首尼,在更新一個(gè)挑庶。

vim daemonset.yaml


kubectl apply -f daemonset.yaml

查看名稱空間# kubectl get daemonset -n kube-system

NAME ? ? ? ? ? ? ? ?DESIRED? CURRENT? READY? UP-TO-DATE? AVAILABLE? NODE SELECTOR? ? ? ? ? ? AGE

calico-node ? ? ? ? ? ? ? ? ? 3 ? ? ? ? ? ? 3? ? ? ? 3 ? ? ? ? ?3? ? ? ? ? ? 3? ? ? ? ? kubernetes.io/os=linux? 18d ?

fluentd-elasticsearch ? ? ?3 ? ? ? ? ?3 ? ? ? ? 2 ? ? ? ?1? ? ? ? ? ? 2? ? ? ? ? <none>? ? ? ? ? ? ? ? ? 53m

?kube-proxy ? ? ? ? ? ? ? ? ? ? ?3? ? ? ? 3 ? ? ? ? ?3 ? ? ? ? ?3? ? ? ? ? ? 3? ? ? ? ? kubernetes.io/os=linux? 18d


就緒只有2個(gè),可能是控制節(jié)點(diǎn)沒有



排錯(cuò)思路看describe和logs

kubectl describe pods fluentd-elasticsearch-dvl8g -n kube-system


沒有寫软能,只是說(shuō)重啟

kubectl logs fluentd-elasticsearch-dvl8g -n kube-system ?#在查看日志

nginx: [alert] could not open error log file: open() "/var/log/nginx/error.log" failed (2: No such file or directory)

2021/05/16 11:44:04 [emerg] 1#1: open() "/var/log/nginx/error.log" failed (2: No such file or directory)


#更新鏡像版本迎捺,可以按照如下方法:

kubectl set image daemonsets fluentd-elasticsearch=ikubernetes/filebeat:5.6.6- alpine -n kube-system


Job?和?CronJob?控制器:概念、原理


Job?控制器用于管理?Pod?對(duì)象運(yùn)行一次性任務(wù)查排,比方說(shuō)我們對(duì)數(shù)據(jù)庫(kù)備份凳枝,可以直接在?k8s?上啟動(dòng)

一個(gè)?mysqldump?備份程序,也可以啟動(dòng)一個(gè)?pod跋核,這個(gè)?pod?專門用來(lái)備份用的岖瑰,備份結(jié)束?pod?就可 以終止了叛买,不需要重啟,而是將?Pod?對(duì)象置于"Completed"(完成)狀態(tài)锭环,若容器中的進(jìn)程因錯(cuò)誤而終 止聪全,則需要按照重啟策略配置確定是否重啟,對(duì)于?Job?這個(gè)類型的控制器來(lái)說(shuō)辅辩,需不需要重建?pod?就看 任務(wù)是否完成,完成就不需要重建娃圆,沒有完成就需要重建?pod玫锋。?Job?控制器的?Pod?對(duì)象的狀態(tài)轉(zhuǎn)換


Job?三種使用場(chǎng)景:

1、非并行任務(wù):只啟一個(gè)?pod讼呢,pod?成功撩鹿,job?正常結(jié)束?

2、并行任務(wù)同時(shí)指定成功個(gè)數(shù):.spec.completions?為指定成功個(gè)數(shù)悦屏,可以指定也可以不指 定.spec.parallelism(指定>1节沦,會(huì)有多個(gè)任務(wù)并行運(yùn)行)。當(dāng)成功個(gè)數(shù)達(dá)到.spec.completions础爬, 任務(wù)結(jié)束甫贯。

3、有工作隊(duì)列的并行任務(wù):.spec.completions?默認(rèn)為?1看蚜,.spec.parallelism?為大于?0?的整數(shù)叫搁。 此時(shí)并行啟動(dòng)多個(gè)?pod,只要有一個(gè)成功供炎,任務(wù)結(jié)束渴逻,所有?pod?結(jié)束


CronJob?概念、原理

? ? ? ?CronJob?跟?Job?完成的工作是一樣的音诫,只不過(guò)?CronJob?添加了定時(shí)任務(wù)能力可以指定時(shí)間惨奕,實(shí)現(xiàn)周期性運(yùn)行。Job竭钝,CronJob?和?Deployment梨撞,DaemonSet?顯著區(qū)別在于不需要持續(xù)在后臺(tái)運(yùn)行 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Deployment?主要用于管理無(wú)狀態(tài)的應(yīng)用(kubernetes?集群有一些?pod,某一個(gè)?pod?出現(xiàn)故障蜓氨, 刪除之后會(huì)重新啟動(dòng)一個(gè)?pod聋袋,那么?kubernetes?這個(gè)集群中?pod?數(shù)量就正常了,更多關(guān)注的是群體穴吹,這就是無(wú)狀態(tài)應(yīng)用)幽勒。


使用場(chǎng)景:?

1、在給定時(shí)間點(diǎn)只運(yùn)行一次港令。?

2啥容、在給定時(shí)間點(diǎn)周期性地運(yùn)行锈颗。

CronJob?的典型用法如下:?

1、在給定的時(shí)間點(diǎn)調(diào)度?Job?運(yùn)行咪惠。

2击吱、創(chuàng)建周期性運(yùn)行的?Job,例如數(shù)據(jù)庫(kù)備份遥昧、發(fā)送郵件


Job?控制器:資源清單編寫

#查看?Job?資源對(duì)象由哪幾部分組成

kubectl explain Job

Job represents the configuration of a single job. FIELDS:

apiVersion ? ? ? ? ? ? ? #當(dāng)前?Job?的?api?版本

kind ? ? ? ? ? ? ? ? ? ? ? ???#指定當(dāng)前的資源類型

metadata ? ? <Object>? ? ? ? ? ? #元數(shù)據(jù)覆醇,定義資源的名字和所在名稱空間?

spec ? ? ? ? ? ? ?<Object> ? ? ? ??#查看?Job?下的?spec?字段

kubectl explain Job.spec

FIELDS:

activeDeadlineSeconds #

通過(guò)指定job存活時(shí)間,來(lái)結(jié)束一個(gè)job炭臭。當(dāng)

job?運(yùn)行時(shí)間達(dá)到?activeDeadlineSeconds?指定的時(shí)間后永脓,job?會(huì)停止由它啟動(dòng)的所有任務(wù) (如:pod),并設(shè)置?job?的狀態(tài)為?failed

backoffLimit #job?建議指定?pod?的重啟策略為?never鞋仍, 如:.spec.template.spec.restartPolicy = "Never"常摧,然后通過(guò)?job?的?backoffLimit?來(lái)指 定失敗重試次數(shù),在達(dá)到?backoffLimit?指定的次數(shù)后威创,job?狀態(tài)設(shè)置為?failed(默認(rèn)為?6?次)

completions <integer> #指定?job?啟動(dòng)的任務(wù)(如:pod)成功運(yùn)行?completions?次落午,job?才算成功結(jié)束

manualSelector <boolean>

parallelism <integer> #指定?job?同時(shí)運(yùn)行的任務(wù)(如:pod)個(gè)數(shù),Parallelism?默認(rèn)為?1肚豺,如果設(shè)置為?0溃斋,則?job?會(huì)暫定

selector。<object>

template <object>.?-required-

ttlSecondsAfterFinished<integer> #默認(rèn)情況下详炬,job?異逞卫啵或者成功結(jié)束后,包括

job?啟動(dòng)的任務(wù)(pod)呛谜,都不會(huì)被清理掉在跳,因?yàn)槟憧梢砸罁?jù)保存的?job?和?pod,查看狀態(tài)隐岛、

日志猫妙,以及調(diào)試等。這些用戶可以手動(dòng)刪除聚凹,用戶手動(dòng)刪除?job割坠,job controller?會(huì)級(jí)聯(lián)刪除 對(duì)應(yīng)的?pod,除了手動(dòng)刪除妒牙,通過(guò)指定參數(shù)?ttlSecondsAfterFinished?也可以實(shí)現(xiàn)自動(dòng)刪除?job彼哼,以及級(jí)聯(lián)的資源,如:pod湘今。如果設(shè)置為?0敢朱,job?會(huì)被立即刪除。如果不指定,job?則 不會(huì)被刪除

#查看?Job?下的?spec.template?字段

#template?為定義?Pod?的模板拴签,Job?通過(guò)模板創(chuàng)建?Pod

kubectl explain Job.spec.template.spec

restartPolicy ?#重啟策略孝常,對(duì)于?Job,只能設(shè)置為?Never?或者OnFailure蚓哩。對(duì)于其他?controller(比如?Deployment)可以設(shè)置為?Always?构灸。


?使用Job創(chuàng)建一個(gè)一次性任務(wù)

vim job.yaml

apiVersion: batch/v1

kind: Job

metadata:

? name: my-busybox-job

spec:

? completions: 6

? parallelism: 3

? backoffLimit: 6

? template:

? ? spec:

? ? ? restartPolicy: Never

? ? ? containers:

? ? ? - name: my-container-job

? ? ? ? image: busybox

? ? ? ? imagePullPolicy: IfNotPresent

? ? ? ? command: ['sh','-c']

? ? ? ? args: ['echo "Welcome xuexi"; sleep 60 ; echo "Next to Meet you"']

更新

kubectl apply -f job.yaml

查看?Job?狀態(tài):

kubectl get Job

kubectl get job

NAME? ? ? ? ? ? COMPLETIONS? DURATION? AGE

my-busybox-job? 3/6? ? ? ? ? 79s? ? ? ? 79s

#查看?pod?狀態(tài)

kubectl get pods

kubectl logs my-busybox-job-9lzkc

Welcome xuexi

Next to Meet you

#動(dòng)態(tài)查看?pod?狀態(tài)

kubectl get pods -w


kubectl logs my-busybox-job-xmlcb

Welcome xuexi

Next to Meet you


#資源清單文件詳細(xì)解讀

apiVersion: batch/v1?

kind: Job

metadata:

name: my-busybox-job spec:

ttlSecondsAfterFinished: 20

completions: 6 ? ? # Job 成功完成?Pod?的總數(shù)

parallelism: 3 ? ? ? ?#并行執(zhí)行的?pod?數(shù)量是?3?次?

backoffLimit: 6

template: spec:

restartPolicy: Never ? ? #. 重啟策略默認(rèn)

pod的重啟策略restartpolicy:pod在遇到故障之后重啟的動(dòng)作有:

1.always:當(dāng)容器退出時(shí),總是重啟容器岸梨,默認(rèn)策略

2.onfailure:當(dāng)容器異常退出(退出狀態(tài)碼非0)時(shí)喜颁,重啟容器

3.nerver:當(dāng)容器退出時(shí),從不重啟容器


使用CronJob創(chuàng)建周期性的定時(shí)任務(wù)

cat cronjob.yaml

apiVersion: batch/v1beta1

kind: CronJob

metadata:

? name: hello

spec:

? schedule: "*/1 * * * *"

? jobTemplate:

? ? spec:

? ? ? template:

? ? ? ? spec:

? ? ? ? ? containers:

? ? ? ? ? - name: hello

? ? ? ? ? ? image: busybox

? ? ? ? ? ? imagePullPolicy: IfNotPresent

? ? ? ? ? ? command:

? ? ? ? ? ? - /bin/sh

? ? ? ? ? ? - -c

? ? ? ? ? ? - data; echo Hello from the Kubernetes cluster

? ? ? ? ? restartPolicy: OnFailure

更新

kubectl apply -f cronjob.yaml

kubectl get cronjob

NAME? ? SCHEDULE? ? ? SUSPEND? ACTIVE? LAST SCHEDULE? AGE

hello? */1 * * * *? False? ? 0? ? ? ? <none>? ? ? ? ? 39s

#從命令的結(jié)果可以看出盛嘿,CronJob?還沒有調(diào)度或運(yùn)行任何?Job洛巢。觀察大概一分鐘,等待?CronJob?創(chuàng)建:

kubectl get jobs --watch

NAME? ? ? ? ? ? ? COMPLETIONS? DURATION? AGE

hello-1621232340? 1/1? ? ? ? ? 1s? ? ? ? 62s

hello-1621232400? 1/1? ? ? ? ? 2s? ? ? ? 2s

my-busybox-job? ? 6/6? ? ? ? ? 2m5s? ? ? 20m

#現(xiàn)在可以看到由?hello?這個(gè)?cronjob?調(diào)度的一個(gè)正在運(yùn)行的?job次兆。

kubectl get cronjob

NAME? ? SCHEDULE? ? ? SUSPEND? ACTIVE? LAST SCHEDULE? AGE

hello? */1 * * * *? False? ? 0? ? ? ? 62s? ? ? ? ? ? 3m41s

#可以看到?hello?這個(gè)?CronJob?成功地在?LAST SCHEDULE?中指定的時(shí)間點(diǎn)調(diào)度了一個(gè)作 業(yè)。當(dāng)前有?0?個(gè)活動(dòng)作業(yè)锹锰,這意味著該作業(yè)已經(jīng)完成或失敗芥炭。

kubectl get pods | grep hello

hello-1621232400-qm5w6? ? ? 0/1? ? Completed? 0? ? ? ? ? 2m24s

hello-1621232460-dm56x? ? ? 0/1? ? Completed? 0? ? ? ? ? 83s

hello-1621232520-6rfxb? ? ? 0/1? ? Completed? 0? ? ? ? ? 23s


kubectl logs hello-1621232640-z4vw5

Mon May 17 06:24:09 UTC 2021

Hello from the Kubernetes cluster

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市恃慧,隨后出現(xiàn)的幾起案子园蝠,更是在濱河造成了極大的恐慌,老刑警劉巖痢士,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件彪薛,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡怠蹂,警方通過(guò)查閱死者的電腦和手機(jī)善延,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)城侧,“玉大人易遣,你說(shuō)我怎么就攤上這事∠佑樱” “怎么了豆茫?”我有些...
    開封第一講書人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)屋摇。 經(jīng)常有香客問(wèn)我揩魂,道長(zhǎng),這世上最難降的妖魔是什么炮温? 我笑而不...
    開封第一講書人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任火脉,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘忘分。我一直安慰自己棋枕,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開白布妒峦。 她就那樣靜靜地躺著重斑,像睡著了一般。 火紅的嫁衣襯著肌膚如雪肯骇。 梳的紋絲不亂的頭發(fā)上窥浪,一...
    開封第一講書人閱讀 49,007評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音笛丙,去河邊找鬼漾脂。 笑死,一個(gè)胖子當(dāng)著我的面吹牛胚鸯,可吹牛的內(nèi)容都是我干的骨稿。 我是一名探鬼主播,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼姜钳,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼坦冠!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起哥桥,我...
    開封第一講書人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤辙浑,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后拟糕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體判呕,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年送滞,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了侠草。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡累澡,死狀恐怖梦抢,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情愧哟,我是刑警寧澤奥吩,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布,位于F島的核電站蕊梧,受9級(jí)特大地震影響霞赫,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜肥矢,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一端衰、第九天 我趴在偏房一處隱蔽的房頂上張望叠洗。 院中可真熱鬧,春花似錦旅东、人聲如沸灭抑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)腾节。三九已至,卻和暖如春荤牍,著一層夾襖步出監(jiān)牢的瞬間案腺,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工康吵, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留劈榨,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓晦嵌,卻偏偏與公主長(zhǎng)得像同辣,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子惭载,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345

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