轉(zhuǎn)載:基于Kubernetes的持續(xù)部署方案

轉(zhuǎn)載:基于Kubernetes的持續(xù)部署方案


方案概述

本技術(shù)方案為基于Kubernetes為核心的持續(xù)部署(下文簡(jiǎn)稱CD)方案,可以滿足開(kāi)發(fā)方的程序級(jí)日志查看分析伯襟,運(yùn)維方的快速擴(kuò)容與日常運(yùn)維分析,并且可以保證用戶的服務(wù)體驗(yàn)敞恋。并且整套放在可以在資源利用率上進(jìn)一步提升甸昏,在不降低服務(wù)可靠性的前提下降低資源使用成本蛤迎。

使用場(chǎng)景分析

本方案適用于以Tomcat為容器的JavaWeb項(xiàng)目的持續(xù)部署過(guò)程,在Kubernetes方案中觅彰,所有的Node節(jié)點(diǎn)均采用統(tǒng)一配置吩蔑,根據(jù)業(yè)務(wù)環(huán)境的需求進(jìn)行節(jié)點(diǎn)數(shù)量的控制。

技術(shù)架構(gòu)與選型

Kubernetes:一個(gè)開(kāi)源的填抬,用于管理云平臺(tái)中多個(gè)主機(jī)上的容器化的應(yīng)用烛芬,Kubernetes的目標(biāo)是讓部署容器化的應(yīng)用簡(jiǎn)單并且高效,Kubernetes提供了應(yīng)用部署,規(guī)劃赘娄,更新仆潮,維護(hù)的一種機(jī)制。

Nginx:一款輕量級(jí)的Web 服務(wù)器/反向代理服務(wù)器及電子郵件(IMAP/POP3)代理服務(wù)器擅憔。

Harbor:Harbor是一個(gè)用于存儲(chǔ)和分發(fā)Docker鏡像的企業(yè)級(jí)Registry服務(wù)器鸵闪,通過(guò)添加一些企業(yè)必需的功能特性,例如安全暑诸、標(biāo)識(shí)和管理等蚌讼,擴(kuò)展了開(kāi)源Docker Distribution。

Jenkins:一個(gè)開(kāi)源軟件項(xiàng)目个榕,是基于Java開(kāi)發(fā)的一種持續(xù)集成工具篡石,用于監(jiān)控持續(xù)重復(fù)的工作,旨在提供一個(gè)開(kāi)放易用的軟件平臺(tái)西采,使軟件的持續(xù)集成變成可能凰萨。

Filebeats:是一個(gè)日志文件托運(yùn)工具,在你的服務(wù)器上安裝客戶端后械馆,F(xiàn)ilebeat會(huì)監(jiān)控日志目錄或者指定的日志文件胖眷,追蹤讀取這些文件(追蹤文件的變化,不停的讀)霹崎,并且轉(zhuǎn)發(fā)這些信息到Elasticsearch或者Logstarsh中存放珊搀。

Elasticsearch:是一個(gè)基于Lucene構(gòu)建的開(kāi)源、分布式尾菇、RESTful接口的全文搜索引擎境析。

Kibana是一個(gè)開(kāi)源的分析和可視化平臺(tái),設(shè)計(jì)用于和Elasticsearch一起工作來(lái)搜索派诬,查看劳淆,并和存儲(chǔ)在Elasticsearch索引中的數(shù)據(jù)進(jìn)行交互。

GitLab自托管的Git項(xiàng)目倉(cāng)庫(kù)默赂,可通過(guò)Web界面進(jìn)行訪問(wèn)公開(kāi)的或者私人項(xiàng)目(這里的GitLab并不涉及到開(kāi)發(fā)的CI方案沛鸵,主要為運(yùn)維的CD方案)。

Weave Scope Docker和Kubernetes可視化監(jiān)控工具缆八。Scope提供了至上而下的集群基礎(chǔ)設(shè)施和應(yīng)用的完整視圖谒臼,用戶可以輕松對(duì)分布式的容器化應(yīng)用進(jìn)行實(shí)時(shí)監(jiān)控和問(wèn)題診斷。

