Kubernetes系列(1)—— 基本概念以及入門(mén)

一、Kubernetes 是什么怎茫?

1.Kubernetes 定義:

Kubernetes 是一個(gè)全新的基于容器技術(shù)的分布式建構(gòu)領(lǐng)先方案收壕,他是基于容器技術(shù),目的是實(shí)現(xiàn)資源管理的自動(dòng)化轨蛤,以及跨多個(gè)數(shù)據(jù)中心的資源利用率的最大化~

2.Kubernetes 特點(diǎn):

? 遵循Kubernetes的設(shè)計(jì)思想蜜宪,我們只需要關(guān)注我們的業(yè)務(wù)模塊,那些和業(yè)務(wù)不相干的底層代碼和功能模塊祥山,都可以不用關(guān)注圃验,比如我們可以不用費(fèi)心去部署負(fù)載均衡器,不用考慮自己搭建一個(gè)復(fù)雜的服務(wù)之力框架缝呕,不用再去操心服務(wù)的監(jiān)控和故障處理模塊~Kubernetes提供的一整套解決方案澳窑,可以讓開(kāi)發(fā)者將精力集中于業(yè)務(wù)本身,Kubernetes本身也提供了強(qiáng)大的自動(dòng)化機(jī)制供常,大大減少了運(yùn)維成本摊聋。

? Kubernetes是一個(gè)開(kāi)放的平臺(tái),不局限于任何一種語(yǔ)言栈暇,所以你可以把Java ,Go 又或者是C++映射成Kubernetes的Service麻裁,并通過(guò)標(biāo)準(zhǔn)的TCP協(xié)議進(jìn)行交互。而且源祈,對(duì)于現(xiàn)有的系統(tǒng)我們也可以很容易改造并升級(jí)到Kubernetes平臺(tái)上煎源。

? Kubernetes是一個(gè)完備的分布式系統(tǒng)支撐平臺(tái),Kubernetes 具有完備的集群管理能力香缺,包括多層次的安全防護(hù)和準(zhǔn)入機(jī)制手销,多租戶應(yīng)用支撐能力,透明的服務(wù)注冊(cè)和服務(wù)發(fā)現(xiàn)機(jī)制赫悄,內(nèi)建智能負(fù)載均衡器原献,強(qiáng)大的故障發(fā)現(xiàn)和自我修復(fù)能力,服務(wù)滾動(dòng)升級(jí)和在線擴(kuò)容能力等等埂淮。

3.為什么用Kubernetes :

我們知道姑隅,Docker的出現(xiàn),很好的解決了環(huán)境不一致的問(wèn)題倔撞,但是對(duì)于日益普及的微服務(wù)架構(gòu)讲仰,我們可能需要部署的服務(wù)器成百上千,我們無(wú)法做到手動(dòng)啟用和維護(hù)這些服務(wù)器痪蝇,因此鄙陡,容器編排就顯得尤為重要冕房,簡(jiǎn)單的說(shuō),容器編排的目的就是告訴服務(wù)器集群要使用哪些機(jī)器來(lái)運(yùn)行當(dāng)前的服務(wù)趁矾。

? 加強(qiáng)團(tuán)隊(duì)協(xié)作耙册,采用Kubernetes解決方案之后,我們只需要一名架構(gòu)師專注于系統(tǒng)中“服務(wù)組件”的提煉毫捣,幾名開(kāi)發(fā)工程師專注于業(yè)務(wù)開(kāi)發(fā)详拙,一名系統(tǒng)兼運(yùn)維工程師負(fù)責(zé)Kubernetes的部署和運(yùn)維。

? Kubernetes 全面擁抱微服務(wù)蔓同,微服務(wù)的核心就是將一個(gè)巨大的單體應(yīng)用分解為很多小的互相關(guān)聯(lián)的微服務(wù)饶辙,一個(gè)微服務(wù)背后可能有多個(gè)實(shí)例副本支撐,副本的數(shù)量可能隨著系統(tǒng)的負(fù)荷變化而調(diào)整斑粱,我們有內(nèi)嵌的負(fù)載均衡器來(lái)實(shí)現(xiàn)這樣的功能弃揽。

