1. 程式人生 > >部署 Kubernetes 叢集日誌外掛 Fluentd、Elasticsearch、Kibana

部署 Kubernetes 叢集日誌外掛 Fluentd、Elasticsearch、Kibana

目錄

  • Kubernetes 日誌架構介紹
  • 環境、軟體準備
  • 啟動 Fluentd
  • 啟動 Elasticsearch
  • 啟動 Kibana
    • 瀏覽器新增證書
    • RBAC 認證模式介紹

1、Kubernetes 日誌架構介紹

對於任何基礎架構或者服務系統,日誌重要性不言而喻,當然 Kubernetes 也少不了對 Logging 的支援,叢集中各個資源以及服務日誌如何很好的集中檢視並分析,官方給出了 Cluster-level Logging 的架構,其中就提供使用 EFK 框架作為叢集日誌解決方案。當然 EFK / ELK 在業內也是相對成熟作為日誌集中分析平臺,ELK 在 Kubernetes 叢集中以 Pod 方式執行,絲毫不影響叢集中其他 Pod,而且不需要修改其他 Pod 配置,非常方便。

這裡寫圖片描述

從圖上可以看出,它是採用 Node Logging Agent 的方式,通過在叢集每個節點上部署一個 Agent 代理 Pod 服務,收集該 Node 上的日誌並 Push 到後端,當然 Logging agent 是以容器方式執行,並且有許可權進入該節點上所有服務容器的日誌目錄。上邊提到的 Logging-agent 就可以採用 Fluentd,而 Logging Backend 就可以採用 Elasticsearch,簡單理解就是,通過 Fluentd 作為 Logging-agent 收集並 Push 日誌到後端 Elasticsearch,最終通過 Kibana 圖形化展現出來。

2、環境、軟體準備

部署 Fluentd、Elasticsearch、Kibana 到 Kubernetes 叢集中,前提我們需要有一個正常執行的叢集服務,這裡我採用 kubeadm 搭建的 Kubernetes 叢集,具體搭建步驟可以參考我上一篇文章 國內使用 kubeadm 在 Centos 7 搭建 Kubernetes 叢集 講述的比較詳細,這裡就不做演示了。不過還是要說一下的就是國內翻牆問題,由於這三個服務所需要的 images 在國外,國內使用者可以去 Docker Hub 下載指定版本的映象替代,下載完成後,通過 docker tag ... 命令修改成指定名稱的映象即可。

本次演示所依賴的各個映象列表如下:

Image Name Version Des ( * 必需)
gcr.io/google_containers/elasticsearch v2.4.1-1 *
gcr.io/google_containers/kibana v4.6.1-1 *
gcr.io/google_containers/fluentd-elasticsearch 1.22 *

說明一下,這裡我沒有使用最新版本的映象,因為我的 Kubernetes 版本為 v1.6.2,所以我選擇了Github kubernetes 下該版本對應的元件,回頭再試下更新成最新版本的試試看。

可使用下邊指令碼,分別替換以上映象。

#!/bin/bash

images=(
    elasticsearch:v2.4.1-1 
    kibana:v4.6.1-1
    fluentd-elasticsearch:1.22)

for imageName in ${images[@]} ; do
    docker pull docker.io/bigwhite/$imageName
    docker tag docker.io/bigwhite/$imageName gcr.io/google_containers/$imageName 
    docker rmi docker.io/bigwhite/$imageName
done   

3、啟動 Fluentd

Fluentd 是以 DaemonSet 的形式執行在 Kubernetes 叢集中,這樣就可以保證叢集中每個 Node 上都會啟動一個 Fluentd,我們在 Master 節點建立 Fluented 服務,最終會在各個 Node 上執行,可以通過 Yaml 檔案的方式。

$ cd /home/wanyang3/k8s/
$ git clone https://github.com/kubernetes/kubernetes.git
$ git checkout v1.6.2
$ cd cluster/addons/fluentd-elasticsearch
$ ls -l *.yaml
-rw-r--r--. 1 root root 1246 111 16:55 es-controller.yaml
-rw-r--r--. 1 root root  382 111 14:44 es-service.yaml
-rw-r--r--. 1 root root 1626 111 14:46 fluentd-es-ds.yaml
-rw-r--r--. 1 root root  986 111 14:46 kibana-controller.yaml
-rw-r--r--. 1 root root  354 111 14:44 kibana-service.yaml

$ kubectl create -f fluentd-es-ds.yaml

