亚洲熟女综合色一区二区三区,亚洲精品中文字幕无码蜜桃,亚洲va欧美va日韩va成人网,亚洲av无码国产一区二区三区,亚洲精品无码久久久久久久

K8S上的ELK和應(yīng)用日志上報實戰(zhàn)

本次實戰(zhàn)的基礎(chǔ)結(jié)構(gòu)如下圖所示:?

K8S上的ELK和應(yīng)用日志上報實戰(zhàn)

一共有兩個Pod:ELK和web應(yīng)用;

ELK的Pod會暴露兩個服務(wù),一個暴露logstash的5044端口,給filebeat用,另一個暴露kibana的5601端口,給搜索日志的用戶訪問的時候用;

web應(yīng)用暴露一個服務(wù),給用戶通過瀏覽器訪問;

實戰(zhàn)步驟簡介

部署ELK的pod和服務(wù);

部署web應(yīng)用的pod和服務(wù);

web應(yīng)用的pod從一個擴展為三個;

體驗ELK;

部署ELK

我們從ELK Sever開始部署吧:?

1. ssh登錄到可以執(zhí)行kubectl命令的機器上去;?

2. 創(chuàng)建elk的部署腳本elkhost.yaml,內(nèi)容如下:

apiVersion: extensions/v1beta1kind: Deploymentmetadata:? name: elkhostspec:? replicas: 1? template:? ? metadata:? ? ?labels:? ? ? ?name: elkhost? ? spec:? ? ?containers:? ? ?- name: elkhost? ? ? ?image: sebp/elk:622? ? ? ?tty: true? ? ? ?ports: [{? ? ? ? ? "containerPort": 5601? ? ? ? },{? ? ? ? ? "containerPort": 5044? ? ? ? }]

如上所示,暴露了兩個端口:kibana的5601和logstash的5044;?

3. 在elkhost.yaml所在目錄執(zhí)行命令kubectl create -f elkhost.yaml,即可創(chuàng)建elk對應(yīng)的pod,如下:

root@willzhao-Vostro-3267:/usr/local/work/elkk8s# kubectl get podsNAME? ? ? ? ? ? ? ? ? ? ? ?READY? ? ?STATUS? ? RESTARTS? ?AGEelkhost-54c9bbd8d5-ffq68? ?1/1? ? ? ?Running? ?0? ? ? ? ? 3m

4. 將kibana的5601端口以NodePort的方式對外暴露,這樣外部就可以通過節(jié)點IP地址來訪問kibana服務(wù)了,創(chuàng)建部署腳本elkkibana-svc.yaml,kibana的服務(wù)通過node節(jié)點的30001端口對外暴露,內(nèi)容如下:

apiVersion: v1kind: Servicemetadata:? name: elkkibanaspec:? type: NodePort? ports:? ? ? ?- port: 5601? ? ? ? ?nodePort: 30001? selector:? ? name: elkhost

5. 將logstash的5044端口以ClusterIP的方式對外暴露,這樣其他pod的filebeat就可以通過服務(wù)名加5044端口來訪問logstash服務(wù)了,創(chuàng)建部署腳本elkhost-svc.yaml,logstash的服務(wù)通過5044端口對K8S內(nèi)部的pod暴露,內(nèi)容如下:

apiVersion: v1kind: Servicemetadata:? name: elkhostspec:? type: ClusterIP? ports:? ? ? ?- port: 5044? ? ? ? ?targetPort: 5044? selector:? ? name: elkhost

6. 在elkhost-svc.yaml所在目錄執(zhí)行命令kubectl create -f elkhost-svc.yaml && kubectl create -f elkkibana-svc.yaml,即可創(chuàng)建elkhost和elkkibana這兩個服務(wù),如下:

root@willzhao-Vostro-3267:/usr/local/work/elkk8s# kubectl create -f elkhost-svc.yaml && kubectl create -f elkkibana-svc.yamlservice "elkhost" createdservice "elkkibana" createdroot@willzhao-Vostro-3267:/usr/local/work/elkk8s# kubectl get serviceNAME? ? ? ? ?TYPE? ? ? ? CLUSTER-IP? ? ? EXTERNAL-IP? ?PORT(S)? ? ? ? ? AGEelkhost? ? ? ClusterIP? ?10.43.103.244? ?<none>? ? ? ? 5044/TCP? ? ? ? ?9selkkibana? ? NodePort? ? 10.43.219.137? ?<none>? ? ? ? 5601:30001/TCP? ?9skubernetes? ?ClusterIP? ?10.43.0.1? ? ? ?<none>? ? ? ? 443/TCP? ? ? ? ? 16d