Kubernetes集群部署模式:Stacked etcd topology

Kubernetes的安裝使用kubeadm安裝為高可用集群耀里,并選用Stacked etcd topology 模式。?

詳情參考https://kubernetes.io/docs/setup/independent/high-availability/拾氓。

Kubernetes生態(tài)技術(shù)選型:網(wǎng)絡(luò)層面選型Weave

容器網(wǎng)絡(luò)解決方案冯挎。Weave創(chuàng)建的虛擬網(wǎng)絡(luò)可以將部署在多個(gè)主機(jī)上的容器連接起來(lái)。對(duì)容器來(lái)說(shuō),Weave就像一個(gè)巨大的以太網(wǎng)交換機(jī)房官,所有容器都被接入這個(gè)交換機(jī)趾徽,容器可以直接通信,無(wú)需 NAT 和端口映射翰守。?

原理詳解:http://dockone.io/article/262

Kubernetes生態(tài)技術(shù)選型:對(duì)外服務(wù)選型NodePort

Kubernetes目前支持NodePort孵奶、LoadBanlace、Ingress三種對(duì)外提供服務(wù)的模式蜡峰,其中LoadBanlace需要云平臺(tái)的支持了袁,阿里云提供了解決方案,但騰訊云未找到湿颅,Ingress技術(shù)為新出技術(shù)载绿。整體評(píng)估采用NodePort方式更為靈活,每個(gè)服務(wù)一個(gè)唯一的對(duì)外IP地址油航,并且使用Nginx進(jìn)行負(fù)載均衡(采用Nginx主要為日志分析)崭庸。?

介紹與使用方法:https://kubernetes.io/docs/concepts/services-networking/service/#nodeport。

持續(xù)部署過(guò)程

Jenkins構(gòu)建時(shí)谊囚,需要傳入程序版本號(hào)怕享,構(gòu)建類型(發(fā)布還是刪除),程序類型(測(cè)試還是正式)镰踏。

CD的全過(guò)程由位于Jenkins上的腳本執(zhí)行

開(kāi)發(fā)部將對(duì)應(yīng)版本的ROOT.war傳入Jenkins指定目錄

下拉配置(包含config函筋,hosts,dockerfile余境,k8syaml等等)

由Dockerfile生成Docker容器驻呐,并將root.war,hosts與配置文件內(nèi)置入容器中

將Docker容器打包并推送入Registry

通過(guò)kubectl通過(guò)k8syaml更新/生成新的服務(wù)

各組件業(yè)務(wù)配置

Kubernetes業(yè)務(wù)配置

命名空間

在業(yè)務(wù)上芳来,Kubernetes默認(rèn)配置兩套Namespace含末,分別為Master存放正式環(huán)境,Develop配置測(cè)試環(huán)境即舌。

對(duì)外端口

正式環(huán)境Web端口以32001開(kāi)始佣盒,測(cè)試環(huán)境以31001開(kāi)始,且一一對(duì)應(yīng)顽聂。

Master數(shù)據(jù)目錄

/data

└── k8s-cd-config

└── test.gyyx.cn

? ?├── develop

? ?│ ? └── v1.2.0-92-3fdd00f.yaml

? ?├─develop.yaml -> /data/k8s-cd-config/test.gyyx.cn/develop/v1.2.0-92-3fdd00f.yaml

? ?├── master

? ?│ ? └── v1.2.0-91-746284e.yaml

? ?└──master.yaml->/data/k8s-cd-config/test.gyyx.cn/master/v1.2.0-91-746284e.yaml

