k8s集群搭建完整過程

1.安裝前說明

服務(wù)器必須是Centos 7.2及以上块攒,Kubernetes 我們采用1.15.*版本
Docker-ce v18.06.3励稳,Etcd 3.2.9,F(xiàn)lanneld v0.7.0-amd64
TLS 認(rèn)證通信(所有組件囱井,如etcd驹尼、kubernetes master 和node)
RBAC 授權(quán),kubedns庞呕、dashboard
注意事項(xiàng):
Docker安裝的版本需與K8s版本批配新翎,不然會出問題
Kubernetes 1.15.2 -->Docker版本1.13.1、17.03、17.06料祠、17.09骆捧、18.06、18.09
Kubernetes 1.15.1 -->Docker版本1.13.1髓绽、17.03敛苇、17.06、17.09顺呕、18.06枫攀、18.09
Kubernetes 1.15.0 -->Docker版本1.13.1、17.03株茶、17.06来涨、17.09、18.06启盛、18.09
Kubernetes 1.14.5 -->Docker版本1.13.1蹦掐、17.03、17.06僵闯、17.09卧抗、18.06、18.09
Kubernetes 1.14.4 -->Docker版本1.13.1鳖粟、17.03社裆、17.06、17.09向图、18.06泳秀、18.09
Kubernetes 1.14.3 -->Docker版本1.13.1、17.03榄攀、17.06嗜傅、17.09、18.06檩赢、18.09
Kubernetes 1.14.2 -->Docker版本1.13.1吕嘀、17.03骑歹、17.06种玛、17.09、18.06莲祸、18.09
Kubernetes 1.14.1 -->Docker版本1.13.1憔狞、17.03蝴悉、17.06、17.09瘾敢、18.06拍冠、18.09
Kubernetes 1.14.0 -->Docker版本1.1

2.環(huán)境準(zhǔn)備

之前在本機(jī)筆記本開VMWare跑集群尿这,感覺資源有些吃緊,看到某公有云在搞促銷庆杜,直接下手三臺服務(wù)器(2核+4G+5M帶寬)



分別登錄三臺服務(wù)器修改Host Name

hostnamectl set-hostname k8s-master  \#Master節(jié)點(diǎn)
hostnamectl set-hostname k8s-node1  \#node1節(jié)點(diǎn)
hostnamectl set-hostname k8s-node2  \#node2節(jié)點(diǎn)

修改后射众,我們?nèi)_主機(jī)如下:

name IP 數(shù)量
k8s-master 192.168.0.66 Master節(jié)點(diǎn)
k8s-node1 192.168.0.137 工作節(jié)點(diǎn)1
k8s-node2 192.168.0.230 工作節(jié)點(diǎn)2

3.環(huán)境初始化

以下步驟在三臺服務(wù)器上均執(zhí)行一遍
關(guān)閉selinux

setenforce 0
\# sed -i  's@^\(SELINUX=\).*@\1disabled@' /etc/selinux/config

關(guān)閉防火墻及IP TABLE

systemctl  stop firewalld.service
systemctl  disable firewalld.service
systemctl disable iptables  
systemctl stop iptables

設(shè)置host
vim /etc/hosts
192.168.0.66 k8s-master
192.168.0.137 k8s-node1
192.168.0.230 k8s-node2

4.安裝Docker

備份源
sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
修改OS源為阿里的倉庫

curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

安裝常用命令
yum -y install conntrack ipvsadm ipset jq sysstat curl iptables libseccomp wget lrzsz nmap lsof net-tools zip unzip vim telnet
安裝依賴項(xiàng)
yum install -y yum-utils device-mapper-persistent-data lvm2
安裝Docker源為阿里
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
清理緩存
yum clean all
** 重新生成緩存**
yum makecache
再次查看yum源信息
yum repolist


可以看出,我們的源已經(jīng)更新到aliyun.com晃财。
下一步我們開始安裝Docker
安裝指定版本的Docker叨橱,如果不知道版本名稱,可以用如下命令查看
yum list docker-ce --showduplicates | sort -r

我們安裝18.06.3版本断盛,k8s對應(yīng)1.15.*
sudo yum install docker-ce-18.06.3.ce-3.el7
安裝完畢后罗洗,我們測試下

