k8s常用命令

kubectl相關(guān)

命令

kind 所有類型

# kind 所有類型
kubectl api-resources -o wide --namespaced=true
1搂蜓、基本命令
命令 作用
create 創(chuàng)建資源
edit 編輯資源
get 獲取資源
patch 更新(修改)資源
delete 刪除資源
explain 展示資源文檔
2畦韭、運(yùn)行/調(diào)試命令
命令 作用
run 在集群中運(yùn)行指定鏡像
expose 暴露資源為service
describe 展示資源內(nèi)部信息
logs 輸出容器在pod中的日志
attach 進(jìn)入運(yùn)行中的容器
cp 在pod內(nèi)外復(fù)制文件
rollout 管理資源的發(fā)布
scale 擴(kuò)/縮容Pod數(shù)量
autoscale 自動調(diào)整pod數(shù)量

資源分類

1蜜自、集群級別資源
資源名稱 縮寫 說明 資源作用
nodes no node節(jié)點(diǎn) 集群組成部分
namespace ns 命名空間 隔離Pod
2、pod資源
資源名稱 縮寫 說明 資源作用
pods po pod 裝載容器的最小單元
3吆玖、pod資源控制器
資源名稱 縮寫 說明 資源作用
replicationcontroller rc 控制pod資源
replicasets rs 控制pod資源
daemonsets ds 控制pod資源
jobs 控制pod資源
cronjobs cj 控制pod資源
horizontalpodautoscalers hpa 控制pod資源
statefulsets sts 控制pod資源
4复局、服務(wù)發(fā)現(xiàn)資源
資源名稱 縮寫 說明 資源作用
services svc 服務(wù) 統(tǒng)一pod對外接口
ingress ing 統(tǒng)一pod對外接口

參數(shù)

參數(shù) 說明
-A 展示所有
-f 指定文件
-k 處理kustomization目錄。此標(biāo)志不能與-f或-R一起使用晤柄。
-L 指定標(biāo)簽lebel
-o 指定輸出格式擦剑,常用的有json、yaml、wide(詳細(xì)列表)
-R 遞歸處理-f惠勒,–filename中使用的目錄赚抡。在需要管理時非常有用
-l 要進(jìn)行篩選的選擇器(只支持標(biāo)簽查詢),支持“=”纠屋、“=”和“涂臣!=”。(例如-l鍵1=value1售担,鍵2=value2)
用法示例: kubectl get pod -l "key=value"
-w 持續(xù)跟蹤命令的狀態(tài)或者事件變化赁遗,類似tail -f功能
-n 指定命名空間,--namepace的縮寫
-i 即使未連接任何組件,也要保持pod中容器上的stdin打開族铆。
-t 為pod中的每個容器分配了一個tty岩四。

資源管理方式

命令行敲出的指令分為2種,

  • 其中kubectl哥攘、run剖煌、createapply 等等都是命令逝淹,
  • 前面帶-或者--的都是參數(shù)耕姊,比如--port-image栅葡、-n

資源管理方式分類

類型 操作對象 適用環(huán)境 優(yōu)點(diǎn) 缺點(diǎn) 使用頻率
命令式對象管理 對象 測試 簡單 只操作活動對象茉兰,無法審計、跟蹤 較少
命令式對象配置 文件 開發(fā) 可以審計跟蹤 項目大時欣簇,配置文件多邦邦,操作麻煩 常用
聲明式對象配置 開發(fā) 支持目錄操作 意外情況下難以調(diào)試 較少
1、命令式對象管理

直接使用命令去操作k8s資源醉蚁,命令和參數(shù)一起出現(xiàn)

kubectl run nginx-pod --image=nginx:1.17.1 --port=80
2、命令式對象配置

通過命令和配置文件去操作作k8s資源鬼店,命令還是那個命令网棍,只不過參數(shù)都放在配置文件里面

kubectl create/patch -f nginx-pod.yaml
3、聲明式對象配置
kubectl apply -f nginx-pod.yaml

使用apply創(chuàng)建資源妇智,

  • 如果資源不存在滥玷,就創(chuàng)建,相當(dāng)于執(zhí)行kubectl create -f nginx-pod.yaml
  • 如果資源存在巍棱,就修改惑畴,相當(dāng)于執(zhí)行kubectl patch -f nginx-pod.yaml

node