K8s-Master下的data目錄下為k8s-cd-config肥惭, k8s-cd-config目錄存放各業(yè)務(wù)的yaml配置,二級(jí)目錄為域名紊搪,三級(jí)目錄劃分Master(正式)蜜葱,Develop(測(cè)試),目錄下以 版本號(hào)-構(gòu)建ID-GITID.yaml 命名文件耀石,時(shí)間最后一個(gè)即為當(dāng)前線上的使用配置文件牵囤,為了運(yùn)維方便,在二級(jí)目錄同級(jí)內(nèi),生成一個(gè)軟鏈連接到最新的正式與測(cè)試配置文件揭鳞。注意炕贵,k8s-cd-config僅在其中一臺(tái)Master中存在。

Node數(shù)據(jù)目錄

/data

├── filebeat

├── dockerlibs

└── nodelogs

? ?├── develop

? ?│ ? ├── accesslogs

? ?│ ? │ ? └── test.gyyx.cn

? ?│ ? │ ? ? ? └── test-gyyx-cn-76d9d8d5b5-hdnql

? ?│ ? │ ? ? ? ? ? └── localhost_access_log.2018-12-24.txt

? ?│ ? ├── devlogs

? ?│ ? │ ? └── test.gyyx.cn

? ?│ ? │ ? ? ? └── test-gyyx-cn-76d9d8d5b5-hdnql

? ?│ ? │ ? ? ? ? ? └── interface.datareport.wyx.cn

? ?│ ? │ ? ? ? ? ? ? ? ├── error.log

? ?│ ? │ ? ? ? ? ? ? ? ├── info.log

? ?│ ? │ ? ? ? ? ? ? ? └── trace.log

? ?│ ? └── tomcatlogs

? ?│ ? ? ? └── test.gyyx.cn

? ?│ ? ? ? ? ? └── test-gyyx-cn-76d9d8d5b5-hdnql

? ?│ ? ? ? ? ? ? ? ├── catalina.2018-12-24.log

? ?│ ? ? ? ? ? ? ? ├── host-manager.2018-12-24.log

? ?│ ? ? ? ? ? ? ? ├── localhost.2018-12-24.log

? ?│ ? ? ? ? ? ? ? └── manager.2018-12-24.log

? ?└── master

? ? ? ?├── accesslogs

? ? ? ?│ ? └── test.gyyx.cn

? ? ? ?│ ? ? ? └── test-gyyx-cn-895cc5994-sx7gk

? ? ? ?│ ? ? ? ? ? └── localhost_access_log.2018-12-24.txt

? ? ? ?├── devlogs

? ? ? ?│ ? └── test.gyyx.cn

? ? ? ?│ ? ? ? └── test-gyyx-cn-895cc5994-sx7gk

? ? ? ?└── tomcatlogs

? ? ? ? ? ?└── test.gyyx.cn

? ? ? ? ? ? ? ?└── test-gyyx-cn-895cc5994-sx7gk

? ? ? ? ? ? ? ? ? ?├── catalina.2018-12-24.log

? ? ? ? ? ? ? ? ? ?├── host-manager.2018-12-24.log

? ? ? ? ? ? ? ? ? ?├── localhost.2018-12-24.log

? ? ? ? ? ? ? ? ? ?└── manager.2018-12-24.log

節(jié)點(diǎn)下的/data一級(jí)目錄下分Filebeat野崇、Dockerlibs称开、Nodelogs,其中Dockerlibs存放Docker相關(guān)數(shù)據(jù)乓梨,Nodelogs目錄通過(guò)volume的方式掛載入Kubernetes的Pod鳖轰, Nodelogs下分Develop與Master目錄,區(qū)分正式環(huán)境與測(cè)試環(huán)境督禽,每個(gè)Master與Develop下分為accesslogs脆霎、devlogs、tomcatlogs分別存放訪問(wèn)日志狈惫,開(kāi)發(fā)部日志睛蛛,Tomcat日志,日志目錄下為項(xiàng)目(域名)胧谈,域名下為Pod名稱目錄忆肾。