[root@k8s-master ~]# docker version
Client:
 Version:           18.06.3-ce
 API version:       1.38
 Go version:        go1.10.3
 Git commit:        d7080c1
 Built:             Wed Feb 20 02:26:51 2019
 OS/Arch:           linux/amd64
 Experimental:      false

啟動Docker
sudo chkconfig docker on #設(shè)置開機(jī)啟動
systemctl start docker
修改Docker鏡像倉庫為國內(nèi)鏡像

部分系統(tǒng)安裝后未生成daemon.json,請執(zhí)行以下命令

[root@promote ~]# mkdir -p /etc/docker
[root@promote ~]# touch /etc/docker/daemon.json 
[root@promote ~]# vim /etc/docker/daemon.json

配置文件內(nèi)容格式如下:

{
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors":["公網(wǎng)倉庫地址"]
}

公網(wǎng)倉庫地址以下三個(gè)任選其一钢猛,也可以找其他開放的倉庫地址或自建倉庫
https://docker.mirrors.ustc.edu.cn
https://registry.docker-cn.com
http://hub-mirror.c.163.com
修改后刷新daemon.json伙菜,重啟docker服務(wù)使配置生效

systemctl daemon-reload
sudo systemctl restart docker.service

執(zhí)行完后,可以查看下docker狀態(tài)及詳細(xì)信息

service docker status
docker info

如果不能正常啟動docker命迈,大概率是daemon.json文件有問題
我檢查了好幾次該文件的內(nèi)容贩绕,因?yàn)槭菑?fù)制的內(nèi)容,所以符號是中文的壶愤,單詞也拼寫錯(cuò)誤淑倾,需要注意的幾點(diǎn)如下:
1、注意符號是否是英文符號
2公你、單詞是否拼寫正確
3踊淳、json文件格式是否正確
以上步驟在三臺機(jī)器均執(zhí)行完畢后假瞬,且Docker狀態(tài)正常陕靠,我們就開始安裝K8S集群了

5.安裝K8S

以下安裝步驟在3臺服務(wù)器上均執(zhí)行一遍
安裝K8S源

cat <<EOF > /etc/yum.repos.d/kubernetes.repo    
[kubernetes]    
name=Kubernetes 
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1   
gpgcheck=0  
repo_gpgcheck=0 
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg 
https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg   
EOF

導(dǎo)入公鑰

wget  https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
rpm --import yum-key.gpg
wget https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
rpm --import rpm-package-key.gpg

安裝
yum install -y kubelet-1.15.9-0 kubeadm-1.15.9-0 kubectl-1.15.9-0
啟動
systemctl enable kubelet && systemctl start kubelet # 自啟動kubelet
systemctl status kubelet #查看狀態(tài)
說明
kubectl 是命令行工具,所以不用啟動
kubeadm 是集群搭建工具脱茉,也不用啟動
kubelet 是節(jié)點(diǎn)管理工具剪芥,需要在所有節(jié)點(diǎn)啟動
注意 : 以上所有教程,都需要在集群所有機(jī)器上均操作一遍琴许,包括安裝 kubectl kubeadm kubelet税肪,啟動 kubelet
在虛擬機(jī)上部署k8s 1.9版本需要關(guān)閉操作系統(tǒng)交換分區(qū)
# swapoff -a
初始化K8S集群
在master節(jié)點(diǎn)上執(zhí)行如下命令,其他節(jié)點(diǎn)不執(zhí)行
注意命令的master ip及主機(jī)名榜田,我的master主機(jī)名是k8s-master

kubeadm init --kubernetes-version=v1.15.9 --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.0.66 --apiserver-cert-extra-sans=192.168.0.66,k8s-master   --image-repository registry.aliyuncs.com/google_containers