1、獲取所有節(jié)點(diǎn)
[root@master ~]# kubectl get nodes
NAME     STATUS   ROLES                  AGE   VERSION
master   Ready    control-plane,master   15h   v1.20.9
node1    Ready    <none>                 13h   v1.20.9
node2    Ready    <none>                 11h   v1.20.9

說明

  • NAME : 節(jié)點(diǎn)名稱
  • STATUS :節(jié)點(diǎn)狀態(tài)
    • Ready : 已就緒
    • NotReady:未就緒
  • ROLES :角色
  • AGE:運(yùn)行時長航徙,從啟動到現(xiàn)在運(yùn)行了多長時間
  • VERSION : 版本
2如贷、刪除節(jié)點(diǎn)

在master節(jié)點(diǎn)執(zhí)行以下命令即可刪除

# 先卸載節(jié)點(diǎn),但是還未刪除
 kubectl drain node1 --delete-local-data --force --ignore-daemonsets

# 刪除節(jié)點(diǎn)
kubectl delete node node2

還需要在work節(jié)點(diǎn)上執(zhí)行以下命令來清空ini配置

kubeadm reset
3、加入節(jié)點(diǎn)

先在主節(jié)點(diǎn)創(chuàng)建令牌

# 執(zhí)行后會返回一個 kubeadm 開頭的命令
kubeadm token create --print-join-command

然后在需要加入集群的節(jié)點(diǎn)中執(zhí)行令牌杠袱,注意這里的命令是通過kubeadm token create --print-join-command命令返回的結(jié)果

# 在工作節(jié)點(diǎn)上執(zhí)行以下命令即可加入集群
kubeadm join cluster-endpoint:6443 --token xxx.xxx     --discovery-token-ca-cert-hash sha256:xxx 

namespace

1尚猿、獲取所有namespace
# 第一種用法
[root@master ~]# kubectl get namespaces
NAME              STATUS   AGE
default           Active   16h   # 所有未指定namespace的對象都會被分配在default空間
kube-node-lease   Active   16h   # 集群節(jié)點(diǎn)之間的心跳維護(hù),v1.13開始引入
kube-public       Active   16h   # 此命名空間可以被所有人訪問(包括未認(rèn)證用戶)
kube-system       Active   16h   # k8s系統(tǒng)空間楣富,所有由k8s創(chuàng)建的資源都分配到這個空間

# 第二種用法
kubectl get namespace

# 第三種用法
kubectl get ns
2凿掂、獲取某個命名空間
# 獲取名為default的namespace
kubectl get ns default
3、獲取namespace為default的的描述信息
[root@master ~]# kubectl describe ns default
Name:         default
Labels:       <none>
Annotations:  <none>
Status:       Active

No resource quota.   # 針對namespace做的資源限制
No LimitRange resource. # LimitRange 針對 namespace中每個組件做的資源限制

說明

  • Status
    • Active :正在使用纹蝴,
    • Terminating :正在刪除namespace
3庄萎、創(chuàng)建namespace

記住,名稱中不能用下劃線_塘安,可以用橫行- 第一種創(chuàng)建方式–命令行創(chuàng)建

kubectl create ns xxx

第二種創(chuàng)建方式–命令行 + 配置文件
創(chuàng)建一個名為namespace-dev.yaml的文件糠涛,內(nèi)容如下(注意大小寫,kind的頭字母必須大寫)

apiVersion: v1
kind: Namespace
metadata: 
 name: dev

然后偶執(zhí)行命令進(jìn)行創(chuàng)建

kubectl create -f namespace-dev.yaml
4耙旦、刪除namespace

需要注意的是脱羡,刪除后,當(dāng)前命名空間下的pod免都、deployment锉罐、container也會一起刪掉

第一種–使用命令刪除

kubectl delete ns xxx

第二種–使用配置文件刪除

kubectl delete -f namespace-dev.yaml
5、查看命名空間詳情
kubectl describe ns xxx

pod

1绕娘、獲取所有pod
[root@master ~]# kubectl get pod -A
NAMESPACE     NAME                                       READY   STATUS                            RESTARTS   AGE
kube-system   calico-kube-controllers-7498f6cbdd-k6m4q   0/1     Running                           20         10h
kube-system   calico-node-5bj92                          0/1     Init:0/2                          1          10h
kube-system   calico-node-fqn48                          0/1     Init:0/2                          0          10h
kube-system   calico-node-r2ln8                          0/1     Init:0/2                          1          10h
kube-system   coredns-5897cd56c4-vnw4c                   0/1     ContainerCreating                 0          15h
kube-system   coredns-5897cd56c4-zvwdn                   0/1     ContainerCreating                 0          15h