注意事項(xiàng): 節(jié)點(diǎn)加入集群后,一定要下載手工下載kubernetes-dashboard-amd64鏡像菱肖,防止dashboard所在節(jié)點(diǎn)掛掉以后dashboard無(wú)法在其他節(jié)點(diǎn)啟動(dòng)客冈。

Harbor業(yè)務(wù)配置

業(yè)務(wù)分組

Harbor重定義其Registry的存儲(chǔ)路徑直接使用docker-compose安裝。template 存放基礎(chǔ)進(jìn)項(xiàng)稳强,各域名分組存放業(yè)務(wù)鏡像场仲。?

鏡像命名

分組下鏡像以站點(diǎn)域名:版本號(hào)-類型-CDGITLAB為名稱,并基于版本號(hào)確定不同的站點(diǎn)版本退疫。?

數(shù)據(jù)目錄

Harbor數(shù)據(jù)目錄統(tǒng)一存放在/data下渠缕。

備份策略

Harbor默認(rèn)不設(shè)置備份,對(duì)于業(yè)務(wù)鏡像無(wú)需進(jìn)行備份褒繁,每次進(jìn)行構(gòu)建即可亦鳞,對(duì)于模板類鏡像,在Jenkins機(jī)器上均可以找到棒坏,若Harbor出現(xiàn)問(wèn)題燕差,則直接重建,并將Jenkins上的模板鏡像進(jìn)行重新push坝冕。

注意:為了業(yè)務(wù)的穩(wěn)定性徒探,Harbor由獨(dú)立的服務(wù)運(yùn)行(基于Docker),并不運(yùn)行在Kubernetes內(nèi)喂窟。

Jenkins業(yè)務(wù)配置

數(shù)據(jù)目錄

.

├── dockerlibs

├── thinbackups

└── gitlab-files

│ ?└── gyyx.cn

│ ? ? ?└── test.gyyx.cn

└── jks-cd-config

? ?└── test.gyyx.cn

? ? ? ?└── v1.2.0

? ? ? ? ? ?├── develop

? ? ? ? ? ?│ ? └── 101_138a37a

? ? ? ? ? ?│ ? ? ? ├── …

? ? ? ? ? ?│ ? ? ? └── v1.2.0-101-138a37a.yaml

? ? ? ? ? ?├── master

? ? ? ? ? ?│ ? └── 102_4f228a7

? ? ? ? ? ?│ ? ? ? ├── …

? ? ? ? ? ?│ ? ? ? └── v1.2.0-102-4f228a7.yaml

? ? ? ? ? ?└── ROOT.war

Jenkins下的data目錄分為dockerlibs刹帕、thinbackups吵血、gitlab-files 、jks-cd-config偷溺。

Dockerlibs存放Docker相關(guān)文件,thinbackups存放每日的Jenkins備份钱贯,gitlab-files存放構(gòu)建GitLab的文件(運(yùn)維可以在此操作pull挫掏,push),jks-cd-config為jks構(gòu)建目錄秩命。

Jenkins機(jī)使用/data/jks-cd-config目錄存放構(gòu)建內(nèi)容尉共,二級(jí)目錄為域名,三級(jí)目錄為版本號(hào)(以開(kāi)發(fā)部版本號(hào)為準(zhǔn))弃锐,三級(jí)目錄下存放ROOT.war袄友,四級(jí)目錄為構(gòu)建ID_GITID,目錄下存放構(gòu)建的原始數(shù)據(jù)霹菊。

節(jié)點(diǎn)每天進(jìn)行images清理工作剧蚣。

業(yè)務(wù)分組

Jenkins的分組分為template與各domain,template存放模板旋廷,domain以域名的形式存放正式項(xiàng)目:?

新項(xiàng)目由運(yùn)維手工創(chuàng)建鸠按,后續(xù)的秩序構(gòu)建過(guò)程由開(kāi)發(fā)部調(diào)用API完成。

構(gòu)建參數(shù)