參數(shù)含義:
--kubernetes-version:指定kubeadm版本益兄;
--pod-network-cidr:指定pod所屬網(wǎng)絡(luò)
--image-repository 指定下載源
--service-cidr:指定service網(wǎng)段,負(fù)載均衡ip
--ignore-preflight-errors=Swap/all:忽略 swap/所有 報(bào)錯(cuò)
--apiserver-advertise-address 指明用 Master 的哪個(gè) interface 與 Cluster 的其他節(jié)點(diǎn)通信。如果 Master 有多個(gè) interface箭券,建議明確指定净捅,如果不指定,kubeadm 會自動選擇有默認(rèn)網(wǎng)關(guān)的 interface辩块。
--pod-network-cidr 指定 Pod 網(wǎng)絡(luò)的范圍蛔六。Kubernetes 支持多種網(wǎng)絡(luò)方案荆永,而且不同網(wǎng)絡(luò)方案對 --pod-network-cidr 有自己的要求,這里設(shè)置為 10.244.0.0/16 是因?yàn)槲覀儗⑹褂?flannel 網(wǎng)絡(luò)方案国章,必須設(shè)置成這個(gè)  CIDR具钥。在后面的實(shí)踐中我們會切換到其他網(wǎng)絡(luò)方案,比如 Canal液兽。
初始化過程簡要如下:
① kubeadm 執(zhí)行初始化前的檢查骂删。
② 生成 token 和證書。
③ 生成 KubeConfig 文件四啰,kubelet 需要這個(gè)文件與 Master 通信桃漾。
④ 安裝 Master 組件,會從 goolge 的 Registry 下載組件的 Docker 鏡像拟逮,這一步可能會花一些時(shí)間撬统,主要取決于網(wǎng)絡(luò)質(zhì)量。
⑤ 安裝附加組件 kube-proxy 和 kube-dns敦迄。
⑥ Kubernetes Master 初始化成功恋追。
⑦ 提示如何配置 kubectl,后面會實(shí)踐罚屋。
⑧ 提示如何安裝 Pod 網(wǎng)絡(luò)苦囱,后面會實(shí)踐。
⑨ 提示如何注冊其他節(jié)點(diǎn)到 Cluster脾猛,后面會實(shí)踐撕彤。
我們執(zhí)行初始化時(shí)報(bào)了一個(gè)錯(cuò)誤:
[WARNING IsDockerSystemdCheck]: detected "cgroupfs" as the Docker cgroup driver. The recommended driver is "systemd". Please follow the guide at https://kubernetes.io/docs/setup/cri/
error execution phase preflight: [preflight] Some fatal errors occurred:
出現(xiàn)[WARNING IsDockerSystemdCheck],是由于docker的Cgroup Driver和kubelet的Cgroup Driver不一致導(dǎo)致的猛拴,此處選擇修改docker的和kubelet一致
docker info | grep Cgroup #查看當(dāng)前的cgroup
默認(rèn)系統(tǒng)返回:Cgroup Driver: cgroupfs羹铅,我們要修改為systemd

vim /etc/docker/daemon.json 加入下面這一行
"exec-opts": ["native.cgroupdriver=systemd"]
我本機(jī)修改后的daemon.json如下,配置了多個(gè)國內(nèi)的鏡像源

 {
 "registry-mirrors":["https://mirror.ccs.tencentyun.com","https://docker.mirrors.ustc.edu.cn", "https://dockerhub.azk8s.cn", "https://reg-mirror.qiniu.com","https://registry.docker-cn.com"],
 "exec-opts": ["native.cgroupdriver=systemd"]
}

刷新并重啟docker

systemctl daemon-reload 
systemctl restart docker

然后我們重新執(zhí)行初始化命令提示
[ERROR FileAvailable--etc-kubernetes-manifests-kube-apiserver.yaml]: /etc/kubernetes/manifests/kube-apiserver.yaml already exists
由于第一次沒初始化成功愉昆,但相關(guān)文件沒有清理职员,我們執(zhí)行下面的命令,重置下環(huán)境跛溉,再初始化
kubeadm reset
重新執(zhí)行初始化焊切,約半分鐘,系統(tǒng)提示成功芳室,系統(tǒng)生成的加入節(jié)點(diǎn)的命令和token自行保存下備用

以下信息自行保存起來備用
To start using your cluster, you need to run the following as a regular user:
   mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config 
Then you can join any number of worker nodes by running the following on each as root:
 
kubeadm join 192.168.0.66:6443 --token 46lv86.ts6k9yc4p0dwsu1c \
    --discovery-token-ca-cert-hash sha256:956c98d52f3a0981a5b44d70317b89696f03418eef4efe921a991b31a3644727 

新版本的k8s初始化時(shí)會提示专肪,因?yàn)楣俜揭箸R像從k8s.gcr.io官方獲取,但我們可以自己手動操作堪侯。
'''docker pull coredns/coredns
docker tag coredns/coredns:latest registry.cn-hangzhou.aliyuncs.com/google_containers/coredns/coredns:v1.8.0
docker rmi coredns/coredns:latest

kubeadm init --kubernetes-version=v1.21.1 --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=10.0.16.8 --apiserver-cert-extra-sans=10.0.16.8,k8s-master --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers
'''