第二種用法
kubectl get pods -A

第三種用法
kubectl get po -A

說明

  • NAMESPACE :名稱空間
  • NAME:Pod名稱
  • READY:已準(zhǔn)備好的實例數(shù)/總實例數(shù)
  • STATUS:狀態(tài)
    • Running:運(yùn)行中
    • Init:0/2 : 正在初始化 已初始化完成數(shù)量/總數(shù)
    • ContainerCreating : 容器正在創(chuàng)建中脓规,需要注意的是,如果長時間還是這個狀態(tài)的話险领,就是有錯誤了侨舆,需通過命令kubectl describe pod podName查看原因
  • RESTARTS : 重啟次數(shù)
  • AGE:運(yùn)行時長

獲取所有namespace的pod并監(jiān)視資源變動
加上-w 表示監(jiān)視資源變動信息,此時命令行進(jìn)入阻塞狀態(tài)绢陌,如果pod有變化將會馬上呈現(xiàn)出來挨下;

kubectl get pod -A -w

其他參數(shù)

# -n 表示獲取指定namespace的pod
kubectl get pod  -n kube-system

# 如果不加 -n 參數(shù),默認(rèn)獲取的是default下的pod脐湾,所以以下2個命令的執(zhí)行結(jié)果是一樣的
kubectl get pod 
kubectl get pod -n default
2臭笆、創(chuàng)建pod

因為pod里面至少要有一個容器,所以pod是和容器一起創(chuàng)建的秤掌,新建一個文件pod.ymal愁铺,內(nèi)容如下

apiVersion: v1
kind: Pod
metadata: 
  name: pod-name
  namespace: dev
spec: 
  containers: 
    - image: nginx:1.17.1
      name: nginx-container
      ports: 
        - name: nginx-port
          containerPort: 80
          protocol: TCP

然后執(zhí)行命令并指定配置文件進(jìn)行創(chuàng)建

kubectl create -f pod.ymal
3、修改pod
4闻鉴、刪除pod
  • 如果只是單純的刪除pod茵乱,你會發(fā)現(xiàn),刪除了之后孟岛,k8s會自動啟動了另一個pod瓶竭,這是因為當(dāng)前pod是由pod控制器創(chuàng)建的督勺,控制器會監(jiān)控pod狀態(tài),一旦pod死亡在验,會立即重建玷氏,所以想要刪除pod就得先刪除deployment。刪除后腋舌,與此deployment關(guān)聯(lián)的pod也會一起刪除盏触;
  • 如果不刪除delployment的話,這里的刪除pod只是充當(dāng)一個重啟的作用块饺;
  • 如果是創(chuàng)建時未指定pod控制器赞辩,那就可以使用以下命令直接刪除pod
# 刪除deployment,刪除后授艰,與此deployment關(guān)聯(lián)的pod也會一起刪除
kubectl delete deployment xxx

# 刪除pod
kubectl delete pod xxx

label

1辨嗽、為資源打標(biāo)簽(第一種方式:使用命令打標(biāo)簽)
# 為pod資源打標(biāo)簽,需要注意的是淮腾,打標(biāo)簽之前糟需,pod必須提前創(chuàng)建好
kubectl label pod pod-name labelKey=labelValue -n deplot-name 

# 為node資源打標(biāo)簽
kubectl label nodes node1 nodetag=node1
2、為資源打標(biāo)簽(第二種方式:使用配置文件打標(biāo)簽)

以下示例是為pod資源打標(biāo)簽谷朝,這種方式是和pod一起創(chuàng)建的糊探,新建一個配置文件 label.yaml

apiVersion: v1
kind: Pod
metadata: 
 name: pod-name
 namespace: dev
 labels: 
 lebelKey1: "labelValue1"
 lebelKey2: "labelValue2"
 lebelKey3: "labelValue3"
spec: 
 containers: 
    - image: nginx:1.17.1
 name: nginx-container
 ports: 
        - name: nginx-port
 containerPort: 80
 protocol: TCP

執(zhí)行命令創(chuàng)建pod

kubectl apply -f label.ymal
3蒸眠、更新標(biāo)簽

適合更新label值短纵,前提是label的key必須已存在缚忧;