命令建立 Fluentd 後,預設會將啟動日誌輸出到 Node 節點的 /var/log/fluented.log 檔案裡面去。但是,當我們去 Node 節點上執行 tail -f /var/log/fluented.log 時,卻發現提示並沒有該檔案,難道沒啟動成功?

首先檢視一下 Pod 沒有建立,通過 kubectl get pods -n kube-system 命令檢視並沒有Running 或者 Pendding 中的 fluentd,那就是沒有建立成功,這是為啥呢?

接著我們檢視下 fluentd-es-ds.yaml 資訊

$ kubectl get -f fluentd-es-ds.yaml
NAME               DESIRED   CURRENT   READY     UP-TO-DATE   AVAILABLE   NODE-SELECTOR                              AGE
fluentd-es-v1.22   0         0         0         0            0           beta.kubernetes.io/fluentd-ds-ready=true   1m

通過輸出我們可以看到,確實沒有啟動起來,不過我們發現 NODE-SELECTOR 選項為 beta.kubernetes.io/fluentd-ds-ready=true,這下就明白為什麼了,原來 fluentd 只會排程設定了標籤 beta.kubernetes.io/fluentd-ds-ready=true 的 Node 節點。

不甘心的我,決定看下我叢集中 Node 節點是否有這個標籤,

$ kubectl describe nodes node0.localdomain
Name:           node0.localdomain
Role:
Labels:         beta.kubernetes.io/arch=amd64
                beta.kubernetes.io/os=linux
                kubernetes.io/hostname=node0.localdomain
...         

好吧,這下死心了,確實沒有這個標籤,那就給該 Node 補上這個標籤,然後重新執行下 fluentd。

# Node 節點打標籤
$ kubectl label node node0.localdomain beta.kubernetes.io/fluentd-ds-ready=true 
# 重新執行 fluentd
$ kubectl apply -f fluentd-es-ds.yaml
# 檢視 Pod 是否啟動成功
$ kubectl get pods -n kube-system
NAME                                         READY     STATUS    RESTARTS   AGE
fluentd-es-v1.22-4g2zl                       1/1       Running   1          5m
...

好了,這下啟動成功了,這下在去看下 Node 節點 /var/log/fluented.log 檔案,這下有日誌輸出啦。

$ tail -f /var/log/fluented.log
2017-11-01 08:37:44 +0000 [info]: reading config file path="/etc/td-agent/td-agent.conf"
2017-11-01 08:37:44 +0000 [info]: starting fluentd-0.12.31
2017-11-01 08:37:44 +0000 [info]: gem 'fluent-mixin-config-placeholders' version '0.4.0'
2017-11-01 08:37:44 +0000 [info]: gem 'fluent-mixin-plaintextformatter' version '0.2.6'
2017-11-01 08:37:44 +0000 [info]: gem 'fluent-plugin-docker_metadata_filter' version '0.1.3'
2017-11-01 08:37:44 +0000 [info]: gem 'fluent-plugin-elasticsearch' version '1.5.0'
2017-11-01 08:37:44 +0000 [info]: gem 'fluent-plugin-kafka' version '0.4.1'
2017-11-01 08:37:44 +0000 [info]: gem 'fluent-plugin-kubernetes_metadata_filter' version '0.24.0'
2017-11-01 08:37:44 +0000 [info]: gem 'fluent-plugin-mongo' version '0.7.16'
2017-11-01 08:37:44 +0000 [info]: gem 'fluent-plugin-rewrite-tag-filter' version '1.5.5'
2017-11-01 08:37:44 +0000 [info]: gem 'fluent-plugin-s3' version '0.8.0'
2017-11-01 08:37:44 +0000 [info]: gem 'fluent-plugin-scribe' version '0.10.14'
2017-11-01 08:37:44 +0000 [info]: gem 'fluent-plugin-td' version '0.10.29'
2017-11-01 08:37:44 +0000 [info]: gem 'fluent-plugin-td-monitoring' version '0.2.2'
2017-11-01 08:37:44 +0000 [info]: gem 'fluent-plugin-webhdfs' version '0.4.2'
2017-11-01 08:37:44 +0000 [info]: gem 'fluentd' version '0.12.31'
2017-11-01 08:37:44 +0000 [info]: adding match pattern="fluent.**" type="null"
...
2017-11-01 08:37:46 +0000 [warn]: /var/log/containers/fluentd-es-v1.22-4g2zl_kube-system_fluentd-es-5632cf09917eda0637a911be6a7bb2738d490216c8f0b56a0f74b4b8c91e191c.log unreadable. It is excluded and would be examined next time.

