kubernetes 1.13クラスタログスキーム

11825 ワード

九、クラスタログ方案
次の内容が含まれます.
  • ログパス標準化/data/logs/app/app_error.log app_access.log;
  • ログフォーマット標準化logformat
  • ログfluentdまたはfilebeatをkakfa
  • に収集
  • ログストレージkafkaからes
  • ログクエリesからkibanna
  • ログモニタstorm消費kafka
  • 1、EFK取付
    各nodeにDaemonSet方式で実行されるfluentdを各nodeに配備することで、各nodeのログを収集します.Fluentdはdockerログディレクトリ/var/lib/docker/containersおよび/var/logディレクトリをPodにマウントし、Podはnodeノードの/var/log/podsディレクトリに新しいディレクトリを作成し、異なるコンテナログ出力を区別することができます.このディレクトリの下にログファイルが/var/lib/docker/contianersディレクトリの下のコンテナログ出力にリンクされています.
    公式ドキュメント:https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/fluentd-elasticsearch
    1)yamlのダウンロード
    # mkdir efk && cd efk
    wget  \
    https://raw.githubusercontent.com/kubernetes/kubernetes/master/cluster/addons/fluentd-elasticsearch/es-statefulset.yaml
    wget  \
    https://raw.githubusercontent.com/kubernetes/kubernetes/master/cluster/addons/fluentd-elasticsearch/es-service.yaml
    wget  \
    https://raw.githubusercontent.com/kubernetes/kubernetes/master/cluster/addons/fluentd-elasticsearch/fluentd-es-configmap.yaml
    wget  \
    https://raw.githubusercontent.com/kubernetes/kubernetes/master/cluster/addons/fluentd-elasticsearch/fluentd-es-ds.yaml
    wget  \
    https://raw.githubusercontent.com/kubernetes/kubernetes/master/cluster/addons/fluentd-elasticsearch/kibana-service.yaml
    wget  \
    https://raw.githubusercontent.com/kubernetes/kubernetes/master/cluster/addons/fluentd-elasticsearch/kibana-deployment.yaml
    

    2)引き抜きミラー
    3)ノードにラベルを付ける
    FluentdはDaemonSetとしてKubernetesクラスタで実行されます.これにより、クラスタ内の各ノードでFluentdが起動することを保証できます.MasterノードでFluentedサービスを作成し、最終的に各ノードで実行し、fluentd-es-ds.yaml情報を表示します.
    [centos@k8s-master efk]$ kubectl get -f fluentd-es-ds.yaml
    NAME                        SECRETS   AGE
    serviceaccount/fluentd-es   1         70m
    
    NAME                                               AGE
    clusterrole.rbac.authorization.k8s.io/fluentd-es   70m
    
    NAME                                                      AGE
    clusterrolebinding.rbac.authorization.k8s.io/fluentd-es   70m
    
    NAME                               DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR                              AGE
    daemonset.apps/fluentd-es-v2.2.1   0         0         0       0            0           beta.kubernetes.io/fluentd-ds-ready=true   70m
    

    出力内容から、NODE-SELECTORオプションはbeta.kubernetes.io/fluentd-ds-ready=trueであることがわかりました.このオプションは、fluentdがラベルbeta.kubernetes.io/fluentd-ds-ready=trueが設定されているノードにのみスケジューリングされることを示しています.そうしないと、fluentdのpodは正常に起動しません.
    クラスタ内のノードにこのラベルがあるかどうかを確認します.
    [root@master] ~/efk$ kubectl describe nodes master.hanli.com |grep -A 5 Labels     #               5 
    Labels:             beta.kubernetes.io/arch=amd64
                        beta.kubernetes.io/os=linux
                        kubernetes.io/hostname=master.hanli.com
                        node-role.kubernetes.io/master=
    Annotations:        flannel.alpha.coreos.com/backend-data: {"VtepMAC":"aa:f0:02:e1:ec:13"}
                        flannel.alpha.coreos.com/backend-type: vxlan
    
    

    このラベルがないことに気づき、ログを収集する必要があるすべてのノードにこのラベルを付けます.
    [root@master] ~/efk$ kubectl label nodes master.hanli.com beta.kubernetes.io/fluentd-ds-ready=true
    node/master.hanli.com labeled
    [root@master] ~/efk$ kubectl label nodes slave1.hanli.com beta.kubernetes.io/fluentd-ds-ready=true
    node/slave1.hanli.com labeled
    [root@master] ~/efk$ kubectl label nodes slave2.hanli.com beta.kubernetes.io/fluentd-ds-ready=true
    node/slave2.hanli.com labeled
    [root@master] ~/efk$ kubectl label nodes slave3.hanli.com beta.kubernetes.io/fluentd-ds-ready=true
    node/slave3.hanli.com labeled
    
    

    4)配置
    [root@master] ~/efk$ kubectl create -f .
    service/elasticsearch-logging created
    serviceaccount/elasticsearch-logging created
    clusterrole.rbac.authorization.k8s.io/elasticsearch-logging created
    clusterrolebinding.rbac.authorization.k8s.io/elasticsearch-logging created
    statefulset.apps/elasticsearch-logging created
    configmap/fluentd-es-config-v0.2.0 created
    serviceaccount/fluentd-es created
    clusterrole.rbac.authorization.k8s.io/fluentd-es created
    clusterrolebinding.rbac.authorization.k8s.io/fluentd-es created
    daemonset.apps/fluentd-es-v2.4.0 created
    deployment.apps/kibana-logging created
    service/kibana-logging created
    
    

    すべてのリソースはkube-system Namespaceに配置されており、ミラーのプルアップには時間がかかる場合があります.プルアップに失敗した場合は、対応するノードにログインして手動でプルアップすることもできます.
    podステータスを表示するには、次の手順に従います.
    [root@master] ~/efk$ kubectl get pods --all-namespaces -o wide
    NAMESPACE     NAME                                       READY   STATUS              RESTARTS   AGE     IP                NODE               NOMINATED NODE   READINESS GATES
    default       curl-66959f6557-r4crd                      1/1     Running             1          40h     10.244.2.7        slave2.hanli.com              
    default       nginx-58db6fdb58-5wt7p                     1/1     Running             0          4d22h   10.244.1.4        slave1.hanli.com              
    default       nginx-58db6fdb58-bhmcv                     1/1     Running             0          40h     10.244.2.8        slave2.hanli.com              
    kube-system   coredns-86c58d9df4-8s9ss                   1/1     Running             0          5d      10.244.1.2        slave1.hanli.com              
    kube-system   coredns-86c58d9df4-z6hw5                   1/1     Running             0          5d      10.244.1.3        slave1.hanli.com              
    kube-system   elasticsearch-logging-0                    0/1     ImagePullBackOff    0          6m29s   10.244.1.13       slave1.hanli.com              
    kube-system   etcd-master.hanli.com                      1/1     Running             0          5d      192.168.255.130   master.hanli.com              
    kube-system   fluentd-es-v2.4.0-4j72x                    0/1     ImagePullBackOff    0          6m30s   10.244.3.8        slave3.hanli.com              
    kube-system   fluentd-es-v2.4.0-hkdlf                    1/1     Running             0          6m30s   10.244.0.9        master.hanli.com              
    kube-system   fluentd-es-v2.4.0-nk5wf                    1/1     Running             0          6m30s   10.244.1.12       slave1.hanli.com              
    kube-system   fluentd-es-v2.4.0-q94ht                    0/1     CrashLoopBackOff    3          6m30s   10.244.2.14       slave2.hanli.com              
    kube-system   kibana-logging-764d446c7d-kcc76            0/1     ImagePullBackOff    0          6m30s   10.244.3.9        slave3.hanli.com              
    kube-system   kube-apiserver-master.hanli.com            1/1     Running             0          38h     192.168.255.130   master.hanli.com              
    kube-system   kube-controller-manager-master.hanli.com   1/1     Running             0          38h     192.168.255.130   master.hanli.com              
    kube-system   kube-flannel-ds-amd64-b4xqf                1/1     Running             1          5d      192.168.255.121   slave1.hanli.com              
    kube-system   kube-flannel-ds-amd64-jk579                1/1     Running             0          5d      192.168.255.130   master.hanli.com              
    kube-system   kube-flannel-ds-amd64-pkfcv                1/1     Running             0          37h     192.168.255.123   slave3.hanli.com              
    kube-system   kube-flannel-ds-amd64-wx24x                1/1     Running             0          5d      192.168.255.122   slave2.hanli.com              
    kube-system   kube-proxy-47dh9                           1/1     Running             0          37h     192.168.255.121   slave1.hanli.com              
    kube-system   kube-proxy-64qnx                           1/1     Running             0          37h     192.168.255.123   slave3.hanli.com              
    kube-system   kube-proxy-cbm26                           1/1     Running             0          37h     192.168.255.122   slave2.hanli.com              
    kube-system   kube-proxy-xnpnn                           1/1     Running             0          37h     192.168.255.130   master.hanli.com              
    kube-system   kube-scheduler-master.hanli.com            1/1     Running             0          38h     192.168.255.130   master.hanli.com              
    kube-system   kubernetes-dashboard-57df4db6b-wlwl4       1/1     Running             0          4d22h   10.244.2.2        slave2.hanli.com              
    kube-system   metrics-server-867cb8c5f4-p4nj5            1/1     Running             0          23h     10.244.1.9        slave1.hanli.com              
    monitoring    alertmanager-main-0                        2/2     Running             0          5h2m    10.244.1.10       slave1.hanli.com              
    monitoring    alertmanager-main-1                        0/2     ContainerCreating   0          6m29s               slave3.hanli.com              
    monitoring    alertmanager-main-2                        2/2     Running             0          5h      10.244.0.8        master.hanli.com              
    monitoring    grafana-777cf74b98-v9czp                   1/1     Running             0          5h11m   10.244.3.6        slave3.hanli.com              
    monitoring    kube-state-metrics-66c5b5b6d4-twtsg        4/4     Running             0          136m    10.244.2.13       slave2.hanli.com              
    monitoring    node-exporter-klgfj                        2/2     Running             0          5h11m   192.168.255.130   master.hanli.com              
    monitoring    node-exporter-tgh4f                        2/2     Running             0          5h11m   192.168.255.123   slave3.hanli.com              
    monitoring    node-exporter-z24dz                        2/2     Running             0          5h11m   192.168.255.121   slave1.hanli.com              
    monitoring    node-exporter-z9pb8                        2/2     Running             0          5h11m   192.168.255.122   slave2.hanli.com              
    monitoring    prometheus-adapter-66fc7797fd-hhwms        1/1     Running             0          5h11m   10.244.2.11       slave2.hanli.com              
    monitoring    prometheus-k8s-0                           0/3     Pending             0          6m17s                                       
    monitoring    prometheus-k8s-1                           3/3     Running             0          5h1m    10.244.0.7        master.hanli.com              
    monitoring    prometheus-operator-7df4c46d5b-826gp       1/1     Running             0          5h11m   10.244.3.5        slave3.hanli.com              
    
    

    5)まずproxyエージェントを通じてkibanaサービスを暴露する:
    kubectl proxy --address=‘192.168.255.130’ --port=8086 --accept-hosts=’^*$’
    
    

    kibanaにアクセスし、http://192.168.255.130:8086/api/v1/namespaces/kube-system/services/kibana-logging/proxy