? Kubernetes 可隨時(shí)遷移到公有云上,以及基于OpenStack的私有云上则北。

? Kubernetes系統(tǒng)架構(gòu)具備了超強(qiáng)的橫向擴(kuò)容能力矿微,不用修改代碼,一個(gè)Kubernetes集群即可從只包含幾個(gè)Node的小集群平滑擴(kuò)展到擁有上百個(gè)Node的大規(guī)模集群尚揣。


二蒋失、Kubernetes 基本概念和術(shù)語(yǔ)

Kubernetes有三種主要訪問(wèn)入口:API 躁锁、UI 栏尚、CLI栅隐。

Kubernetes 請(qǐng)求入口

Kubernetes中的大部分概念如Node挖息、Pod背桐、Replication Controller系宜、Service等都可以看做一種“資源對(duì)象”骑丸,幾乎所有的資源對(duì)象都可以通過(guò)kubetcl工具執(zhí)行crud的操作并使用etcd做持久化存儲(chǔ)俺叭。我們首先來(lái)了解下兩個(gè)重要的管理角色:Master & Node

1.Master:

? ? Kubernetes 里面的Master指的是集群控制節(jié)點(diǎn)恭取,每個(gè)Kubernetes的集群里面需要有一個(gè)Master節(jié)點(diǎn)來(lái)負(fù)責(zé)整個(gè)集群的管理和控制,基本所有的Kubernetes所有控制指令都發(fā)給他熄守,他來(lái)負(fù)責(zé)具體的執(zhí)行過(guò)程蜈垮。Master節(jié)點(diǎn)通常會(huì)占領(lǐng)一個(gè)獨(dú)立的服務(wù)器,甚至我們需要3臺(tái)左右來(lái)做高可用裕照,畢竟他是整個(gè)集群的首腦攒发,一旦宕機(jī),整個(gè)集群就會(huì)處于癱瘓狀態(tài)晋南。

Master節(jié)點(diǎn)有如下幾個(gè)關(guān)鍵模塊:

? Kubernetes API Server (K8S自有模塊): 提供了Http Rest接口的關(guān)鍵服務(wù)進(jìn)程惠猿,是Kubernetes集群里面所有資源的crud(接收客戶端請(qǐng)求)的唯一操作入口,并驗(yàn)證客戶請(qǐng)求是都符合規(guī)范负间,也是集群控制的入口進(jìn)程偶妖。

? Kubernetes Controller Manager(K8S自有模塊)Kubernetes 所有資源對(duì)象自動(dòng)化控制中心姜凄。申明式的(用戶不關(guān)心是怎么創(chuàng)建出來(lái)的)資源創(chuàng)建,并確保創(chuàng)建出來(lái)的資源完全滿足要求趾访,并且處于健康的運(yùn)行狀態(tài)(Controller Loop管理)态秧。一旦用戶有請(qǐng)求過(guò)來(lái),Controller模塊會(huì)watch到需要的變更扼鞋,

? Kubernetes Scheduler(K8S自有模塊)負(fù)責(zé)資源調(diào)度(Pod調(diào)度)的進(jìn)程申鱼,當(dāng)我們通過(guò)API 、UI 藏鹊、CLI向Master申請(qǐng)創(chuàng)建一個(gè)容器润讥,這個(gè)容器到底要運(yùn)行在哪個(gè)Node上,那么Schedule就是主要用來(lái)評(píng)估哪個(gè)Node節(jié)點(diǎn)是最佳的盘寡,然后將我們要起的Pod在哪個(gè)Node上運(yùn)行

? Kubernetes etcd: Kubernetes 持久化存儲(chǔ)楚殿,etcd本不屬于Master,是由CoreOS公司開(kāi)發(fā)的一款持久化存儲(chǔ)