Jenkins構(gòu)建時(shí)饶碘,需要傳遞三參數(shù)目尖,1:程序版本號(hào),2:類型:apply與delete扎运,3:正式環(huán)境還是測(cè)試環(huán)境瑟曲,正式環(huán)境為Master,測(cè)試環(huán)境為Develop豪治,對(duì)應(yīng)Kubernetes的Namespace洞拨。?

此部分功能后期將通過(guò)開(kāi)發(fā)部的構(gòu)建憑條調(diào)用JenkinsAPI實(shí)現(xiàn)。

JenkinsAPI

curl -X POST http://jenkinsapi.com/job/域名/build \

–user admin:11b80a61d260aa41eb4a43ef0115bcbb26 \

–data-urlencode json=’{“parameter”: [{“name”:”VERSION”, “value”:”v1.2.0”}, {“name”:”TYPE”, “value”:”apply”}, {“name”:”BRANCH”, “value”:”develop”}]}’

APIDoc:https://wiki.jenkins.io/display/JENKINS/Remote+access+API

Token:https://jingyan.baidu.com/article/0eb457e5dbad8003f0a9056c.html

備份策略

Jenins安裝ThinBackup插件鬼吵,配置每小時(shí)進(jìn)行一次全局備份扣甲,且最多保留10份,備份后數(shù)據(jù)傳至異地齿椅。?

注意:為了業(yè)務(wù)的穩(wěn)定性琉挖,Jenkins由獨(dú)立的服務(wù)運(yùn)行,并不運(yùn)行在Kubernetes內(nèi)涣脚。

GitLab業(yè)務(wù)配置

業(yè)務(wù)分組

CD GitLab項(xiàng)目下分兩個(gè)組template與各domain示辈,template存放模板文件。例如:?

Git分支

default下以域名劃分項(xiàng)目遣蚀,每個(gè)項(xiàng)目劃分Master與Develop兩個(gè)分支矾麻,分別存放正式環(huán)境與測(cè)試環(huán)境CD文件纱耻。?

CD文件樹(shù)

├── catalina.sh ? ? ? ? ? ? ?#tomcat配置文件

├── config ? ? ? ? ? ? ? ? ?#程序配置文件,此文件夾會(huì)替換掉容器內(nèi)的/data/conf

│ ? └── hello.conf

├── deployment.yaml ? ? ? ? #k8s deploymen配置

├── dockerfile ? ? ? ? ? ? ? #docker鏡像生成文件

├── hosts ? ? ? ? ? ? ? ? ? #docker鏡像的hosts险耀,此文件將合并到deployment.yaml

├── service.yaml ? ? ? ? ? ? #k8s service配置

└── tomcat ? ? ? ? ? ? ? ? #tomcat配置文件

? ?├── Catalina

? ?│ ? └── localhost

? ?├── catalina.policy

? ?├── catalina.properties

? ?├── context.xml

? ?├── logging.properties

? ?├── server.xml

? ?├── tomcat-users.xml

? ?└── web.xml

備份策略

GitLab使用gitlab-rake gitlab:backup:create進(jìn)行每日定期備份弄喘,并傳送至異地。

EFK與日志管理

Elasticsearch

ES數(shù)據(jù)通過(guò)索引僅保留近10天的數(shù)據(jù)甩牺,每日通過(guò)腳本方式進(jìn)行數(shù)據(jù)刪除蘑志。ES的數(shù)據(jù)保存在/data/elasticsearch目錄下。

Filebeat

在每個(gè)Node節(jié)點(diǎn)啟動(dòng)一個(gè)Filebeat進(jìn)程贬派,用于日志的采集工作急但,filebeat分別監(jiān)控:

/data/nodelogs//accesslogs///

/data/nodelogs//devlogs///

/data/nodelogs//tomcatlogs///

其中,tomcatlogs日志需要進(jìn)行特殊處理搞乏,進(jìn)行多行合并波桩,數(shù)據(jù)寫(xiě)入ES時(shí),使用processors. Dissect進(jìn)行目錄名稱截取请敦,并使用域名作為ES的索引使用镐躲。