kubectl label pod pod-name labelKey=labelValue -n deplot-name  --overwrite
4、查看標(biāo)簽
kubectl get pod pod-name  -n dev --show-labels
5专钉、篩選標(biāo)簽
# 查詢lebelKey1=labelValue1的pod
kubectl get pod  -n dev -l lebelKey1=labelValue1 --show-labels

# 查詢A不等于B的pod
kubectl get pod  -n dev -l A!=B --show-labels
5挑童、刪除標(biāo)簽

刪除key為lebelKey的標(biāo)簽

# 刪除pod資源的表標(biāo)簽
kubectl label pod ymal-create-pod-name lebelKey- -n dev

# 刪除node資源的標(biāo)簽
kubectl label nodes node1 nodetag-

pod控制器(deployment)

pod控制器有很多種,我們這里就用deployment

1跃须、創(chuàng)建deployment(第一種方式:命令行創(chuàng)建)

使用以下run命令運(yùn)行一個nginx站叼,deployment名稱為app=run-cmd-nginx-deploy-3

kubectl create deployment app=run-cmd-nginx-deploy-3 --image=nginx:1.17.1 --port=80 --replicas=3 -n dev

# 說明
 nginx-deploy # pod控制器的名稱,也就是deployment菇民,
 --image=nginx:1.17.1 # 指定鏡像版本
 --port=80 # 指定nginx的端口
 --replicas=3 # 創(chuàng)建三個副本尽楔,也就是會創(chuàng)建三個pod(注意:在k8s版本v1.8以后,r--eplicas已失效玉雾,建議使用deployment,不過僅僅是run命令失效轻要,create 和yaml配置文件還是有效的)
 -n dev # 指定namespace

通過以下命令可以看到复旬,會自動生成一個app=run-cmd-nginx-deploy-3的標(biāo)簽

[root@master ~]# kubectl get deployment -o wide -n dev --show-labels
NAME                     READY   UP-TO-DATE   AVAILABLE   AGE   CONTAINERS   IMAGES         SELECTOR                     LABELS
run-cmd-nginx-deploy-3   3/3     3            3           18m   nginx        nginx:1.17.1   app=run-cmd-nginx-deploy-3   app=run-cmd-nginx-deploy-3
2、創(chuàng)建deployment(第二種方式:yaml配置文件創(chuàng)建)

新建一個deployment.yaml文件冲泥,內(nèi)容如下

apiVersion: apps/v1  # 前面的apps/必須這樣寫驹碍,斜杠后面隨便寫壁涎,暫不知為何
kind: Deployment  # 創(chuàng)建deployment
metadata: 
  name: ymal-deployment-name  # deployment名稱
  namespace: dev  # 所屬命名空間
spec: 
  replicas: 3  # 副本數(shù)量
  selector: 
    matchLabels:  # 匹配標(biāo)簽
      deploy-label-1: ymal-label    # 此選擇器和下面的template.metadata..labels進(jìn)行關(guān)聯(lián),可以發(fā)現(xiàn)這倆值是一樣的志秃,一樣的值就會進(jìn)行關(guān)聯(lián)
  template:  # pod模板
    metadata:  # 以下是pod配置
      labels: 
        deploy-label-1: ymal-label
    spec: 
      containers:  # 以下是容器配置
      - image: nginx:1.17.1
        name: nginx-container
        ports: 
        - name: nginx-port
          containerPort: 80
          protocol: TCP
3怔球、查詢deployment的詳細(xì)信息
# 查看deployment詳細(xì)信息
kubectl describe deployment xxx -n dev

# 查看所有的deplyment
kubectl get deployment -A

# 查詢某個deployment
kubectl get deployment xxx -n dev

# 模糊查詢 
kubectl get deployment -A | grep xxx

# 查詢deployment下的所有pod
kubectl get pod -A | grep deployment-name
4、刪除deployment

需要注意的是浮还,一旦刪除pod控制器竟坛,此pod控制器下的所有pod和容器也會一并刪除;

# 第一種刪除方式钧舌,直接命令刪除
kubectl delete deployment xxx -n dev

# 第二種刪除方式担汤,使用配置文件進(jìn)行刪除
kubectl delete -f deployment.yaml

service

1、創(chuàng)建service–命令行方式創(chuàng)建

默認(rèn)創(chuàng)建的pod是只能對內(nèi)訪問的洼冻,所以需要創(chuàng)建一個對外的訪問端口崭歧,創(chuàng)建一個service其實就是暴露對外的訪問端口