2.Node:

除了Master節(jié)點(diǎn)竿痰,Kubernetes 集群中的其他節(jié)點(diǎn)被稱為Node節(jié)點(diǎn)脆粥,他可以是物理機(jī)也可以是虛擬機(jī),Node節(jié)點(diǎn)是整個(gè)集群中的工作負(fù)載影涉,每個(gè)Node都會(huì)被Master分配一些工作負(fù)載(Docker Container)变隔,當(dāng)某個(gè)Node宕機(jī)時(shí),他的工作負(fù)載會(huì)被轉(zhuǎn)移到其他的節(jié)點(diǎn)上去蟹倾。

每個(gè)Node節(jié)點(diǎn)上都會(huì)運(yùn)行下一組關(guān)鍵進(jìn)程:

? kubelet:負(fù)責(zé)Pod對(duì)應(yīng)的容器的創(chuàng)建匣缘、啟停等任務(wù),同時(shí)與Master節(jié)點(diǎn)密切合作鲜棠,實(shí)現(xiàn)集群管理的基本功能

? kube-proxy:實(shí)現(xiàn)Kubernetes Service的通信與負(fù)載均衡機(jī)制的重要組件

? Docker Engine:Docker引擎肌厨,負(fù)責(zé)本機(jī)的容器的創(chuàng)建和管理

Node節(jié)點(diǎn)可以在運(yùn)行期間動(dòng)態(tài)增加到Kubernetes集群中去,前提是這個(gè)節(jié)點(diǎn)上已經(jīng)正確安裝豁陆、配置和啟動(dòng)了上述的所有關(guān)鍵進(jìn)程柑爸,默認(rèn)情況下kubelet會(huì)向Master注冊(cè)自己。一旦Node被納入集群管理范圍盒音,kubelet會(huì)定時(shí)向Master節(jié)點(diǎn)匯報(bào)自身的情況表鳍,如操作系統(tǒng)、Docker版本祥诽、機(jī)器的CPU和memory使用情況譬圣。當(dāng)某個(gè)Node超過(guò)指定的時(shí)間不上報(bào)信息的時(shí)候,會(huì)被Master判定為失聯(lián)原押,Node狀態(tài)會(huì)被標(biāo)記為不可用胁镐,隨后會(huì)將該Node的工作負(fù)載轉(zhuǎn)移到其他Node。

3.Pod:

Pod是一組容器的組合,每個(gè)Pod都包含一個(gè)Pause容器以及若干個(gè)業(yè)務(wù)相關(guān)的容器

1.Kubernetes Pod

為什么Kubernetes會(huì)設(shè)計(jì)出Pod這樣一個(gè)概念盯漂,并且有這樣的組成結(jié)構(gòu)呢颇玷?

? 原因1:在一組容器作為一個(gè)單元的情況下,我們很難根據(jù)一臺(tái)機(jī)器的狀態(tài)來(lái)判斷整體的狀態(tài)就缆,因此我們引入與業(yè)務(wù)無(wú)關(guān)并且不容易死亡的Pause容器作為Pod的根容器帖渠,他來(lái)代表整個(gè)容器組的狀態(tài)

? 原因2:Pod里多個(gè)業(yè)務(wù)容器共享Pause容器的IP,共享Pause容器的Volume竭宰,這樣既簡(jiǎn)化了密切關(guān)聯(lián)的業(yè)務(wù)容器之間的通信問(wèn)題空郊,也解決了他們之間的文件共享問(wèn)題

我們用一張圖來(lái)表示Node Pod和Container之間的關(guān)系:

2.Kubernetes Node Pod和Container

普通的Pod一旦被創(chuàng)建,會(huì)被放到etcd中存儲(chǔ)切揭,隨后會(huì)被Master調(diào)度到某個(gè)具體的Node上并進(jìn)行綁定狞甚,隨后該P(yáng)od被對(duì)應(yīng)Node上的kubelet進(jìn)程實(shí)例化程一組相關(guān)的Docker容器并啟動(dòng)起來(lái)。