processors:

- dissect:

? ?tokenizer: "%{?key1}/%{?key2}/%{?key3}/%{wtype}/%{ltype}/%{domain}/%{?key7}/%{?key8}"

? ?field: "source"

target_prefix: "gy"

截取gy. wtype ( master或develop) , ltype(accesslogs 、tomcatlogs冬三、devlogs),domain(xxx.gyyx.cn)匀油。

Kibana

Kibana目前我們僅使用其discover節(jié)點(diǎn),用于日志數(shù)據(jù)的查詢勾笆,在配置方面敌蚜。

Kibana配置使用“域名-*”方式進(jìn)行配置,每次新增域名窝爪,需要在此進(jìn)行手工配置弛车。?

Kibana使用discover查看時(shí),默認(rèn)展示一個(gè)域名下所有的日志蒲每,可以通過(guò)gy.wtype篩選選擇查看測(cè)試環(huán)境還是正式環(huán)境纷跛,或者通過(guò)gy.ltype哪種日志類型。?

容器資源監(jiān)控

容器資源使用WeaveScope進(jìn)行資源消耗監(jiān)控邀杏。?

原文鏈接:http://www.toryzen.cn/2018/12/30/基于kubernetes的持續(xù)部署(CD)方案/

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末贫奠,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子望蜡,更是在濱河造成了極大的恐慌唤崭,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,464評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件脖律,死亡現(xiàn)場(chǎng)離奇詭異谢肾,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)小泉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,033評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)芦疏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)冕杠,“玉大人,你說(shuō)我怎么就攤上這事酸茴》衷ぃ” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,078評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵薪捍,是天一觀的道長(zhǎng)噪舀。 經(jīng)常有香客問(wèn)我,道長(zhǎng)飘诗,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,979評(píng)論 1 299
  • 正文 為了忘掉前任界逛,我火速辦了婚禮昆稿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘息拜。我一直安慰自己溉潭,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,001評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布少欺。 她就那樣靜靜地躺著喳瓣,像睡著了一般。 火紅的嫁衣襯著肌膚如雪赞别。 梳的紋絲不亂的頭發(fā)上畏陕,一...
    開(kāi)封第一講書(shū)人閱讀 52,584評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音仿滔,去河邊找鬼惠毁。 笑死,一個(gè)胖子當(dāng)著我的面吹牛崎页,可吹牛的內(nèi)容都是我干的鞠绰。 我是一名探鬼主播,決...
    沈念sama閱讀 41,085評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼飒焦,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼蜈膨!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起牺荠,我...
    開(kāi)封第一講書(shū)人閱讀 40,023評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤翁巍,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后志电,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體曙咽,經(jīng)...
    沈念sama閱讀 46,555評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,626評(píng)論 3 342
  • 正文 我和宋清朗相戀三年挑辆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了例朱。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片孝情。...
    茶點(diǎn)故事閱讀 40,769評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖洒嗤,靈堂內(nèi)的尸體忽然破棺而出箫荡,到底是詐尸還是另有隱情,我是刑警寧澤渔隶,帶...
    沈念sama閱讀 36,439評(píng)論 5 351
  • 正文 年R本政府宣布羔挡,位于F島的核電站,受9級(jí)特大地震影響间唉,放射性物質(zhì)發(fā)生泄漏绞灼。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,115評(píng)論 3 335
  • 文/蒙蒙 一呈野、第九天 我趴在偏房一處隱蔽的房頂上張望低矮。 院中可真熱鬧,春花似錦被冒、人聲如沸军掂。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,601評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)蝗锥。三九已至,卻和暖如春率触,著一層夾襖步出監(jiān)牢的瞬間终议,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,702評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工闲延, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留痊剖,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,191評(píng)論 3 378
  • 正文 我出身青樓垒玲,卻偏偏與公主長(zhǎng)得像陆馁,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子合愈,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,781評(píng)論 2 361

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