6.配置K8S

將當(dāng)前用戶配置為集群管理員(如果不配置嚎尤,下次連接時(shí)會無法使用kubectl)

  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

部署flannel
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
加入子節(jié)點(diǎn)
然后到其他兩個(gè)節(jié)點(diǎn)執(zhí)行如下命令,添加節(jié)點(diǎn)到master.

前面保存的加入節(jié)點(diǎn)命令和token抖格,這個(gè)環(huán)節(jié)使用诺苹,后續(xù)有新服務(wù)器加入同樣在新節(jié)點(diǎn)執(zhí)行該命令即可
kubeadm join 192.168.0.66:6443 --token 46lv86.ts6k9yc4p0dwsu1c \
    --discovery-token-ca-cert-hash sha256:956c98d52f3 ****

加入完畢后咕晋,我們用命令kubectl get nodes獲取所有節(jié)點(diǎn)

[root@k8s-master ~]# kubectl get nodes
NAME         STATUS     ROLES    AGE    VERSION
k8s-master   Ready      master   115m   v1.15.9
k8s-node1    NotReady   <none>   111m   v1.15.9
k8s-node2    Ready      <none>   111m   v1.15.9

驗(yàn)證安裝信息

檢查系統(tǒng)基礎(chǔ)模塊健康度
[root@k8s-master ~]# kubectl get componentstatus
NAME                 STATUS    MESSAGE             ERROR
scheduler            Healthy   ok                  
controller-manager   Healthy   ok                  
etcd-0               Healthy   {"health":"true"}  
檢查node狀態(tài),如果有工作節(jié)點(diǎn)NotReady收奔,等幾分鐘一般就會正常
[root@k8s-master ~]# kubectl get nodes
NAME         STATUS     ROLES    AGE    VERSION
k8s-master   Ready      master   115m   v1.15.9
k8s-node1    NotReady   <none>   111m   v1.15.9
k8s-node2    Ready      <none>   111m   v1.15.9
檢查系統(tǒng)pod狀態(tài)
[root@k8s-master ~]# kubectl get pods -n kube-system
NAME                                 READY   STATUS    RESTARTS   AGE
coredns-94d74667-l8lqt               1/1     Running   0          115m
coredns-94d74667-svgrk               1/1     Running   0          115m
etcd-k8s-master                      1/1     Running   0          115m
kube-apiserver-k8s-master            1/1     Running   0          114m
kube-controller-manager-k8s-master   1/1     Running   0          115m
kube-flannel-ds-amd64-64zsm          1/1     Running   0          2m5s
kube-flannel-ds-amd64-csb8h          1/1     Running   0          2m5s
kube-flannel-ds-amd64-nfcsh          1/1     Running   0          2m5s
kube-proxy-b669n                     1/1     Running   0          112m
kube-proxy-d84cb                     1/1     Running   0          115m
kube-proxy-w7tv7                     1/1     Running   0          111m
kube-scheduler-k8s-master            1/1     Running   0          115m

可能會遇到的錯(cuò)誤:
FileContent--proc-sys-net-bridge-bridge-nf-call-iptables
解決命令:
echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables
echo 1 > /proc/sys/net/bridge/bridge-nf-call-ip6tables
測試K8S集群
這里為了快速地驗(yàn)證一下我們的K8S集群是否可用掌呜,創(chuàng)建一個(gè)示例Pod:

[root@k8s-master ~]# kubectl create deployment nginx --image=nginx
deployment.apps/nginx created
[root@k8s-master ~]# kubectl expose deployment nginx --port=80 --type=NodePort
service/nginx exposed
[root@k8s-master ~]# kubectl get pod,svc
NAME                         READY   STATUS    RESTARTS   AGE
pod/nginx-554b9c67f9-n9rsv   1/1     Running   0          17s

NAME                 TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)        AGE
service/kubernetes   ClusterIP   10.96.0.1     <none>        443/TCP        129m
service/nginx        NodePort    10.98.172.7   <none>        80:30030/TCP   9s