最後的一行輸出又是什麼鬼?獲取不到容器 fluentd 在 /var/log/containers/fluentd-es-xxxxxx 下的日誌輸出。果斷去該目錄 /var/log/containers/ 下看下確實沒有任何容器日誌檔案,好吧,分析覺得很有可能是 Docker 輸出日誌的位置跟 Fluentd 監聽的日誌的位置不一致。

$ cat fluentd-es-ds.yaml
...
volumes:
- name: varlog
hostPath:
    path: /var/log
- name: varlibdockercontainers
hostPath:
    path: /var/lib/docker/containers

原來是去 /var/lib/docker/containers/var/log 目錄去找日誌。我檢視那一下機器Docker 的日誌驅動配置

$ docker info
...
Logging Driver: journald
Cgroup Driver: systemd
...

原來這個節點 安裝的 Docker 預設日誌驅動為 journald,那麼所有的日誌都會通過系統的 journal進行統一處理,輸出到 /var/log/messages 下邊了。怪不得提示 /var/log/containers/ 下沒有任何容器日誌檔案呢。解決辦法就是修改 Docker 的日誌驅動為 json-file 方式。

$ vim /etc/sysconfig/docker
增加 OPTIONS='--selinux-enabled --log-driver=json-file --signature-verification=false'

$ systemctl daemon-reload
$ systemctl restart docker

好了,現在去看下 /var/log/containers/fluentd-es-xxxxxx 終於有日誌輸出了。

2017-11-01 08:49:25 +0000 [info]: reading config file path="/etc/td-agent/td-agent.conf"
2017-11-01 08:49:25 +0000 [info]: starting fluentd-0.12.31
2017-11-01 08:49:25 +0000 [info]: gem 'fluent-mixin-config-placeholders' version '0.4.0'
2017-11-01 08:49:25 +0000 [info]: gem 'fluent-mixin-plaintextformatter' version '0.2.6'
2017-11-01 08:49:25 +0000 [info]: gem 'fluent-plugin-docker_metadata_filter' version '0.1.3'
2017-11-01 08:49:25 +0000 [info]: gem 'fluent-plugin-elasticsearch' version '1.5.0'
2017-11-01 08:49:25 +0000 [info]: gem 'fluent-plugin-kafka' version '0.4.1'
2017-11-01 08:49:25 +0000 [info]: gem 'fluent-plugin-kubernetes_metadata_filter' version '0.24.0'
2017-11-01 08:49:25 +0000 [info]: gem 'fluent-plugin-mongo' version '0.7.16'
2017-11-01 08:49:25 +0000 [info]: gem 'fluent-plugin-rewrite-tag-filter' version '1.5.5'
2017-11-01 08:49:25 +0000 [info]: gem 'fluent-plugin-s3' version '0.8.0'
2017-11-01 08:49:25 +0000 [info]: gem 'fluent-plugin-scribe' version '0.10.14'
2017-11-01 08:49:25 +0000 [info]: gem 'fluent-plugin-td' version '0.10.29'
2017-11-01 08:49:25 +0000 [info]: gem 'fluent-plugin-td-monitoring' version '0.2.2'
2017-11-01 08:49:25 +0000 [info]: gem 'fluent-plugin-webhdfs' version '0.4.2'
2017-11-01 08:49:25 +0000 [info]: gem 'fluentd' version '0.12.31'
2017-11-01 08:49:25 +0000 [info]: adding match pattern="fluent.**" type="null"
...
2017-11-01 08:49:39 +0000 [warn]: suppressed same stacktrace
2017-11-01 08:49:48 +0000 [warn]: temporarily failed to flush the buffer. next_retry=2017-11-01 08:50:03 +0000 error_class="Fluent::ElasticsearchOutput::ConnectionFailure" error="Can not reach Elasticsearch cluster ({:host=>\"elasticsearch-logging\", :port=>9200, :scheme=>\"http\"})!" plugin_id="object:3ff062495470"

這下輸出終於正常了,不過最後輸出 error="Can not reach Elasticsearch cluster 這個錯誤,可以先不用管,因為 Elasticsearch 服務我們還沒啟動呢,連線不上是正常的,下邊啟動完畢之後,就正常了。

4、啟動 Elasticsearch

