Kubernetesレコード

22086 ワード

環境
  • 7台の仮想マシン、3 master 3 node、1台はDockerプライベートライブラリとして
  • VIP
  • 192.168.11.222

  • master
  • 192.168.11.31
  • 192.168.11.32
  • 192.168.11.33

  • node
  • 192.168.11.34
  • 192.168.11.35
  • 192.168.11.36

  • Harbor registry
  • 192.168.11.200


  • システム構成
  • SSHを起動し、起動
  • から起動する.
    service sshd start
    systemctl enable sshd.service
    
  • ファイアウォールとselinux
  • を閉じる
    systemctl stop firewalld  && systemctl disable firewalld
    vim /etc/selinux/config
      SELINUX=disabled
    setenforce 0
    getenforce
    
  • swap
  • を閉じる
    swapoff -a && sed -i '/swap/d' /etc/fstab
    
  • システムルーティングパラメータを構成し、kubeadmがルーティング警告
  • を報告することを防止する.
    echo "net.bridge.bridge-nf-call-ip6tables = 1" >> /etc/sysctl.conf
    echo "net.bridge.bridge-nf-call-iptables = 1" >> /etc/sysctl.conf
    cat  /etc/sysctl.conf   
    sysctl -p
    
  • ノード名
  • を変更
    hostnamectl set-hostname k8s1
    hostnamectl set-hostname k8s2
    hostnamectl set-hostname k8s3
    hostnamectl set-hostname k8s4
    hostnamectl set-hostname k8s5
    hostnamectl set-hostname k8s6
    hostnamectl set-hostname k8s-deploy
    
  • 修正/etc/hostsファイル
  • 192.168.11.31   k8s1
    192.168.11.32   k8s2
    192.168.11.33   k8s3
    192.168.11.34   k8s4
    192.168.11.35   k8s5
    192.168.11.36   k8s6
    192.168.11.200  k8s-deploy
    
    192.30.253.113 github.com
    192.30.252.131 github.com
    185.31.16.185 github.global.ssl.fastly.net
    74.125.237.1 dl-ssl.google.com
    173.194.127.200 groups.google.com
    192.30.252.131 github.com
    185.31.16.185 github.global.ssl.fastly.net
    74.125.128.95 ajax.googleapis.com
    
  • 無鍵登録
  • を構成する.
    ポイントごとに実行
    ssh-keygen
    ssh-copy-id k8s1
    ssh-copy-id k8s2
    ssh-copy-id k8s3
    ssh-copy-id k8s4
    ssh-copy-id k8s5
    ssh-copy-id k8s6
    ssh-copy-id k8s-deploy
    

    keepalivedのインストール(masterノードのみ)
    インストール
    yum install -y keepalived
    

    プロファイル/etc/keepalived/keepalivedを変更します.conf
    バックアップ後の各ノードの変更
    global_defs {
       router_id LVS_k8s
    }
    vrrp_script CheckK8sMaster {
        script "curl -k https://192.168.11.222:6443"        //VIP IP
        interval 3
        timeout 9
        fall 2
        rise 2
    }
    vrrp_instance VI_1 {
        state MASTER
        interface eno16777736                   //ifconfig     IP ,   
        virtual_router_id 61
        priority 120
        advert_int 1
        mcast_src_ip 192.168.11.31              //   IP
        nopreempt
        authentication {
            auth_type PASS
            auth_pass sqP05dQgMSlzrxHj
        }
        unicast_peer {
            #192.168.11.31                      //master   ,       
            192.168.11.32
            192.168.11.33
        }
        virtual_ipaddress {
            192.168.11.222/24                       //VIP IP
        }
        track_script {
            CheckK8sMaster
        }
    }
    

    順次起動
    systemctl enable keepalived && systemctl restart keepalived
    systemctl status keepalived
    

    対応するIP構成を変更して起動すると、2つのノードがBACKUP STATEであることがわかるはずです
    インストールディレクトリを作成し、準備したファイルをこのパスにコピーし、次にインストールするのはインストールディレクトリ内のファイルを基準にします.
    Etcd httpsのインストール(masterノードのみ)
  • k 8 s 1実行
  • export NODE_NAME=k8s1
    export NODE_IP=192.168.11.31
    export NODE_IPS="192.168.11.31 192.168.11.32 192.168.11.33"
    export ETCD_NODES=k8s1=https://192.168.11.31:2380,k8s2=https://192.168.11.32:2380,k8s3=https://192.168.11.33:2380
    
  • k 8 s 2実行
  • export NODE_NAME=k8s2
    export NODE_IP=192.168.11.32
    export NODE_IPS="192.168.11.31 192.168.11.32 192.168.11.33"
    export ETCD_NODES=k8s1=https://192.168.11.31:2380,k8s2=https://192.168.11.32:2380,k8s3=https://192.168.11.33:2380
    
  • k 8 s 3実行
  • export NODE_NAME=k8s3
    export NODE_IP=192.168.11.33
    export NODE_IPS="192.168.11.31 192.168.11.32 192.168.11.33"
    export ETCD_NODES=k8s1=https://192.168.11.31:2380,k8s2=https://192.168.11.32:2380,k8s3=https://192.168.11.33:2380
    

    Etcd証明書
  • CA証明書と鍵
  • を作成する
    cfssl、CloudFlareのPKIツールセットcfsslをインストールしてCertificate Authority(CA)証明書と鍵ファイルを生成します.cfsslツールをデプロイホストにインストールしない場合は、他のホストでこの手順を行い、証明書をetcdをデプロイするホストにコピーするように生成します.
    chmod +x cfssl_linux-amd64
    mv cfssl_linux-amd64 /usr/local/bin/cfssl
    
    chmod +x cfssljson_linux-amd64
    mv cfssljson_linux-amd64 /usr/local/bin/cfssljson
    
    chmod +x cfssl-certinfo_linux-amd64
    mv cfssl-certinfo_linux-amd64 /usr/local/bin/cfssl-certinfo
    
  • ETCDのTLS鍵と証明書
  • を生成する
    ca-config.json:複数のprofilesを定義し、それぞれ異なる期限切れ時間、シーンの使用などのパラメータを指定できます.その後、証明書に署名するときにprofileを使用します.Signing:この証明書が他の証明書に署名するために使用できることを示します.生成されたca.pem証明書のCA=TRUE;server auth:clientがこのCAでserverが提供した証明書を検証できることを示します.Client auth:serverがこのCAでclientが提供した証明書を検証できることを示します.
    通信の安全を保証するために、クライアント(etcdctlなど)とetcdクラスタ、etcdクラスタとの間の通信はTLS暗号化を使用する必要があります.このセクションでは、etcd TLS暗号化に必要な証明書と秘密鍵を作成します.CAプロファイルの作成:
    cat >  ca-config.json <
    cat >  ca-csr.json <

    「CN」:Common Name、kube-apiserverは、証明書からこのフィールドを要求されたユーザー名として抽出します(User Name).ブラウザはこのフィールドを使用して、Webサイトが合法であるかどうかを検証します.「O」:Organization,kube-apiserverは証明書からこのフィールドを要求ユーザが属するグループ(Group)として抽出する.
  • CA証明書と秘密鍵の生成:
  • cfssl gencert -initca ca-csr.json | cfssljson -bare ca
    ls ca*
    
  • etcd証明書署名要求の作成:
  • cat > etcd-csr.json <

    hosts:証明書の使用を許可するetcdノードIPを指定します.各ノードのIPはすべて中あるいはすべての機械が1つの対応するIPの証明書を申請しなければならなくて、ここですべてのIPを配置して入ってくることを選択します
  • etcd証明書および秘密鍵の生成:
  • cfssl gencert -ca=ca.pem \
      -ca-key=ca-key.pem \
      -config=ca-config.json \
      -profile=kubernetes etcd-csr.json | cfssljson -bare etcd
    
    mkdir -p /etc/etcd/ssl
    cp etcd.pem etcd-key.pem ca.pem /etc/etcd/ssl/
    

    次に、ファイルを他のmasterノードにコピーする必要があります.
    #              ,     
    rm -rf /etc/etcd/ssl/*
    scp -r /etc/etcd/ssl/ 192.168.11.31:/etc/etcd/
    scp -r /etc/etcd/ssl/ 192.168.11.32:/etc/etcd/
    

    3つのポイントを一緒に実行
    cd /root/install
    tar -xvf etcd-v3.1.10-linux-amd64.tar.gz
    mv etcd-v3.1.10-linux-amd64/etcd* /usr/local/bin
    

    etcdのsystemd unitファイルを作成する
    mkdir -p /var/lib/etcd
    cd /var/lib/etcd
    
    cat > etcd.service <
  • etcdの作業ディレクトリとデータディレクトリを/var/lib/etcdと指定し、サービスを開始する前にこのディレクトリを作成する必要があります.
  • 通信セキュリティを保証するために、etcdの公開鍵(cert-fileとkey-file)、Peers通信の公開鍵とCA証明書>(peer-cert-file、peer-key-file、peer-trusted-ca-file)、クライアントのCA証明書(trusted-ca-file)を指定する必要がある.
  • --initial-cluster-state値がnewの場合、--nameのパラメータ値は--initial-clusterリストにある必要があります.
  • etcdサービス
  • を開始
    mv etcd.service /etc/systemd/system/
    systemctl daemon-reload && systemctl enable etcd && systemctl start etcd && systemctl status etcd
    
    #    
    systemctl status etcd.service
    journalctl -xe
    
  • 認証サービス
  •  etcdctl \
      --endpoints=https://${NODE_IP}:2379  \
      --ca-file=/etc/etcd/ssl/ca.pem \
      --cert-file=/etc/etcd/ssl/etcd.pem \
      --key-file=/etc/etcd/ssl/etcd-key.pem \
      cluster-health
    

    Dockerのインストール
    #   docker  ,       docker
    cd /root/install
    yum -y remove docker docker-common
    
    cd docker
    yum -y localinstall docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch.rpm
    yum -y localinstall docker-ce-17.03.2.ce-1.el7.centos.x86_64.rpm
    
    #   docker
    systemctl start docker && systemctl enable docker
    #     
    docker ps
    
    #      、  ,   /etc/docker/daemon.json       (         docker   )
    {
    "max-concurrent-downloads": 3,
    "max-concurrent-uploads": 5,
    "registry-mirrors": ["https://7bezldxe.mirror.aliyuncs.com/"],
    "insecure-registries": ["192.168.11.200","192.168.11.218","192.168.11.188","192.168.11.230","192.168.11.112"]
    }
    
    

    クbelet、クbectl、クbeadm、クbecniのインストール
    k 8 sディレクトリに切り替え、プライマリスレーブノードが同時に実行され、ノードからkubeadmをインストールする必要があり、後でkubeadm joinでk 8 sクラスタに参加することができます.
    cd ../k8s
    yum -y install *.rpm
    vi /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
    #Environment="KUBELET_CGROUP_ARGS=--cgroup-driver=systemd"
    Environment="KUBELET_CGROUP_ARGS=--cgroup-driver=cgroupfs"
    systemctl enable docker && systemctl restart docker
    systemctl daemon-reload && systemctl restart kubelet
    
    #    docker_images  
    cd ../docker_images
    for i in `ls`;do docker load -i $i;done
    

    すべてのmasterノードにconfig.yamlファイルを作成
    cat < config.yaml
    apiVersion: kubeadm.k8s.io/v1alpha1
    kind: MasterConfiguration
    etcd:
      endpoints:
      - https://192.168.11.31:2379
      - https://192.168.11.32:2379
      - https://192.168.11.33:2379
      caFile: /etc/etcd/ssl/ca.pem
      certFile: /etc/etcd/ssl/etcd.pem
      keyFile: /etc/etcd/ssl/etcd-key.pem
      dataDir: /var/lib/etcd
    networking:
      podSubnet: 10.244.0.0/16
    kubernetesVersion: 1.9.0
    api:
      advertiseAddress: "192.168.11.222"
    token: "b99a00.a144ef80536d4344"
    tokenTTL: "0s"
    apiServerCertSANs:
    - "k8s1"
    - "k8s2"
    - "k8s3"
    - 192.168.11.31
    - 192.168.11.32
    - 192.168.11.33
    - 192.168.11.222
    featureGates:
      CoreDNS: true
    EOF
    

    VIPのあるマスターノードで次のコマンドを実行します.
    kubeadm init --config config.yaml
    #      join  
    kubeadm join --token b99a00.a144ef80536d4344 192.168.11.222:6443 --discovery-token-ca-cert-hash sha256:cf68966ae386e10c0233e008f21597d1d54a60ea9202d0c360a4b19fa8443328
    
    kubectl apply -f kubeadm-kuberouter.yaml
    kubectl get pod --all-namespaces
    

    他のマスターノードで実行
    systemctl enable kubelet && systemctl start kubelet
    

    起動後、VIPが存在するマスターノードの構成を他のマスターにコピーします.
    #     mkdir /etc/kubernetes/pki/
    scp /etc/kubernetes/pki/* 192.168.11.31:/etc/kubernetes/pki/
    scp /etc/kubernetes/pki/* 192.168.11.32:/etc/kubernetes/pki/
    
    #      systemctl status kubelet       activating (auto-restart),       , init     
    kubeadm init --config config.yaml #            
    
    #   master  pod(  )
    kubectl taint nodes --all node-role.kubernetes.io/master-
    #   master  pod(  )
    kubectl taint nodes centos-master-1 node-role.kubernetes.io/master=true:NoSchedule
    
    #       
    kubectl get nodes
    kubectl get cs
    kubectl get pods --all-namespaces
    

    nodeノードで実行するには、次の手順に従います.
    kubeadm join --token b99a00.a144ef80536d4344 192.168.11.222:6443 --discovery-token-ca-cert-hash sha256:cf68966ae386e10c0233e008f21597d1d54a60ea9202d0c360a4b19fa8443328
    

    クラスタのユーザー名パスワードの追加
    デフォルトの検証方式にはkubeconfigとtokenがありますが、ここではbasicauth方式でapiserverの検証を行います.
    #    /etc/kubernetes/pki/basic_auth_file               
    #user,password,userid
    admin,admin,2
    

    編集/etc/kubernetes/manifests/kube-apiserver.yaml、kube-apiserverにbasic_を追加auth検証
    - --basic_auth_file=/etc/kubernetes/pki/basic_auth_file
    

    クbeletを再起動し、再起動しなければThe connection to the server 192.168.11.223:6443 was refused - did you specify the right host or port?に報告します
    systemctl daemon-reload && systemctl restart kubelet.service
    
  • adminライセンス
  • デフォルトのcluster-adminはすべての権限を持っており、adminとcluster-admin bindにはcluster-adminの権限があります.
    kubectl get clusterrole/cluster-admin -o yaml
    kubectl create clusterrolebinding login-on-dashboard-with-cluster-admin --clusterrole=cluster-admin --user=admin
    kubectl get clusterrolebinding/login-on-dashboard-with-cluster-admin -o yaml
    

    k 8 s注意点:
  • The connection to the server 192.168.11.160:6443 was refused - did you specify the right host or port?
    #     Active: inactive (dead)
    systemctl status kubelet
    systemctl daemon-reload && systemctl restart kubelet
    
  • ログを表示するコマンド
    kubectl logs kube-apiserver --namespace=kube-system
    
  • 共通コマンド
    kubectl get componentstatuses //  node      
    kubectl get svc -n kube-system //    
    kubectl cluster-info //      
    kubectl describe --namespace kube-system service kubernetes-dashboard //      
    kubectl apply -f kube-apiserver.yaml   //  kube-apiserver  
    kubectl delete -f /root/k8s/k8s_images/kubernetes-dashboard.yaml //    
    kubectl  delete service example-server //    
    systemctl  start kube-apiserver.service //    。
    kubectl get deployment --all-namespaces //     
    kubectl get pod  -o wide  --all-namespaces //  pod      
    kubectl get pod -o wide -n kube-system //       node 
    kubectl describe pod --namespace=kube-system //  pod     
    kubectl describe depoly kubernetes-dashboard -n kube-system
    kubectl get depoly kubernetes-dashboard -n kube-system -o yaml
    kubectl get service kubernetes-dashboard -n kube-system //    
    kubectl delete -f kubernetes-dashboard.yaml //    
    kubectl get events //    
    kubectl get rc/kubectl get svc
    kubectl get namespace //  namespace  
    find -type f -print -exec grep hello {} \;
    
    kubeadm reset
    netstat -lutpn | grep 6443
    
  • Harborのインストールと構成
    Harborのインストールにはdocker-composeが必要です.docker-composeはpipでインストールできます.
    pipとdocker-composeのインストール
    #   pip  ,   pip
    curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
    python get-pip.py
    
    #   docker-compose
    pip install -U docker-compose
    

    centos 7下pip install docker-composeインストールdocker-compose下エラー:Cannot uninstall'requests.It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall. 解決策:pip install docker-compose--ignore-installed requests
    harborのインストール
    Harbor v 1をダウンロードします.6.0,harbor.を修正するcfgはhostname = 192.168.11.200を使用し、harborディレクトリで./install.shを実行してインストールを完了します.
    #    harbor     
    docker-compose ps
    #   /  /  harbor
    docker-compose start/stop/restart
    

    K 8 Sアプリケーションログ収集——EFK(Elasticsearch/Fileebeat/Kibana)
    システム環境
  • 3台の仮想マシン、1つのmaster 2つのnode
  • master
  • 192.168.11.218 k8s-master1-test

  • node
  • 192.168.11.219 k8s-node1-test
  • 192.168.11.221 k8s-node2-test

  • その他
  • 3台の機器はすべてjdk 1を取り付ける.8,elasticsearchはjavaが開発した
  • であるため
  • 3台全取付elasticsearch
  • 192.168.11.218をプライマリノードとする
  • 192.168.11.219および192.168.11.221は、データノード
  • として機能する.
  • メインノード192.168.11.218にkibana
  • をインストールする必要がある.
  • ELKバージョン情報:
  • Elasticsearch-6.0.0
  • kibana-6.0.0
  • filebeat-5.4.0


  • インストールes
    wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.0.0.rpm
    rpm -ivh elasticsearch-6.0.0.rpm
    
    ### NOT starting on installation, please execute the following statements to configure elasticsearch service to start automatically using systemd
    sudo systemctl daemon-reload
    sudo systemctl enable elasticsearch.service
    ### You can start elasticsearch service by executing
    sudo systemctl start elasticsearch.service
    

    構成es
    Elasticsearchプロファイルはこの2つの場所にあり、2つのプロファイルがあります.
  • /etc/elasticsearch/elasticsearch.yml
  • /etc/sysconfig/elasticsearch

  • elasticsearch.ymlファイルはクラスタノードなどの関連情報を構成するために使用され、elasticsearchファイルは、あるプロファイルのパスやjavaのいくつかのパス構成など、サービス自体を構成する構成です.
    192.168.77.128でプロファイルを編集します.
    cluster.name: es-master-node  #       
    node.name: k8s-master1-test  #      
    node.master: true  #           
    node.data: false  #          
    network.host: 0.0.0.0  #     ip,               ip
    http.port: 9200  # es      
    discovery.zen.ping.unicast.hosts: ["192.168.11.218", "192.168.11.219", "192.168.11.221"] #       
    

    残りの2つのノードは同じようにプロファイルを編集します.
    cluster.name: es-master-node  #       
    node.name: k8s-node1-test  #      
    node.master: false  #           
    node.data: true  #          
    network.host: 0.0.0.0  #     ip,               ip
    http.port: 9200  # es      
    discovery.zen.ping.unicast.hosts: ["192.168.11.218", "192.168.11.219", "192.168.11.221"] #       
    

    インストール完了起動:
    systemctl start elasticsearch.service
    

    curlはesクラスタの状況を表示します.
    curl 'localhost:9200/_cluster/health?pretty'
    #     
    {
      "cluster_name" : "es-master-node",
      "status" : "yellow",
      "timed_out" : false,
      "number_of_nodes" : 2,
      "number_of_data_nodes" : 1,
      "active_primary_shards" : 1,
      "active_shards" : 1,
      "relocating_shards" : 0,
      "initializing_shards" : 0,
      "unassigned_shards" : 1,
      "delayed_unassigned_shards" : 0,
      "number_of_pending_tasks" : 0,
      "number_of_in_flight_fetch" : 0,
      "task_max_waiting_in_queue_millis" : 0,
      "active_shards_percent_as_number" : 50.0
    }
    

    クラスタの詳細を表示するには、次の手順に従います.
    curl '192.168.11.218:9200/_cluster/state?pretty'
    

    kibanaのインストール
    wget https://artifacts.elastic.co/downloads/kibana/kibana-6.0.0-x86_64.rpm
    rpm -ivh kibana-6.0.0-x86_64.rpm
    

    kibanaの構成
    編集vim /etc/kibana/kibana.yml以下を追加
    server.port: 5601  #   kibana   
    server.host: 192.168.11.218  #     ip
    elasticsearch.url: "http://192.168.11.218:9200"  #   es    ip,                ip
    logging.dest: /var/log/kibana.log  #   kibana       ,     messages     
    

    開始:
    systemctl start kibana
    

    ブラウザへのアクセスはhttp://192.168.11.218:5601/でよい
  • 常用:
  • #  es  :
    curl '192.168.11.218:9200/_cat/indices?v'
    #          :
    curl -XGET '192.168.77.128:9200/system-syslog-2018.03?pretty'
    #        ,              :
    curl -XDELETE 'localhost:9200/logcollection-test'
    

    ログ収集
    filebeatミラーを作成するには:
    まずfilebeat-5.4.0-linux-x 86を用意します.64.tar.gz
  • docker-entrypoint.sh
  • #!/bin/bash
    config=/etc/filebeat/filebeat.yml
    env
    echo 'Filebeat init process done. Ready for start up.'
    echo "Using the following configuration:"
    cat /etc/filebeat/filebeat.yml
    exec "$@"
    
  • dockerfile
  • FROM centos
    MAINTAINER YangLiangWei 
    
    # Install Filebeat
    WORKDIR /usr/local
    COPY filebeat-5.4.0-linux-x86_64.tar.gz  /usr/local
    RUN cd /usr/local && \
        tar xvf filebeat-5.4.0-linux-x86_64.tar.gz && \
        rm -f filebeat-5.4.0-linux-x86_64.tar.gz && \
        ln -s /usr/local/filebeat-5.4.0-linux-x86_64 /usr/local/filebeat && \
        chmod +x /usr/local/filebeat/filebeat && \
        mkdir -p /etc/filebeat
    
    ADD ./docker-entrypoint.sh /usr/bin/
    RUN chmod +x /usr/bin/docker-entrypoint.sh
    
    ENTRYPOINT ["docker-entrypoint.sh"]
    
    CMD ["/usr/local/filebeat/filebeat","-e","-c","/etc/filebeat/filebeat.yml"]
    
  • build dockerミラー
  • docker build -t filebeat:v5.4.0
    docker tag filebeat:v5.4.0 192.168.11.218/hlg_web/filebeat:v5.4.0
    

    k 8 s Secretとライブラリ認証の構成
    #    .dockerconfigjson       login      cat /root/.docker/config.json | base64 -w 0   
    kind: Secret
    apiVersion: v1
    metadata:
      name: regsecret
    type: kubernetes.io/dockerconfigjson
    data:
      ".dockerconfigjson": ewoJImF1dGhzIjogewoJCSIxOTIuMTY4LjExLjIxOCI6IHsKCQkJImF1dGgiOiAiWVdSdGFXNDZTR0Z5WW05eU1USXpORFU9IgoJCX0KCX0KfQ==
    

    このように、podで定義されたミラーがプライベートライブラリのプライベートミラーを引き出す必要がある場合は、imagePullSecretsフィールドを追加すればよい.
          containers:
          - image: 192.168.11.200/hlg_web/datalower:1.1
            name: app
            ports:
            - containerPort: 80
            volumeMounts:
            - name: app-logs
              mountPath: /app/log
          - image: 192.168.11.200/hlg_web/filebeat:v5.4.0
            name: filebeat
            volumeMounts:
            - name: app-logs
              mountPath: /log
            - name: filebeat-config
              mountPath: /etc/filebeat/
          volumes:
          - name: app-logs
            emptyDir: {}
          - name: filebeat-config
            configMap:
              name: filebeat-config
          imagePullSecrets:
          - name: regsecret
    

    Deployment構成
    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
      name: logcollection-test
      namespace: default
    spec:
      replicas: 1
      template:
        metadata:
          labels:
            run: logcollection-test
        spec:
          containers:
          - image: 192.168.11.200/hlg_web/datalower:1.1
            name: app
            ports:
            - containerPort: 80
            volumeMounts:
            - name: app-logs
              mountPath: /app/log
          - image: 192.168.11.200/hlg_web/filebeat:v5.4.0
            name: filebeat
            volumeMounts:
            - name: app-logs
              mountPath: /log
            - name: filebeat-config
              mountPath: /etc/filebeat/
          volumes:
          - name: app-logs
            emptyDir: {}
          - name: filebeat-config
            configMap:
              name: filebeat-config
    ---
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: filebeat-config
    data:
      filebeat.yml: |
        filebeat.prospectors:
        - input_type: log
          paths:
            - "/log/*"
        output.elasticsearch:
          hosts: ["192.168.11.218:9200"]
          index: "logcollection-test"
    

    参照先:
  • kubeadmクイック配備kubernetes(HA)
  • [K 8 s 1.9実践]Kubeadm 1.9 HA高可用性クラスタローカルオフラインミラー配置
  • k 8 s(一)、1.9.0高可用性クラスタローカルオフライン配置記録
  • Harborの構築(vmwareエンタープライズクラスdockerミラー私服)
  • ELKログ分析プラットフォーム(上)——ELK紹介及びElasticsearch分布式クラスタ
  • の構築
  • ELKログ分析プラットフォームを構築する(下)——kibanaとlogstashサーバー
  • を構築する
  • K 8 S filebeatを使用してアプリケーションログ
  • を統一的に収集
  • アプリケーションログ収集・Kubernetes Handbook-Kubernetes中国語ガイド