如果想要看到Pod更多的信息,比如pod被部署在了哪個(gè)Node上坪哄,可以通過 kubectl get pods,svc -o wide來查看质蕉。
因?yàn)槲覀儾捎玫氖荖odePort方式,該模式會直接將服務(wù)映射為主機(jī)的一個(gè)端口翩肌,用戶通過主機(jī)IP+端口可以訪問到該服務(wù)模暗,其映射暴露出的端口號會在30000-32767范圍內(nèi)隨機(jī)取一個(gè),上面部署的nginx我們看到其端口是30030念祭,那么我們用公網(wǎng)122.112.xx.xx:30030測試兑宇,如下圖所示,已經(jīng)可以訪問到nginx默認(rèn)頁粱坤。



PS:公有云服務(wù)默認(rèn)有防火墻隶糕,需要自行到云管理界面開放這些端口的訪問,否則會認(rèn)為k8s問題站玄,排查起來很浪費(fèi)時(shí)間枚驻。

7.安裝Dashboard

Dashboard是k8s的管理UI界面,其安裝過程最復(fù)雜的是證書的處理株旷。
獲取并修改Dashboard安裝的Yaml文件

wget http://mirror.faasx.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml

修改該文件配置
vim kubernetes-dashboard.yaml
按i再登,然后按方向鍵滾動到最后,節(jié)點(diǎn)是kind: service這部分

kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kube-system
spec:
  type: NodePort  插入這一行晾剖,注意對齊及空格
  ports:
    - port: 443
      nodePort: 30000  插入一行锉矢,如果指定,則K8S會自動分配一個(gè)端口钞瀑,注意手工填寫端口范圍不能超出k8s默認(rèn)限制沈撞,
      targetPort: 8443
  selector:
    k8s-app: kubernetes-dashboard

esc wq保存
以下開始處理證書
mkdir key && cd key
生成證書
openssl genrsa -out dashboard.key 2048

我這里寫的自己的node1節(jié)點(diǎn)慷荔,因?yàn)槲沂峭ㄟ^nodeport訪問的雕什;如果通過apiserver訪問,可以寫成自己的master節(jié)點(diǎn)ip
openssl req -new -out dashboard.csr -key dashboard.key -subj '/CN=192.168.0.66'
openssl x509 -req -in dashboard.csr -signkey dashboard.key -out dashboard.crt 
創(chuàng)建新的證書secret
kubectl create secret generic kubernetes-dashboard-certs --from-file=dashboard.key --from-file=dashboard.crt -n kube-system

執(zhí)行安裝
kubectl apply -f kubernetes-dashboard.yaml

安裝可能需要幾分鐘显晶,通過kubectl get pod -n kube-system查看狀態(tài)

創(chuàng)建用戶信息
1.創(chuàng)建一個(gè)叫admin-user的服務(wù)賬號:

[root@k8s01 ~]# vim dashboard-admin.yaml 
apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kube-system

然后執(zhí)行創(chuàng)建用戶
kubectl create -f dashboard-admin.yaml
2.直接綁定admin角色:

vim admin-user-role-binding.yaml
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: admin-user
  namespace: kube-system

執(zhí)行綁定:
kubectl create -f admin-user-role-binding.yaml
3.查看綁定是否成功
kubectl get clusterrolebinding


驗(yàn)證安裝
查看pod運(yùn)行狀態(tài)

kubectl get pod -n kube-system | grep dashboard
kubernetes-dashboard-8594bd9565-rx5xg   1/1     Running   0          5m57s
查看dashborad service
kubectl get svc -n kube-system|grep dashboard
kubernetes-dashboard   NodePort    10.110.157.149   <none>        443:30000/TCP            6m26s
查看pod運(yùn)行日志贷岸,關(guān)注有沒有錯(cuò)誤
kubernetes-dashboard-8594bd9565-zjwgv是pod的名稱,每個(gè)環(huán)境產(chǎn)生的名稱各不相同
kubectl logs kubernetes-dashboard-8594bd9565-zjwgv -n kube-system

獲取登錄Dashboard的Token

找到admin-user-token用戶
kubectl -n kube-system get secret

如上圖所示磷雇,我們環(huán)境的這個(gè)帳戶名是admin-user-token-mmc64

獲取token串
kubectl -n kube-system describe secret admin-user-token-mmc64