經過一番折騰,作為 Logging-agent 的 Fluentd 啟動好了,現在要啟動作為 Logging Backend 的 Elasticsearch 了,Elasticsearch 的主要作用是將日誌資訊進行分割,建立索引,配合下邊 Kibana 展示資料使用。它也是通過 Yaml 檔案建立。

$ kubectl create -f es-controller.yaml
$ kubectl create -f es-service.yaml

$ kubectl get pods --all-namespaces -o wide
NAMESPACE     NAME                                   READY     STATUS    RESTARTS   AGE       IP             NODE
kube-system   elasticsearch-logging-v1-1rt61         1/1       Running   0          10s        10.96.2.28     node0.localdomain
kube-system   elasticsearch-logging-v1-gbq8p         1/1       Running   0          10s        10.96.2.29     node0.localdomain
kube-system   fluentd-es-v1.22-4g2zl                 1/1       Running   1          20m        10.96.2.24     node0.localdomain
...

看樣子是啟動成功了,不放心還是看下日誌輸出吧!

$ kubectl logs -f pod/elasticsearch-logging-v1-1rt61 -n kube-system
[2017-11-01 08:58:04,774][INFO ][node                     ] [elasticsearch-logging-v1-1rt61] version[2.4.1], pid[13], build[c67dc32/2016-09-27T18:57:55Z]
[2017-11-01 08:58:04,788][INFO ][node                     ] [elasticsearch-logging-v1-1rt61] initializing ...
[2017-11-01 08:58:06,218][INFO ][plugins                  ] [elasticsearch-logging-v1-1rt61] modules [reindex, lang-expression, lang-groovy], plugins [], sites []
[2017-11-01 08:58:06,367][INFO ][env                      ] [elasticsearch-logging-v1-1rt61] using [1] data paths, mounts [[/data (/dev/mapper/cl-root)]], net usable_space [22.4gb], net total_space [32.7gb], spins? [possibly], types [xfs]
[2017-11-01 08:58:06,367][INFO ][env                      ] [elasticsearch-logging-v1-1rt61] heap size [1015.6mb], compressed ordinary object pointers [true]
[2017-11-01 08:58:12,117][INFO ][node                     ] [elasticsearch-logging-v1-1rt61] initialized
[2017-11-01 08:58:12,117][INFO ][node                     ] [elasticsearch-logging-v1-1rt61] starting ...
[2017-11-01 08:58:12,688][INFO ][transport                ] [elasticsearch-logging-v1-1rt61] publish_address {10.96.2.28:9300}, bound_addresses {[::]:9300}
[2017-11-01 08:58:12,706][INFO ][discovery                ] [elasticsearch-logging-v1-1rt61] kubernetes-logging/9bdsRkUYTCKI5DNKGZXmxw
[2017-11-01 08:58:15,828][INFO ][cluster.service          ] [elasticsearch-logging-v1-1rt61] new_master {elasticsearch-logging-v1-1rt61}{9bdsRkUYTCKI5DNKGZXmxw}{10.96.2.28}{10.96.2.28:9300}{master=true}, added {{elasticsearch-logging-v1-gbq8p}{clJyWOTlRx6qn5nHeFEinw}{10.96.2.29}{10.96.2.29:9300}{master=true},}, reason: zen-disco-join(elected_as_master, [1] joins received)
[2017-11-01 08:58:15,948][INFO ][http                     ] [elasticsearch-logging-v1-1rt61] publish_address {10.96.2.28:9200}, bound_addresses {[::]:9200}
[2017-11-01 08:58:15,948][INFO ][node                     ] [elasticsearch-logging-v1-1rt61] started
[2017-11-01 08:58:16,059][INFO ][gateway                  ] [elasticsearch-logging-v1-1rt61] recovered [0] indices into cluster_state
[2017-11-01 08:58:44,750][INFO ][cluster.metadata         ] [elasticsearch-logging-v1-1rt61] [logstash-2017.11.01] creating index, cause [auto(bulk api)], templates [], shards [5]/[1], mappings []
[2017-11-01 08:58:46,296][INFO ][cluster.routing.allocation] [elasticsearch-logging-v1-1rt61] Cluster health status changed from [RED] to [YELLOW] (reason: [shards started [[logstash-2017.11.01][0], [logstash-2017.11.01][0]] ...]).
[2017-11-01 08:58:46,434][INFO ][cluster.metadata         ] [elasticsearch-logging-v1-1rt61] [logstash-2017.11.01] create_mapping [fluentd]
[2017-11-01 08:58:46,578][INFO ][cluster.metadata         ] [elasticsearch-logging-v1-1rt61] [logstash-2017.11.01] update_mapping [fluentd]
[2017-11-01 08:58:46,697][INFO ][cluster.metadata         ] [elasticsearch-logging-v1-1rt61] [logstash-2017.11.01] update_mapping [fluentd]
[2017-11-01 08:58:47,059][INFO ][cluster.routing.allocation] [elasticsearch-logging-v1-1rt61] Cluster health status changed from [YELLOW] to [GREEN] (reason: [shards started [[logstash-2017.11.01][0]] ...]).