7. 執(zhí)行命令查看elkhost的pod部署在K8S的哪個node節(jié)點上:

root@willzhao-Vostro-3267:/usr/local/work/elkk8s# kubectl describe pod elkName:? ? ? ? ? ?elkhost-54c9bbd8d5-ffq68Namespace:? ? ? defaultNode:? ? ? ? ? ?willzhao-vostro-3267/192.168.31.89Start Time:? ? ?Mon, 30 Apr 2018 16:22:04 +0800Labels:? ? ? ? ?name=elkhost? ? ? ? ? ? ? ? pod-template-hash=1075668481Annotations:? ? kubernetes.io/created-by={"kind":"SerializedReference","apiVersion":"v1","reference":{"kind":"ReplicaSet","namespace":"default","name":"elkhost-54c9bbd8d5","uid":"9096cde8-4c4f-11e8-a776-024f8a041a1a"...Status:? ? ? ? ?Running...

如上所示,Node: willzhao-vostro-3267/192.168.31.89顯示了這個pod部署的節(jié)點IP是192.168.31.89;?

8. 打開瀏覽器,輸入192.168.31.89:30001,即可訪問到Kibana服務(wù),如下圖:?

K8S上的ELK和應(yīng)用日志上報實戰(zhàn)

部署應(yīng)用

ELK Sever已經(jīng)OK,接下來部署web應(yīng)用:?

1. 創(chuàng)建elkwebdemo的部署腳本elkwebdemo.yaml,內(nèi)容如下:

apiVersion: extensions/v1beta1kind: Deploymentmetadata:? name: elkwebdemospec:? replicas: 1? template:? ? metadata:? ? ?labels:? ? ? ?name: elkwebdemo? ? spec:? ? ?containers:? ? ?- name: elkwebdemo? ? ? ?image: bolingcavalry/elkdemo:0.0.1-SNAPSHOT? ? ? ?tty: true? ? ? ?ports:? ? ? ?- containerPort: 8080

2. 在elkwebdemo.yaml所在目錄執(zhí)行命令kubectl create -f elkwebdemo.yaml,即可創(chuàng)建elk對應(yīng)的pod,如下:

root@willzhao-Vostro-3267:/usr/local/work/elkk8s# kubectl get podNAME? ? ? ? ? ? ? ? ? ? ? ? ?READY? ? ?STATUS? ? RESTARTS? ?AGEelkhost-944bcbcd4-8vpbs? ? ? 1/1? ? ? ?Running? ?0? ? ? ? ? 4melkwebdemo-dddbcfc6f-x4pk6? ?1/1? ? ? ?Running? ?0? ? ? ? ? 9s

3. 創(chuàng)建elk對外服務(wù)的部署腳本elkwebdemo-svc.yaml,web的服務(wù)通過node節(jié)點的30002端口對外暴露,內(nèi)容如下:

apiVersion: v1kind: Servicemetadata:? name: elkwebdemospec:? type: NodePort? ports:? ? ? ?- port: 8080? ? ? ? ?nodePort: 30002?? selector:? ? name: elkwebdemo

5. 在elkwebdemo-svc.yaml所在目錄執(zhí)行命令kubectl create -f elkwebdemo-svc.yaml,即可創(chuàng)建elkwebdemo對應(yīng)的pod,如下:

root@willzhao-Vostro-3267:/usr/local/work/elkk8s# kubectl get serviceNAME? ? ? ? ?TYPE? ? ? ? CLUSTER-IP? ? ? EXTERNAL-IP? ?PORT(S)? ? ? ? ? AGEelkhost? ? ? ClusterIP? ?10.43.103.244? ?<none>? ? ? ? 5044/TCP? ? ? ? ?6melkkibana? ? NodePort? ? 10.43.219.137? ?<none>? ? ? ? 5601:30001/TCP? ?6mkubernetes? ?ClusterIP? ?10.43.0.1? ? ? ?<none>? ? ? ? 443/TCP? ? ? ? ? 16d