kubectl expose deployment xxx --name=service-name --port=80 --target-port=80 --type=NodePort

說明

  • expose deployment xxx : 需要暴露的deployment名稱
  • --name :service名稱
  • --port : service 暴露的端口
  • --target-port : 目標(biāo)端口,也就是pod容器中的端口
  • --type:service類型撞牢,分為以下幾個
    • ClusterIP:默認(rèn)值率碾,它是Kubernetes系統(tǒng)自動分配的虛擬IP,只能在集群內(nèi)部訪問
    • NodePort:將Service通過指定的Node上的端口暴露給外部屋彪,通過此方法所宰,就可以在集群外部訪問服務(wù)
    • LoadBalancer:使用外接負(fù)載均衡器完成到服務(wù)的負(fù)載分發(fā),注意此模式需要外部云環(huán)境支持
    • ExternalName: 把集群外部的服務(wù)引入集群內(nèi)部撼班,直接使用

創(chuàng)建好service之后歧匈,查看service信息,可以看到砰嘁,暴露的端口為:30474件炉,

  • 外部訪問:因為博主這邊是虛擬機(jī),所以使用主機(jī)的ip:端口矮湘,也就是192.168.253.131:30474就可以訪問到頁面了斟冕;
  • 內(nèi)部訪問:直接在虛擬機(jī)內(nèi)訪問10.96.216.128:80即可
[root@master ~]# kubectl get svc -n dev
NAME                TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
ymal-service-name   NodePort   10.96.216.128   <none>        80:30474/TCP   10m

# 說明
  CLUSTER-IP  # 此ip只能內(nèi)部訪問
  PORT(S)     # 我們看到上面有2個端口80:30474,80是內(nèi)部訪問端口缅阳,30474是外部訪問的端口磕蛇;
2、創(chuàng)建service(ymal方式創(chuàng)建)

新建一個service.ymal文件十办,內(nèi)容如下

apiVersion: v1
kind: Service
metadata: 
  name: service-name
  namespace: dev
spec: 
  clusterIP: 10.96.98.123
  ports: 
  - port: 80
    protocol: TCP
    targetPort: 80
  selector: # 標(biāo)簽選擇器秀撇,需要和deployment的label一致
    deploy-label-1: ymal-label
  type: NodePort
3、查看service

以下三種用法都可以

# 第一種
kubectl get services

# 第二種
kubectl get services

# 第三種
kubectl get svc
4向族、刪除service
kubectl delete service xxx

組合查詢

查詢pod控制器和pod

kubectl get deployment,pod -n dev

endpoint

Endpoint是kubernetes中的一個資源對象呵燕,存儲在etcd中,用來記錄一個service對應(yīng)的所有pod的訪問地址件相,它是根據(jù)service配置文件中selector描述產(chǎn)生的再扭。

一個Service由一組Pod組成氧苍,這些Pod通過Endpoints暴露出來,Endpoints是實現(xiàn)實際服務(wù)的端點(diǎn)集合泛范。換句話說让虐,service和pod之間的聯(lián)系是通過endpoints實現(xiàn)的。

每創(chuàng)建一個service罢荡,k8s會自動創(chuàng)建一個同名的 Endpoint出來

1赡突、查看 endpoint
# 一定要加s
kubectl get endpoints -n dev

# 查看endpoint的詳細(xì)信息
kubectl describe endpoints -n dev
2、刪除endpoint

如果是由service創(chuàng)建出來的endpoints柠傍,刪除后會馬上創(chuàng)建出一個同名的endpoint出來麸俘,如果要刪除必須先刪除service

kubectl delete endpoints xxxx -n dev
3、創(chuàng)建endpoint

因為每次創(chuàng)建一個service惧笛,k8s會自動創(chuàng)建一個同名的 Endpoint出來从媚,所我們直接創(chuàng)建service就可以了

kind: Service
apiVersion: v1
metadata:
  name: nginx
  namespace: dev
spec:
  type: ClusterIP
  ports:
  - name: app-port
    protocol: TCP
    port: 80
    targetPort: 80
  selector:
    app: nginx-pod

其他

1、kubectl runkubectl create的區(qū)別

# run后面的xxx是pod名稱
kubectl run xxx --image=nginx:1.17.1 --port=80 