[YELLOW] to [GREEN] 了,妥妥沒問題了。在去 Node 節點看下上邊安裝完 Fluentd 最後的 error 如何了。

$ tail -f /var/log/fluented.log
...
2017-11-01 08:58:44 +0000 [info]: Connection opened to Elasticsearch cluster => {:host=>"elasticsearch-logging", :port=>9200, :scheme=>"http"}
2017-11-01 08:58:47 +0000 [warn]: retry succeeded. plugin_id="object:3ff062495470"
2017-11-01 09:00:26 +0000 [info]: following tail of /var/log/containers/kibana-logging-3757371098-dkjsg_kube-system_kibana-logging-e60bec3a2f87ba6d85952bf4d73f301b912cf797b97ca545340a429747c4351a.log

顯示連線成功,這一次還挺順利的哈。接下來該啟動 Kibana 服務來圖形化檢視收集的日誌資訊了。

5、啟動 Kibana

Kibana 是一個開源的分析與視覺化平臺,與 Elasticsearch 一起使用的,可以用 Kibana 搜尋、檢視、互動存放在 Elasticsearch 索引裡的資料,很直觀的在瀏覽器頁面圖形化展示出來,非常方便,它也是通過 Yaml 檔案建立。

$ kubectl create -f kibana-controller.yaml
$ kubectl create -f kibana-service.yaml

$ kubectl get pods --all-namespaces -o wide
NAMESPACE     NAME                                         READY     STATUS    RESTARTS   AGE       IP             NODE
kube-system   elasticsearch-logging-v1-1rt61               1/1       Running   0          2m        10.96.2.28     node0.localdomain
kube-system   elasticsearch-logging-v1-gbq8p               1/1       Running   0          2m        10.96.2.29     node0.localdomain
kube-system   fluentd-es-v1.22-4g2zl                       1/1       Running   1          22m       10.96.2.24     node0.localdomain
kube-system   kibana-logging-3757371098-dkjsg              1/1       Running   0          8s        10.96.2.30     node0.localdomain

顯示啟動成功,檢視下日誌輸出,顯示需要花費幾分鐘優化快取 Kibana 和狀態頁。

$ kubectl logs -f pod/kibana-logging-3757371098-dkjsg -n kube-system
ELASTICSEARCH_URL=http://elasticsearch-logging:9200
server.basePath: /api/v1/proxy/namespaces/kube-system/services/kibana-logging
{"type":"log","@timestamp":"2017-11-01T09:00:40Z","tags":["info","optimize"],"pid":5,"message":"Optimizing and caching bundles for kibana and statusPage. This may take a few minutes"}

稍等幾分鐘(有的可能需要更長時間,我的 5 分鐘左右),再來檢視日誌,就顯示啟動成功了。