4.Label:

Lable是Kubernetes系統(tǒng)中另外一個(gè)核心概念廓旬,一個(gè)Label是一個(gè)key=value的鍵值對(duì)哼审,key和value由用戶自己定義,Label可以附加到各種資源對(duì)象上孕豹,例如Node涩盾,Pod,Service励背,RC等等春霍,一個(gè)資源對(duì)象可以定義任意數(shù)量的Label,同一個(gè)Label也能被添加到任意數(shù)量的資源對(duì)像上去叶眉。例如:

? 版本標(biāo)簽:"release" : "stable"

? 環(huán)境標(biāo)簽:"Environment" : "DEV"

? 分區(qū)標(biāo)簽 :"partition" : "customerA"


3. Kubernetes Label

我們可以用Label Selector查詢和篩選擁有某些Label的資源對(duì)象址儒。我們查詢方式有兩種:

? name = redis-slave : 匹配所有具有標(biāo)簽name = redis-slave 的資源對(duì)象

? name in (redis-master , redis-slave):匹配素有具有標(biāo)簽name = redis-master和name = redis-slave的資源對(duì)象

我們的label標(biāo)簽主要有以下幾種使用場(chǎng)景:

? kube-controller : 通過(guò)資源對(duì)象RC上定義的Label Selector來(lái)篩選要監(jiān)控的Pod副本的數(shù)量,從而實(shí)現(xiàn)Pod副本數(shù)量實(shí)在符合預(yù)期設(shè)定的全自動(dòng)控制流程衅疙。

? kube-proxy :? 通過(guò)Service的Label Selector來(lái)選擇對(duì)應(yīng)的Pod离福,自動(dòng)建立起每個(gè)Service到對(duì)應(yīng)Pod的請(qǐng)求轉(zhuǎn)發(fā)路由表,從而實(shí)現(xiàn)Service的智能負(fù)載均衡機(jī)制炼蛤。

總之,使用Label可以給對(duì)象創(chuàng)建多組標(biāo)簽蝶涩,Label和Label Selector共同構(gòu)成了Kubernetes 系統(tǒng)中最核心的應(yīng)用模型理朋,使得被管理對(duì)象能夠被精細(xì)的分組管理,同時(shí)實(shí)現(xiàn)整個(gè)集群的高可用性绿聘。

5.Replication Controller:

RC是Kubernetes 核心概念之一嗽上,他定義了一個(gè)期望的場(chǎng)景,即聲明某種Pod的副本數(shù)量在任意時(shí)刻符合某個(gè)預(yù)期值熄攘,了解云平臺(tái)的小伙伴都知道兽愤,類似于AutoScaling所定義的虛機(jī)數(shù)目,可以設(shè)置在任意時(shí)刻必須要有N臺(tái)機(jī)器處于運(yùn)行狀態(tài)。RC定義包括:

? Pod期待的副本數(shù)(replicas)

? 用于篩選目標(biāo)Pod的Label Selector

? 當(dāng)副本數(shù)小于預(yù)期數(shù)時(shí)浅萧,用于創(chuàng)建新的Pod的Pod模板(template)

當(dāng)我們定義好一個(gè)RC并提交到Kubernetes 集群后逐沙,Master節(jié)點(diǎn)上的Controller Manager組件就得到通知,定期巡檢系統(tǒng)中當(dāng)前存活的目標(biāo)Pod洼畅,并且確保目標(biāo)Pod實(shí)例的數(shù)量剛好等于此RC的期望值吩案,如果有過(guò)多的Pod在運(yùn)行,系統(tǒng)就會(huì)停掉一些Pod帝簇,否則系統(tǒng)會(huì)在創(chuàng)建一些Pod徘郭。

假如我們?cè)赗C里定義redis-slave這個(gè)Pod需要2個(gè)副本,那么系統(tǒng)會(huì)在其中兩個(gè)Node上保持兩個(gè)Pod丧肴。如下圖:

4. Kubernetes Replication Controller? --- 2 Pod case

此外残揉,在運(yùn)行時(shí),我們可以通過(guò)修改RC的副本數(shù)量芋浮,來(lái)實(shí)現(xiàn)Pod的動(dòng)態(tài)縮放:

? ? ? ? ? ? ? ? kubectl scale rc redis-slave --replicas=3

我們需要注意的是抱环,刪除RC不會(huì)刪除已經(jīng)創(chuàng)建好的Pod,如果需要?jiǎng)h除所有符合條件的Pod途样,可以設(shè)置replicas的值為0江醇,然后更新RC即可。

在Kubernetes 1.2中我們升級(jí)成另一個(gè)概念:Replica Set何暇。功能方面陶夜,Repica Set支持Set-based selector.

最后我們來(lái)看下RC(Replica Set)的特性:

? 我們通過(guò)定義一個(gè)RC來(lái)實(shí)現(xiàn)Pod的創(chuàng)建過(guò)程以及副本數(shù)量的控制

? RC中包括完整的Pod定義模板

? RC通過(guò)Label Selector機(jī)制實(shí)現(xiàn)對(duì)Pod副本的自動(dòng)控制

? 通過(guò)改變RC里的Pod數(shù)量,可以實(shí)現(xiàn)Pod的擴(kuò)容

? 通過(guò)改變RC中的Pod模板的鏡像版本裆站,可以實(shí)現(xiàn)Pod的滾動(dòng)升級(jí)功能

6.Deployment:

Deployment是Kubernetes 1.2引入的新概念条辟,引入的目的是為了更好的解決Pod的編排問(wèn)題。Deployment在內(nèi)部使用的是Replica Set來(lái)實(shí)現(xiàn)目的宏胯,因此他可以看做是R

3.C的一次升級(jí)羽嫡。

Deployment相對(duì)于RC最大的一個(gè)升級(jí)是可以隨時(shí)知道當(dāng)前Pod的部署進(jìn)度,實(shí)際上由于一個(gè)Pod的創(chuàng)建肩袍、調(diào)度杭棵、綁定節(jié)點(diǎn)以及在目標(biāo)Node上啟動(dòng)對(duì)應(yīng)容器這一完整過(guò)程需要一定時(shí)間,所以我們期待系統(tǒng)啟動(dòng)N個(gè)Pod副本的目標(biāo)狀態(tài)氛赐,其實(shí)是一個(gè)連續(xù)的過(guò)程魂爪。

Deployment使用場(chǎng)景有如下幾個(gè):

? 創(chuàng)建一個(gè)Deployment對(duì)象來(lái)生成對(duì)應(yīng)的Replica Set 并完成Pod副本的創(chuàng)建過(guò)程

? 檢查Deployment的狀態(tài)來(lái)看部署動(dòng)作是否完成

? 更新Deployment以創(chuàng)建新的Pod

? 如果當(dāng)前的Deployment不穩(wěn)定,則回滾到早先的Deployment版本

? 查看Deployment狀態(tài)艰管,一次作為發(fā)布是否成功的目標(biāo)

7.Service:

Kubernetes中的每個(gè)服務(wù)其實(shí)就是微服務(wù)滓侍,之前的Pod RC等等,都是為Service服務(wù)的:


5. Kubernetes Service

? Service定義了一個(gè)服務(wù)的訪問(wèn)入口地址

? 前端應(yīng)用(Pod)通過(guò)這個(gè)入口地址訪問(wèn)其背后的一組由Pod副本組成的集群實(shí)例牲芋。

? Service與其后端Pod副本集群之間是通過(guò)Label Selector來(lái)實(shí)現(xiàn)無(wú)縫對(duì)接的

? RC保證Service的服務(wù)能力和服務(wù)質(zhì)量始終處于預(yù)期標(biāo)準(zhǔn)