# create 后面必須指定創(chuàng)建的資源是什么類似患整,比如我下面創(chuàng)建了一個deployment拜效,xxx是deployment的名字,鏡像是nginx各谚,端口80紧憾,啟用3個pod副本,
kubectl create deployment xxx --image=nginx:1.17.1 --port=80  --replicas=3  

2昌渤、–help

--help用來查看幫助文檔赴穗,如果你不知道某個命令怎么使用了,就可以用--help查詢命令的用法

kubectl --help

kubectl create --help

kubectl run --help

kubectl explain --help

3膀息、explain查看資源結(jié)構(gòu)

explain用來查看配置文件的 資源結(jié)構(gòu)般眉,如果不知道配置文件中的資源用有哪些結(jié)構(gòu),那么就可以使用explain命令來查看

# 查看pod資源結(jié)構(gòu)
kubectl explain pod
# 查看容器配置的資源結(jié)構(gòu)
kubectl explain pod.spec.containers

#查看namespace資源結(jié)構(gòu)
kubectl explain namespace

#查看service資源結(jié)構(gòu)
kubectl explain service

# 查看deployment資源結(jié)構(gòu)
kubectl explain deployment

3潜支、進(jìn)入容器執(zhí)行命令

# 容器名稱可通過命令`kubectl describe pod`查看
# centos 使用 /bin/bash
# ubuntu或debain 使用/bin/sh
kubectl exec pod名稱 -it -c 容器名稱 /bin/sh

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末甸赃,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子冗酿,更是在濱河造成了極大的恐慌埠对,老刑警劉巖,帶你破解...
    沈念sama閱讀 223,207評論 6 521
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件裁替,死亡現(xiàn)場離奇詭異项玛,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)弱判,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,455評論 3 400
  • 文/潘曉璐 我一進(jìn)店門襟沮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事臣嚣。” “怎么了剥哑?”我有些...
    開封第一講書人閱讀 170,031評論 0 366
  • 文/不壞的土叔 我叫張陵硅则,是天一觀的道長。 經(jīng)常有香客問我株婴,道長怎虫,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,334評論 1 300
  • 正文 為了忘掉前任困介,我火速辦了婚禮大审,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘座哩。我一直安慰自己徒扶,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,322評論 6 398
  • 文/花漫 我一把揭開白布根穷。 她就那樣靜靜地躺著姜骡,像睡著了一般。 火紅的嫁衣襯著肌膚如雪屿良。 梳的紋絲不亂的頭發(fā)上圈澈,一...
    開封第一講書人閱讀 52,895評論 1 314
  • 那天,我揣著相機(jī)與錄音尘惧,去河邊找鬼康栈。 笑死,一個胖子當(dāng)著我的面吹牛喷橙,可吹牛的內(nèi)容都是我干的啥么。 我是一名探鬼主播,決...
    沈念sama閱讀 41,300評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼重慢,長吁一口氣:“原來是場噩夢啊……” “哼饥臂!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起似踱,我...
    開封第一講書人閱讀 40,264評論 0 277
  • 序言:老撾萬榮一對情侶失蹤隅熙,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后核芽,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體囚戚,經(jīng)...
    沈念sama閱讀 46,784評論 1 321
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,870評論 3 343
  • 正文 我和宋清朗相戀三年轧简,在試婚紗的時候發(fā)現(xiàn)自己被綠了驰坊。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,989評論 1 354
  • 序言:一個原本活蹦亂跳的男人離奇死亡哮独,死狀恐怖拳芙,靈堂內(nèi)的尸體忽然破棺而出察藐,到底是詐尸還是另有隱情,我是刑警寧澤舟扎,帶...
    沈念sama閱讀 36,649評論 5 351
  • 正文 年R本政府宣布分飞,位于F島的核電站,受9級特大地震影響睹限,放射性物質(zhì)發(fā)生泄漏譬猫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,331評論 3 336
  • 文/蒙蒙 一羡疗、第九天 我趴在偏房一處隱蔽的房頂上張望染服。 院中可真熱鬧,春花似錦叨恨、人聲如沸柳刮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,814評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽诚亚。三九已至,卻和暖如春午乓,著一層夾襖步出監(jiān)牢的瞬間站宗,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,940評論 1 275
  • 我被黑心中介騙來泰國打工益愈, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留梢灭,地道東北人。 一個月前我還...
    沈念sama閱讀 49,452評論 3 379
  • 正文 我出身青樓蒸其,卻偏偏與公主長得像敏释,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子摸袁,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,995評論 2 361

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