$ kubectl logs -f pod/kibana-logging-3757371098-dkjsg -n kube-system
ELASTICSEARCH_URL=http://elasticsearch-logging:9200
server.basePath: /api/v1/proxy/namespaces/kube-system/services/kibana-logging
{"type":"log","@timestamp":"2017-11-01T09:00:40Z","tags":["info","optimize"],"pid":5,"message":"Optimizing and caching bundles for kibana and statusPage. This may take a few minutes"}
{"type":"log","@timestamp":"2017-11-01T09:06:52Z","tags":["info","optimize"],"pid":5,"message":"Optimization of bundles for kibana and statusPage complete in 371.83 seconds"}
{"type":"log","@timestamp":"2017-11-01T09:06:52Z","tags":["status","plugin:kibana@1.0.0","info"],"pid":5,"state":"green","message":"Status changed from uninitialized to green - Ready","prevState":"uninitialized","prevMsg":"uninitialized"}
{"type":"log","@timestamp":"2017-11-01T09:06:53Z","tags":["status","plugin:elasticsearch@1.0.0","info"],"pid":5,"state":"yellow","message":"Status changed from uninitialized to yellow - Waiting for Elasticsearch","prevState":"uninitialized","prevMsg":"uninitialized"}
{"type":"log","@timestamp":"2017-11-01T09:06:53Z","tags":["status","plugin:kbn_vislib_vis_types@1.0.0","info"],"pid":5,"state":"green","message":"Status changed from uninitialized to green - Ready","prevState":"uninitialized","prevMsg":"uninitialized"}
{"type":"log","@timestamp":"2017-11-01T09:06:53Z","tags":["status","plugin:markdown_vis@1.0.0","info"],"pid":5,"state":"green","message":"Status changed from uninitialized to green - Ready","prevState":"uninitialized","prevMsg":"uninitialized"}
{"type":"log","@timestamp":"2017-11-01T09:06:53Z","tags":["status","plugin:metric_vis@1.0.0","info"],"pid":5,"state":"green","message":"Status changed from uninitialized to green - Ready","prevState":"uninitialized","prevMsg":"uninitialized"}
{"type":"log","@timestamp":"2017-11-01T09:06:53Z","tags":["status","plugin:spyModes@1.0.0","info"],"pid":5,"state":"green","message":"Status changed from uninitialized to green - Ready","prevState":"uninitialized","prevMsg":"uninitialized"}
{"type":"log","@timestamp":"2017-11-01T09:06:53Z","tags":["status","plugin:statusPage@1.0.0","info"],"pid":5,"state":"green","message":"Status changed from uninitialized to green - Ready","prevState":"uninitialized","prevMsg":"uninitialized"}
{"type":"log","@timestamp":"2017-11-01T09:06:53Z","tags":["status","plugin:table_vis@1.0.0","info"],"pid":5,"state":"green","message":"Status changed from uninitialized to green - Ready","prevState":"uninitialized","prevMsg":"uninitialized"}
{"type":"log","@timestamp":"2017-11-01T09:06:53Z","tags":["listening","info"],"pid":5,"message":"Server running at http://0.0.0.0:5601"}
{"type":"log","@timestamp":"2017-11-01T09:06:59Z","tags":["status","plugin:elasticsearch@1.0.0","info"],"pid":5,"state":"yellow","message":"Status changed from yellow to yellow - No existing Kibana index found","prevState":"yellow","prevMsg":"Waiting for Elasticsearch"}
{"type":"log","@timestamp":"2017-11-01T09:07:08Z","tags":["status","plugin:elasticsearch@1.0.0","info"],"pid":5,"state":"green","message":"Status changed from yellow to green - Kibana index ready","prevState":"yellow","prevMsg":"No existing Kibana index found"}

又看到熟悉的 yellow to green 了,妥妥沒問題。不過後邊同時顯示 "prevMsg":"No existing Kibana index found",這個沒啥影響,初次啟動,Kibana 沒有預設給我們建立好索引,我們可以到 Kibana Web 頁面去設定索引。但是如何獲取 Kibana 服務訪問地址呢?可以通過獲取 cluster-info 檢視

$ kubectl cluster-info
Kubernetes master is running at https://10.236.65.76:6443
Elasticsearch is running at https://10.236.65.76:6443/api/v1/proxy/namespaces/kube-system/services/elasticsearch-logging
Heapster is running at https://10.236.65.76:6443/api/v1/proxy/namespaces/kube-system/services/heapster
Kibana is running at https://10.236.65.76:6443/api/v1/proxy/namespaces/kube-system/services/kibana-logging
KubeDNS is running at https://10.236.65.76:6443/api/v1/proxy/namespaces/kube-system/services/kube-dns
monitoring-grafana is running at https://10.236.65.76:6443/api/v1/proxy/namespaces/kube-system/services/monitoring-grafana
monitoring-influxdb is running at https://10.236.65.76:6443/api/v1/proxy/namespaces/kube-system/services/monitoring-influxdb

也就是 https://<api_server_ip>:<api_server_ secure_port>/api/v1/proxy/namespaces/kube-system/services/kibana-logging 這個訪問地址,不過當我們滿心歡喜的將這個地址在瀏覽器中開啟時,並沒有顯示出來頁面,而是顯示:

這裡寫圖片描述