運(yùn)行在每個(gè)Node上的Kube-proxy進(jìn)程其實(shí)就是一個(gè)只能的負(fù)載均衡器撩笆,他負(fù)責(zé)把對(duì)Service的請(qǐng)求轉(zhuǎn)發(fā)到后端的某個(gè)Pod上捺球,并在內(nèi)部實(shí)現(xiàn)服務(wù)的負(fù)載均衡與會(huì)話保持機(jī)制。Service不是共用一個(gè)負(fù)載均衡器的IP地址夕冲,而是每個(gè)Service分配了一個(gè)全局的IP地址氮兵,這個(gè)虛擬IP稱為Cluster IP。

外部系統(tǒng)訪問(wèn)Service的問(wèn)題:

在Kubernetes中我們有三種IP:

? Node IP: Node節(jié)點(diǎn)的IP地址耘擂,是集群中每個(gè)節(jié)點(diǎn)的物理網(wǎng)卡的IP地址胆剧,是一個(gè)真實(shí)存在的物理網(wǎng)絡(luò)

? Pod IP: Pod的IP地址,是Docker Enginne根據(jù)docker()網(wǎng)橋的IP地址段進(jìn)行分配的醉冤,通常是一個(gè)虛擬的二層網(wǎng)絡(luò)

? Cluster IP :Service的IP地址秩霍,是一種虛擬IP,僅僅作用于Kubernetes Service這個(gè)對(duì)象蚁阳,并且由Kubernetes管理和分配IP地址铃绒,他是無(wú)法被ping到的,因?yàn)樗且粋€(gè)虛擬的對(duì)象

小結(jié):Service的Cluster IP屬于Kubernetes集群內(nèi)部的地址螺捐,無(wú)法在集群外部直接使用這個(gè)地址颠悬,如果需要提供給外部用戶使用,可以采用NodePort解決

8.Volume

Volume是Pod中能夠被多個(gè)容器訪問(wèn)的共享目錄

如何使用:在Pod上聲明一個(gè)Volume定血,然后在容器里引用該Volume并Mount到容器的某個(gè)目錄上

我們來(lái)看下Kubernetes提供的Volume類型:

? emptyDir:在Pod分配到Node時(shí)創(chuàng)建的臨時(shí)空間赔癌,初始內(nèi)容為空,并且無(wú)需指定宿主機(jī)上對(duì)應(yīng)的目錄文件澜沟,因?yàn)檫@個(gè)是Kubernetes自動(dòng)分配的一個(gè)目錄灾票,當(dāng)Pod從Node上移除時(shí),emptyDir中的數(shù)據(jù)也會(huì)被永久刪除茫虽。

? hostPath:在Pod上掛在宿主機(jī)上的文件或目錄刊苍,可以用于以下幾個(gè)方面:

? ? 1.容器應(yīng)用程序生成的日志文件需要永久保存時(shí),可以使用宿主機(jī)的高度文件系統(tǒng)進(jìn)行存儲(chǔ)

? ? 2.需要訪問(wèn)宿主機(jī)上的Docker引擎內(nèi)部數(shù)據(jù)結(jié)構(gòu)的容器應(yīng)用時(shí)濒析,可以通過(guò)定義hostPath為宿主機(jī)/var/lib/docker目錄正什,使得容器內(nèi)部應(yīng)用可以直接訪問(wèn)Docker的文件系統(tǒng)。

? Persistent Volume:前面兩種是定義在Pod上的計(jì)算資源号杏,而網(wǎng)絡(luò)存儲(chǔ)是相對(duì)獨(dú)立于計(jì)算資源的一種實(shí)體資源婴氮,例如AWSElasticBlockStore,AzureFile等~

9.NameSpace

在Kubernetes中,NameSpace在很多情況下用于資源隔離盾致,NameSpace通過(guò)將集群內(nèi)部的資源對(duì)象分配到不同的NameSpace中莹妒,形成邏輯上的不同分組,便于不同分組在共享使用整個(gè)集群的資源的同時(shí)還能被分別管理绰上。