6. 執(zhí)行命令查看elkwebdemo的pod部署在K8S的哪個node節(jié)點上:

root@willzhao-Vostro-3267:/usr/local/work/elkk8s# kubectl describe pod elkwebdemoName:? ? ? ? ? ?elkwebdemo-dddbcfc6f-8bbrbNamespace:? ? ? defaultNode:? ? ? ? ? ?willzhao-vostro-3267/192.168.31.89Start Time:? ? ?Mon, 30 Apr 2018 16:28:37 +0800Labels:? ? ? ? ?name=elkwebdemo? ? ? ? ? ? ? ? pod-template-hash=888679729Annotations:? ? kubernetes.io/created-by={"kind":"SerializedReference","apiVersion":"v1","reference":{"kind":"ReplicaSet","namespace":"default","name":"elkwebdemo-dddbcfc6f","uid":"7a9364d1-4c50-11e8-a776-024f8a041a1...Status:? ? ? ? ?Running...

如上所示,Node: willzhao-vostro-3267/192.168.31.89顯示了這個pod部署的節(jié)點IP是192.168.31.89;?

7. 打開瀏覽器,輸入http://192.168.31.89:30002/hello/tom,即可訪問到web服務(wù),如下圖:?

K8S上的ELK和應(yīng)用日志上報實戰(zhàn)

設(shè)置kibana

再次打開kibana頁面,如下圖所示,點擊紅框中的“Discover”,發(fā)現(xiàn)已經(jīng)搜集到了上報的日志,如綠框所示:?

K8S上的ELK和應(yīng)用日志上報實戰(zhàn)

如下圖設(shè)置:?

K8S上的ELK和應(yīng)用日志上報實戰(zhàn)

繼續(xù)設(shè)置,如下圖:?

K8S上的ELK和應(yīng)用日志上報實戰(zhàn)

再此點擊左上角的”Discover”,既可開始搜索web應(yīng)用日志,如下圖:?

K8S上的ELK和應(yīng)用日志上報實戰(zhàn)

web應(yīng)用擴容

現(xiàn)在我們模擬生產(chǎn)環(huán)境的在線擴容:?

1. 將web應(yīng)用從一個擴展到三個,執(zhí)行以下命令:

kubectl scale deployment elkwebdemo --replicas=3

2. 可以看到web應(yīng)用對應(yīng)的pod已經(jīng)擴展了,如下所示:


root@willzhao-Vostro-3267:~# kubectl scale deployment elkwebdemo --replicas=3deployment "elkwebdemo" scaledroot@willzhao-Vostro-3267:~# kubectl get podNAME? ? ? ? ? ? ? ? ? ? ? ? ?READY? ? ?STATUS? ? RESTARTS? ?AGEelkhost-944bcbcd4-8vpbs? ? ? 1/1? ? ? ?Running? ?0? ? ? ? ? 1helkwebdemo-dddbcfc6f-crzcp? ?1/1? ? ? ?Running? ?0? ? ? ? ? 11selkwebdemo-dddbcfc6f-tsppk? ?1/1? ? ? ?Running? ?0? ? ? ? ? 11selkwebdemo-dddbcfc6f-x4pk6? ?1/1? ? ? ?Running? ?0? ? ? ? ? 1h

3. 為了能多上報一些日志,在瀏覽器上多刷新幾次這個地址:http://192.168.31.89:30002/hello/tom?
4. 回到kibana頁面,如下圖,點擊紅框中的“host”,展開的信息顯示,這些日志來自三個host:?

K8S上的ELK和應(yīng)用日志上報實戰(zhàn)

5. 打開K8S的dashboard頁面看一下容器信息,如下圖,可以見到三個web容器的hostname和kibana中的host是一樣的:

K8S上的ELK和應(yīng)用日志上報實戰(zhàn)

聲明:文章來源于網(wǎng)絡(luò),侵刪!

相關(guān)新聞

歷經(jīng)多年發(fā)展,已成為國內(nèi)好評如潮的Linux云計算運維、SRE、Devops、網(wǎng)絡(luò)安全、云原生、Go、Python開發(fā)專業(yè)人才培訓(xùn)機構(gòu)!