這個主要是因為訪問地址為 Https,但是沒有匯入 Kubernetes 證書所致。然而 Kubernetes 證書從哪裡得來呢?有兩種方式,一種是自己生成然後拷貝到各個機器上,配置 Kubernetes 使用,並匯入到瀏覽器中,另一種使用現成的證書,下邊說一下如何匯入現成的證書到瀏覽器中。

使用 kubeadm 安裝的 Kubernetes 叢集,預設會生成一系列證書供 kubelet 使用,預設生成證書到 /etc/kubernetes/pki/ 目錄。

$ /etc/kubernetes/pki/
總用量 48
-rw-r--r--. 1 root root 1237 1030 10:19 apiserver.crt
-rw-------. 1 root root 1675 1030 10:19 apiserver.key
-rw-r--r--. 1 root root 1099 1030 10:19 apiserver-kubelet-client.crt
-rw-------. 1 root root 1679 1030 10:19 apiserver-kubelet-client.key
-rw-r--r--. 1 root root 1025 1030 10:19 ca.crt
-rw-------. 1 root root 1675 1030 10:19 ca.key
-rw-r--r--. 1 root root 1025 1030 10:19 front-proxy-ca.crt
-rw-------. 1 root root 1679 1030 10:19 front-proxy-ca.key
-rw-r--r--. 1 root root 1050 1030 10:19 front-proxy-client.crt
-rw-------. 1 root root 1675 1030 10:19 front-proxy-client.key

            
           

相關推薦

部署 Kubernetes 叢集日誌外掛 FluentdElasticsearchKibana

目錄 Kubernetes 日誌架構介紹 環境、軟體準備 啟動 Fluentd 啟動 Elasticsearch 啟動 Kibana 瀏覽器新增證書 RBAC 認證模式介紹 1、Kubernetes 日誌架構介紹 對於任何基礎架構或者服務系

Kubernetes 叢集日誌管理 Elasticsearch + fluentd(二十)

目錄 一、安裝部署 Kubernetes 開發了一個 Elasticsearch 附加元件來實現叢集的日誌管理。這是一個 Elasticsearch、Fluentd 和 Kibana 的組合。Elasticsearch 是一個搜尋引擎,負責儲存日誌並提供查詢介面;Fluentd 負責從 Kube

K8s 二(1kubeadm部署Kubernetes叢集)

準備工作 滿足安裝 Docker 專案所需的要求,比如 64 位的 Linux 作業系統、3.10 及以上的核心版本; x86 或者 ARM 架構均可; 機器之間網路互通,這是將來容器之間網路互通的前提; 有外網訪問許可權,因為需要拉取映象; 能夠訪問到gcr.io、

ELK6.2.3日誌分析工具搭建JDKElasticsearchKibana安裝(一)

Logstash: Logstash服務的元件,用於處理傳入的日誌。 Elasticsearch: 儲存所有日誌 Kibana : 用於搜尋和視覺化的日誌的Web介面,通過nginx反代 Logstash Forwarder: 安裝在將要把日誌傳送到logstash的伺服器上,作為日誌轉發的道

使用kubeadm部署kubernetes叢集

一、安裝環境準備 1、安裝環境: centos7.5,一個master節點,兩個node節點 CentOS Linux release 7.5.1804 (Core) 2、設定/etc/hosts檔案的IP和主機名對映 10.20.0.14 k8smaster 10.

[Kubernetes]CentOS7部署Kubernetes叢集

環境介紹及安裝前準備 三臺機器,用於部署k8s的執行環境: 節點 ip Master 192.168.243.138

Kubernetes(k8s)中文文件 Mesos部署Kubernetes叢集_Kubernetes中文社群

譯者:王樂 關於在Mesos上執行Kubernetes Mesos允許Kubernetes和其他Mesos構架,例如:Hadoop,Spark和Chronos來動態分享叢集資源。 Mesos確保同一叢集上的執行的不同架構上的應用之間相互隔離,和較公平資源的分配。 Mesos叢集幾乎可以部署在任何Ia

Kubernetes(k8s)中文文件 CentOS部署Kubernetes叢集_Kubernetes中文社群

譯者:張以法 前提條件 你需要2臺或以上安裝有CentOS的機器 啟動一個叢集 本文是針對CentOS系統的Kubernetes入門教程。通過手動配置,你將會理解所有底層的包、服務、埠等。 本文只會讓一個節點工作。多節點需要在Kubernetes之外配置一個可用的的網路環境,儘管這個額外的配置條件是

Kubernetes(k8s)中文文件 CloudStack部署Kubernetes叢集_Kubernetes中文社群