如上圖所示偿警,該帳戶的登錄token已經(jīng)產(chǎn)生,自行復(fù)制保存下來唯笙,后面登錄dashboard就使用這個(gè)token螟蒸,我們輸入https://ip:30000測試下登錄盒使,注意dahsboard是使用的https協(xié)議。

輸入前面我們獲取到的token進(jìn)行登錄


至此七嫌,我們K8S集群的基本安裝完成少办。

8.后記

如果由于其它原因,或者想再搭建一次诵原,可以執(zhí)行kubeadm reset 操作英妓,重置所有配置,恢復(fù)到剛安裝好 kubectl kubeadm kubelet 的狀態(tài)绍赛,再來一次蔓纠。

配置k8s忽略使用swap

KUBELET_EXTRA_ARGS="--fail-swap-on=false"

配置docker代理

[Service]
Environment="HTTPS_PROXY=http://www.ik8s.io:10080"
Environment="NO_PROXY=127.0.0.0/8"
systemctl daemon-reload
systemctl restart docker

如果要卸載dashboard

sudo kubectl delete deployment kubernetes-dashboard --namespace=kube-system 
sudo kubectl delete service kubernetes-dashboard  --namespace=kube-system 
sudo kubectl delete role kubernetes-dashboard-minimal --namespace=kube-system 
sudo kubectl delete rolebinding kubernetes-dashboard-minimal --namespace=kube-system
sudo kubectl delete sa kubernetes-dashboard --namespace=kube-system 
sudo kubectl delete secret kubernetes-dashboard-certs --namespace=kube-system
sudo kubectl delete secret kubernetes-dashboard-csrf --namespace=kube-system
sudo kubectl delete secret kubernetes-dashboard-key-holder --namespace=kube-system
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市吗蚌,隨后出現(xiàn)的幾起案子腿倚,更是在濱河造成了極大的恐慌,老刑警劉巖蚯妇,帶你破解...
    沈念sama閱讀 212,383評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件猴誊,死亡現(xiàn)場離奇詭異,居然都是意外死亡侮措,警方通過查閱死者的電腦和手機(jī)懈叹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來分扎,“玉大人澄成,你說我怎么就攤上這事∥废牛” “怎么了墨状?”我有些...
    開封第一講書人閱讀 157,852評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長菲饼。 經(jīng)常有香客問我肾砂,道長,這世上最難降的妖魔是什么宏悦? 我笑而不...
    開封第一講書人閱讀 56,621評論 1 284
  • 正文 為了忘掉前任镐确,我火速辦了婚禮,結(jié)果婚禮上饼煞,老公的妹妹穿的比我還像新娘源葫。我一直安慰自己,他們只是感情好砖瞧,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,741評論 6 386
  • 文/花漫 我一把揭開白布息堂。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪荣堰。 梳的紋絲不亂的頭發(fā)上床未,一...
    開封第一講書人閱讀 49,929評論 1 290
  • 那天,我揣著相機(jī)與錄音振坚,去河邊找鬼即硼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛屡拨,可吹牛的內(nèi)容都是我干的只酥。 我是一名探鬼主播,決...
    沈念sama閱讀 39,076評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼呀狼,長吁一口氣:“原來是場噩夢啊……” “哼裂允!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起哥艇,我...
    開封第一講書人閱讀 37,803評論 0 268
  • 序言:老撾萬榮一對情侶失蹤绝编,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后貌踏,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體十饥,經(jīng)...
    沈念sama閱讀 44,265評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,582評論 2 327
  • 正文 我和宋清朗相戀三年祖乳,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了逗堵。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,716評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡眷昆,死狀恐怖蜒秤,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情亚斋,我是刑警寧澤作媚,帶...
    沈念sama閱讀 34,395評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站帅刊,受9級特大地震影響纸泡,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜赖瞒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,039評論 3 316
  • 文/蒙蒙 一女揭、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧冒黑,春花似錦田绑、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽芒划。三九已至冬竟,卻和暖如春欧穴,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背泵殴。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評論 1 266
  • 我被黑心中介騙來泰國打工涮帘, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人笑诅。 一個(gè)月前我還...
    沈念sama閱讀 46,488評論 2 361
  • 正文 我出身青樓调缨,卻偏偏與公主長得像,于是被迫代替她去往敵國和親吆你。 傳聞我的和親對象是個(gè)殘疾皇子弦叶,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,612評論 2 350

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