EFK操作說明
==
注意
TASK_4327_20181206 舊版的kubenetes符合efk yml設定,安裝請先進入此branch
## 原理
1. container輸出的log,以-json.log命名方式存在/var/lib/log/containers目錄底下
2. 在各node上運行fluentd服務(同logstash),採集所在節點/var/log與/var/lib/docker/containers兩個目錄下的log
3. fluentd採集的日誌數據彙總到elasticsearch
4. 最後由kibana展示
### Abc
```abc
X:1
T:Speed the Plough
M:4/4
C:Trad.
K:G
|:GABc dedB|dedB dedB|c2ec B2dB|c2A2 A2BA|A2F2 G4:|
GABc dedB|dedB dedB|c2ec B2dB|A2F2 G4:|
|:g2gf gdBd|g2f2 e2d2|c2ec B2dB|c2A2 A2df|
g2gf g2Bd|g2f2 e2d2|c2ec B2dB|AF G4:|
```
## 安裝
#### 準備imges
~~~shell=
sudo docker pull netonline/fluentd-elasticsearch:v2.0.4
sudo docker pull netonline/elasticsearch:v5.6.4
sudo docker pull netonline/kibana:5.6.4
~~~
#### 下載yaml
~~~shell=
mkdir -p /usr/local/src/yaml
cd /usr/local/src/yaml
sudo scp -r k200@60.250.213.48:~/efk/ .
~~~
#### 設置標籤
~~~shell=
# 所有期望運行fluentd Pod的節點都需要設置標籤
# 找到所有nodes name
kubectl get nodes | grep Ready | awk '{print $1}'
kubectl label nodes [node name] beta.kubernetes.io/fluentd-ds-ready=true
~~~
## 驗證
#### 啟動服務
~~~shell=
cd /usr/local/src/yaml/efk/
kubectl create -f .
~~~
#### 查看服務
~~~shell=
# 查看statefulset,daemonset與deployment
kubectl get statefulset -n kube-system
kubectl get daemonset -n kube-system
kubectl get deployment -n kube-system | grep kibana
# 查看elasticsearch與kibana的Pod運行狀態
kubectl get pods -n kube-system | grep -E 'elasticsearch|kibana'
# 查看fluentd的Pod運行狀態
kubectl get pods -n kube-system -o wide | grep fluentd
# 查看service運行狀態
kubectl get svc -n kube-system | grep -E 'elasticsearch|kibana'
# kibana Pod第一次啟動時有一定的初始化操作來優化並cache狀態頁面,時間一般在10~20分鐘內;
# 下列輸入kibana pod ID
kubectl log kibana-logging-5d4b6ddfc7-szx6d -n kube-system -f
~~~
## 查看EFK Info
~~~shell=
kubectl cluster-info
~~~
## 訪問elasticsearch
瀏覽器訪問訪問elasticsearch,返回json
https://[user_IP]:6443/api/v1/namespaces/kube-system/services/elasticsearch-logging/proxy/
## 訪問kibana
瀏覽器訪問訪問kibana
https://[user_IP]:6443/api/v1/namespaces/kube-system/services/kibana-logging/proxy
## 解決
#### 若kibana跑不起來,需要生成金鑰餵給瀏覽器 Firefox
~~~shell=
cd /etc/kubernetes/ssl
sudo cp apiserver-kubelet-client.crt ~/ |sudo cp apiserver-kubelet-client.key ~/ |sudo cp ca.crt ~/
#cd 到home底下生成金鑰client.p12
cd
openssl pkcs12 -export -in apiserver-kubelet-client.crt -inkey apiserver-kubelet-client.key -certfile ca.crt -name $(openssl x509 -noout -in apiserver-kubelet-client.crt -subject | sed -e 's;.*CN=;;' -e 's;/Em.*;;') -caname $(openssl x509 -noout -in ca.crt -subject | sed -e 's;.*CN=;;' -e 's;/Em.*;;') -out client.p12
#會請求金鑰密碼設定,可以不用設定,在import這組金鑰時會需要使用
~~~
#### 若生成金鑰有權限問題,將apiserver-kubelet-client.crt、apiserver-kubelet-client.key、ca.crt權限設成 user name
~~~shell=
chown [user_name] apiserver-kubelet-client.crt | chown [user_name] apiserver-kubelet-client.key | chown [user_name] ca.crt
~~~
#### 將client.p12放進Firefox的 Preferences → Privacy&Security → 拉到最下面 View Certificates → Your Certificates → import client.p12
#### 金鑰放完必須要把Firefox整個頁面關閉,重開elasticsearch、kibana頁面要輸入帳號密碼,帳號
#### 連線嘗試kibana有沒有回覆
~~~shell=
curl -i —cert apiserver-kubelet-client.crt —key apiserver-kubelet-client.key —cacert ca.crt https://192.168.62.131/api/v1/namespaces/kube-system
~~~