簡介 CloudStack是一個用於構建基於硬體虛擬化的公有云和私有云(傳統IaaS)的軟體。在CloudStack 上部署 Kubernetes 有好幾種方法,需要根據 CloudStack 所使用的哪種雲和有哪些可用映象來決定。 例如 Exoscale 就提供了一個 coreOS 的可用模版,因

Kubernetes(k8s)中文文件 CoreOS部署Kubernetes叢集_Kubernetes中文社群

在Coreos執行Kubernetes有多個指南: CoreOS官方指南 這些指南由CoreOs維護,“CoreOS Way”提供了TLS協議,DNS add-on等部署Kubernetes的指南。指南都通過了Kubernetes的一致性測試,當然,也鼓勵自己測試自己的部署。 Vagrant Mul

Kubernetes(k8s)中文文件 Ferdora部署Kubernetes叢集_Kubernetes中文社群

前提條件 1. 你需要2臺或以上安裝有Fedora的機器 說明 本文是針對Fedora系統的Kubernetes入門教程。通過手動配置,你將會理解所有底層的包、服務、埠等。 本文只會讓一個節點(之前稱從節點)工作。多節點需要在Kubernetes之外配置一個可用的網路環境,儘管這個額外的配置條件是顯

Kubernetes(k8s)中文文件 vSphere部署Kubernetes叢集_Kubernetes中文社群

譯者:tiger 下面的示例使用了4個虛擬工作節點和1個虛擬主機(即叢集中一共有5臺虛擬機器)來建立一個Kubernetes叢集。叢集是通過你的工作站(或任何你覺得方便的地方)來安裝和控制的。 前提條件 需要有一臺ESXi機器或vCenter例項的管理員許可權。 需要先安裝Go(1.2或以上版本)

如何在 Azure 上部署 Kubernetes 叢集_Kubernetes中文社群

本文是一篇技術教程,由 Mike Chaliy 撰寫。他是一位 .NET 平臺使用者,嘗試在 Azure 上部署 Kubernetes 叢集,並將步驟寫成了這篇帖子。文章描寫了部署叢集過程,還對 Kubernetes 的一些功能進行了簡要描述。 以下是文章主要內容: 在實驗、演示的時候,或者是

使用kubeadm一鍵部署kubernetes叢集

此連結中有kubeadm v1.10.3安裝 用了flannel網路 我使用calico網路https://blog.csdn.net/nklinsirui/article/details/80602724github地址https://github.com/cookcode

【雲星資料---Nik(精品版)】:通過ansible playbook實現自動化部署 KUBERNETES 叢集

環境要求 實驗環境通過MBP下的virtualbox和vagrant來提供3臺虛擬機器(centos 7)進行部署,其中1臺配置為k8s master其他2臺配置為k8s nodes。可以根據實際環境擴充套件k8s noded的數量。 假設虛擬機器I

Kubeadm 安裝部署 Kubernetes 叢集

閱讀目錄: 準備工作 部署 Master 管理節點 部署 Minion 工作節點 部署 Hello World 應用 安裝 Dashboard 外掛 安裝 Heapster 外掛 後記 關於 Kubernetes 的相關概念內容,上面這篇文章已經整理的很詳細了,這邊就不再進行敘述了。 這篇文章主要記錄的

ELK日誌系統開發(LogstashElasticsearchKibana安裝)(一)

一、安裝Logstash !注意,logstash至少要有1G記憶體才能執行 在安裝Logstash之前,確保已經安裝了Java的執行環境 3)下載完成之後,加壓(無須編譯),並複製到local目錄下,這個是我正式部署的目錄:/usr/local/logstash-

使用Kubeadm在CentOS7.2上部署Kubernetes叢集

本文參考kubernetes官網文章Installing Kubernetes on Linux with kubeadm在CentOS7.2使用Kubeadm部署Kuebernetes叢集,解決了一些在按照該文件部署時遇到的問題。 作業系統版本

logstashelasticsearchkibana搭建日誌平臺

1、下載logstash      b、解壓:tar -xzvf logstash-5.1.1.tar.gz      c、設定使用者測試的配置檔案:vim logstatsh_test.conf,編輯內容如下:input { stdin { } } outp

使用指令碼部署kubernetes叢集

docker部署 系統需求 // ubuntu 14.04 docker版本1.10.1 // 解除安裝已有環境 apt-get purge docker-engine 安裝docker sudo apt-get update sudo a