B i M A P

Elastic FAQ|Should we use Elastic in Kubernetes Cluster

elk、elasticsearch、logstash、kibana,常見的 FAQ 相關問題。


今年筆者在進行 ELK 相關專案發現,越來越多客戶詢問是否能用 K8S 的方式,感覺對效能的相關問題是比較好的。雖然筆者也有在使用容器,但並不是 K8S 或容器技術的專家,也在學習中,不過對於一些基本的概念應用,也是略懂一二。

首先 ELK 採容器化部署是沒有問題的,透過 helm 的方式也能很快速的部署服務。但這類的問題,其實背後有很多的問題衍生,比如:公司是否具有此能力的技術人員?已有現成的 k8s cluster 架構可直接部署?有考量未來的維運成本?對 ELK 的了解是否有足夠的知識,可以應付在容器中發生的錯誤?k8s cluster 只是其中一種 ELK 的部署方式,千萬不要為了容器化而容器化,反而提高維運成本。

其實較大的錯誤認知是,認爲容器技術可以有效的解決效能問題,甚至是認為這樣在管理上相對容易,其中,效能問題筆者認爲是沒有直接關係的,可以先參考我們的文章,了解一下基本需要校調的參數。而在 Server 上需要做的校調,不會因爲容器化而完全不需要,甚至需要以容器的做法去實踐。

而影響效能的原因,往往不會是單一的,有可能是設備資源、硬碟、shard/replica、hot/warn node 配置、index 等等。當然如果公司有足夠的預算,用最直接且粗爆的方式,將硬體資源往上拉,那也不失是一個辦法,但如果是在有限的硬體資源中,想要達到最大 CP 值的話,那就需要經驗及對 ELK 對了解了,當然也歡迎找我們咨詢討論

對容器的管理面來說,以筆者的經驗來分享,這是需要門檻的,而且是需要你對 k8s 有相當程度的了解,及實務經驗。筆者認為,至少必需可以手動架設 cluster,並了解 cluster 中的運作及溝通方式。了解 k8s 的部署方式,如何去撰寫 yaml,有哪些設定方式,要用 deployment 還是 statefulset,什麼是 service 什麼是 ingress,甚至在 apply 之前,有哪些前置作業。還得知道如何管理 pod、pv、pvc、service ......等等,這些服務的特性是什麼,比如 pvc 是不會因為移除 statefulset 而一併移除,必需手動移除。當然必需要強調筆者並不是此領域的專家,主要是想表達 k8s 需要花不少時間去學習的技術,水非常的深,所以千萬不要只為了 ES 而去架了一套 k8s cluster,實務上可能都分不清現在是 k8s 的問題,還是 es 的錯誤,還是 server 的配置不對。

對於容器技術筆者也認為,除非您是專家,否則盡量是以純 API 的微服務為主,也聽過一些專家建議,容器並不太適合套用於一些具有狀態性的服務,雖然隨著近幾年來 k8s 的技術也不斷在進步,對於狀態性服務的支援程度也不在話下,但在管理上,筆者以目前的認知及能力還是認為,管理微服務還是相對單純,不用擔心資料 persistence 的問題。


延伸閱讀
winstonlu的大頭照
ELK 達人

我們致力於 ELK 的各種應用,協助企業建置相關服務。我們也提供基於 ELK 的各種解決方案,有任何問題,歡迎加入我們的官方 Line,或來信詢問,期待與您面對面的機會。