Kubernetes集群子啟動(dòng)后,會(huì)創(chuàng)建一個(gè)default的NameSpace渠驼。一旦創(chuàng)建了NameSpace我們?cè)诙x資源的時(shí)候就可以指定這個(gè)資源屬于哪個(gè)NameSpace蜈块。

當(dāng)我們?cè)诮o每個(gè)用戶創(chuàng)建NameSpace來(lái)實(shí)現(xiàn)多個(gè)用戶資源隔離時(shí),還可以結(jié)合Kubernetes的資源配額管理,限定不同用戶能占用的資源百揭,比如CPU爽哎、內(nèi)存等等~

10.Anotation

Annotation與Label類似,也是使用Key/Value的形式定義器一,但是Label有嚴(yán)格的命名規(guī)則课锌,當(dāng)天定義的是Kubernetes對(duì)象元素(Metadata),并且勇于Label Selector;Annotation則是用戶定義的附加信息祈秕,以便于外部工具進(jìn)行查找渺贤,比如,Annotation可以定義如下信息:

build信息请毛,release信息志鞍,Docker鏡像信息等。


小結(jié)

上述這些組件是Kubernetes系統(tǒng)的核心組件方仿,他們共同構(gòu)成了Kubernetes系統(tǒng)的框架和計(jì)算模型固棚。通過(guò)對(duì)他們進(jìn)行靈活組合,用戶可以快速仙蚜、方便的對(duì)容器和集群進(jìn)行配置此洲、創(chuàng)建和管理。

下面我們會(huì)對(duì)各個(gè)模塊最詳細(xì)的闡述委粉。


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末呜师,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子艳丛,更是在濱河造成了極大的恐慌匣掸,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,723評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件氮双,死亡現(xiàn)場(chǎng)離奇詭異碰酝,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)戴差,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)送爸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人暖释,你說(shuō)我怎么就攤上這事袭厂。” “怎么了球匕?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,998評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵纹磺,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我亮曹,道長(zhǎng)橄杨,這世上最難降的妖魔是什么秘症? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,323評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮式矫,結(jié)果婚禮上乡摹,老公的妹妹穿的比我還像新娘。我一直安慰自己采转,他們只是感情好聪廉,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著故慈,像睡著了一般板熊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上惯悠,一...
    開(kāi)封第一講書(shū)人閱讀 49,079評(píng)論 1 285
  • 那天邻邮,我揣著相機(jī)與錄音,去河邊找鬼克婶。 笑死筒严,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的情萤。 我是一名探鬼主播鸭蛙,決...
    沈念sama閱讀 38,389評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼筋岛!你這毒婦竟也來(lái)了娶视?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,019評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤睁宰,失蹤者是張志新(化名)和其女友劉穎肪获,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體柒傻,經(jīng)...
    沈念sama閱讀 43,519評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡孝赫,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了红符。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片青柄。...
    茶點(diǎn)故事閱讀 38,100評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖预侯,靈堂內(nèi)的尸體忽然破棺而出致开,到底是詐尸還是另有隱情,我是刑警寧澤萎馅,帶...
    沈念sama閱讀 33,738評(píng)論 4 324
  • 正文 年R本政府宣布双戳,位于F島的核電站,受9級(jí)特大地震影響糜芳,放射性物質(zhì)發(fā)生泄漏飒货。R本人自食惡果不足惜千诬,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望膏斤。 院中可真熱鬧,春花似錦邪驮、人聲如沸莫辨。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,289評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)沮榜。三九已至,卻和暖如春喻粹,著一層夾襖步出監(jiān)牢的瞬間蟆融,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,517評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工守呜, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留型酥,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,547評(píng)論 2 354
  • 正文 我出身青樓查乒,卻偏偏與公主長(zhǎng)得像弥喉,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子玛迄,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評(píng)論 2 345

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