簡 介
百度智能云正式發布了新型 BCC 實例產品 Gr1。不同于其他云服務器,Gr1 所搭載的 Ampere Altra 云原生處理器基于 Arm 指令集架構,采用單線程內核設計,云實例的每一個 vCPU 都是獨立的物理核,獨享 ALU(邏輯計算單元),緩存等關鍵物理資源,可以實現穩定可預測的性能。
目前 Gr1 實例已經已支持 CentOS7.9、CentOS7.6、Ubuntu22.04、Ubuntu20.04 等常用 Linux 公共鏡像。Gr1 實例產品主要面向常見的云原生應用負載,如開源數據庫、Java 應用程序、視頻編解碼、AI 推理(數據治理)、大數據分析、DevOps、Web 服務應用等。為了讓客戶更輕松地部署云原生的工作負載,作為百度智能云容器化工作負載的關鍵基礎設施 Cloud Container Engine(CCE)目前已提供對 Gr1 實例的支持。
在本示例中,我們將演示如何在基于百度智能云 Gr1 實例的 CCE 集群上部署 ELK 軟件棧,以從 Kubernetes 集群內的 Pod 收集日志。
傳統的 ELK 軟件棧由 Elasticsearch、Logstash 和 Kibana 組成。從 2015 年起,輕量級的數據傳輸器 Beats 家族開始非正式的成為 ELK 中的一個組件。ELK 軟件棧為開發人員提供了端到端的能力來聚合應用程序和系統日志、分析這些日志以及可視化洞察以進行監控、故障排除和分析。
準備工作...
在開始前, 我們假設您已做了如下準備
您已經有一個百度智能云賬戶
您的百度智能云賬戶具有創建 Arm Kubernetes CCE 容器引擎的權限。
您本地操作終端已安裝 kubectl 工具。
如果上列準備已經就緒,我們就可以進行下個步驟 —— 在部署 ELK 之前,先創建基于百度 Gr1 實例的 Arm 架構容器引擎。
首先創建基于 Gr1 的容器引擎
除了在 BCC 上發布 Arm 實例外,百度智能云還提供使用基于 Ampere Altra 的 Gr1 實例在 CCE上運行容器化的 Arm 工作負載。數個百度智能云地區和可用區現在可使用于基于 Gr1 實例創建的 CCE 集群:北京(D 區域, E 區域), 廣州(C 區域)和蘇州(D 區域)。
在本文中,我們將在百度智能云的北京可用區 D 創建一個由 3 個 master 節點,以及 3 個 worker節點組成的集群。
首先,從控制臺進入 CCE 容器引擎服務頁面,點擊“創建集群”按鈕
在集群創建導覽頁面中,選擇創建 Arm Kubernetes 集群
按集群創建向導選擇 3 副本 Master 配置
并添加 3 臺 Gr1.c4m16 實例作為 Master 節點:
類似的,在添加 Worker 節點的步驟中,選擇添加 3 臺 Gr1.c8m32 實例作為 Worker 節點:
點擊確認完成,CCE 開始啟動集群創建。整個過程需要數分鐘時間。待集群狀態變成運行中后,即可下載集群憑證:
將下載后的憑證存放在 kubectl 的默認配置路徑:
$ mv kubectl.conf ~/.kube/config
使用 kubectl 查詢集群狀態,當集群的 Master 和 worker 節點都顯示 Ready 狀態時,說明您的 Arm 集群已經準備就緒,并且可以通過 kubectl 進行管理:
$ kubectl get nodes NAME STATUS ROLES AGE VERSION 192.168.64.10 Ready master 1d1h v1.20.8 192.168.64.11 Ready1d1h v1.20.8 192.168.64.12 Ready 1d1h v1.20.8 192.168.64.13 Ready 1d1h v1.20.8 192.168.64.8 Ready master 1d1h v1.20.8 192.168.64.9 Ready master 1d1h v1.20.8
開始部署 ELK!
1預拉取容器鏡像
為了加速部署過程中容器鏡像拉取的速度,我們先通過鏡像的容器倉庫將部署過程中使用到的容器鏡像拉取到 Worker 節點上并重新打上 tag:
$ docker pull ampdemo/eck-operator:2.4.0 $ docker tag ampdemo/eck-operator:2.4.0 docker.elastic.co/eck/eck-operator:2.4.0 $ docker pull ampdemo/elasticsearch:8.4.1 $ docker tag ampdemo/elasticsearch:8.4.1 docker.elastic.co/elasticsearch/elasticsearch:8.4.1 $ docker pull ampdemo/filebeat:8.4.1 $ docker tag ampdemo/filebeat:8.4.1 docker.elastic.co/beats/filebeat:8.4.1 $ docker pull ampdemo/kibana:8.4.1 $ docker tag ampdemo/kibana:8.4.1 docker.elastic.co/kibana/kibana:8.4.1
2Operator 的部署
從 Elastic 網站下載定制并安裝資源定義和 RBAC規則:
$ kubectl create -f https://download.elastic.co/downloads/eck/2.4.0/crds.yaml $ kubectl apply -f https://download.elastic.co/downloads/eck/2.4.0/operator.yaml
稍等片刻后可以看到 elastic-operator Pod 已經拉起并進入運行狀態:
$ kubectl get pods -n elastic-system NAME READY STATUS RESTARTS AGE elastic-operator-0 1/1 Running 0 2m
3創建持久卷
在本例中,ELK 集群將會申請 1GiB 的持久卷空間用作數據存儲。因此,我們制備了 20G 的持久卷供 ELK 集群及將來的擴容使用。
$ cat <
檢查持久卷已成功創建:
$ kubectl get pv NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE elasticsearch-data 20Gi RWO Delete Available 5s
4Elasticsearch 節點的部署
當 Operator 和持久卷已經就緒,我們可以通過如下命令開始 Elasticsearch 的部署:
$ cat <
Elasticsearch 節點會在數分鐘內進入 green 和 Ready 狀態:
$ kubectl get elasticsearch NAME HEALTH NODES VERSION PHASE AGE quickstart green 1 8.4.1 Ready 1m
5Filebeat 的部署
當提到 ELK,被廣泛熟知的是 Elasticsearch, Logstash 和 Kibana 的集合。Beat 是 ELK 家族的新成員,它是一個輕量級的開源數據傳送器。在本范例中,我們將使用 filebeat 來收集每個 Kubernetes 節點上的容器日志。執行如下命令將 Filebeat 以 DaemonSet 部署在每臺節點,并將日志以數據流的形式送往 Elasticsearch:
$ cat <
同樣的, 稍作等待 beat 將進入 green 的健康狀態:
$ kubectl get beat NAME HEALTH AVAILABLE EXPECTED TYPE VERSION AGE quickstart green 3 3 filebeat 8.4.1 2m
6Kibana 的部署
在完成 Elasticsearch 的部署后,我們需要 Kibana 來搜索,觀察和分析數據。使用如下命令部署與當前 Elasticsearch 集群關聯的 Kibana 實例:
$ cat <
等待數分鐘后,Kibana 進入 green 健康狀態:
$ kubectl get kibana NAME HEALTH NODES VERSION AGE quickstart green 1 8.4.1 2m
分配一個公網 IP 以便從集群外訪問 Kibana:
$ kubectl expose deployment quickstart-kb --type=LoadBalancer --port 5601 --target-port 5601 service/quickstart-kb exposed
CCE 將會準備一個 LoadBalancer 服務對象并將 Kubernetes 集群外部的訪問重定向到后端 Kibana 的 Pod:
$ kubectl get services NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.255.0.1443/TCP 1d3h quickstart-es-default ClusterIP None 9200/TCP 12h quickstart-es-http ClusterIP 10.255.177.25 9200/TCP 12h quickstart-es-internal-http ClusterIP 10.255.156.180 9200/TCP 12h quickstart-es-transport ClusterIP None 9300/TCP 12h quickstart-kb LoadBalancer 10.255.223.4 120.48.90.143,192.168.0.3 5601:32716/TCP 12h quickstart-kb-http ClusterIP 10.255.55.93 5601/TCP 12h
在本示例中,公網 IP 120.48.90.143 被分配給了 Kibana 實例。
Kibana 登錄密碼可通過如下命令獲取:
$ kubectl get secret quickstart-es-elastic-user -o=jsonpath='{.data.elastic}' | base64 --decode; echo
搭配用戶名 elastic, 我們可以通過 https://:5601 來嘗試訪問 Kibana, 登錄后在主頁點擊 “Explore on my own”.
7數據流導入
在 Discover 中選擇“Create data view”,并在彈出窗口中給數據視圖命名,如“bcc-eck-tutorial”,并在“filebeat-8.4.1”數據流中導入索引模式。
最終,我們可以在 Kibana 中查看 Kubernetes 集群每個節點上 Pod 的日志。
正如本示例所展示的,來自于 CNCF Cloud Native 的主流云原生項目如 Elastic 等,已提供對 Arm64 架構的支持。用戶可以在基于 Ampere Altra 處理器的 Arm64 實例上感受到順暢的部署體驗。敬請訪問 Ampere Blog 進一步了解 Ampere Altra 處理家族的強大之處。
審核編輯:湯梓紅
-
處理器
+關注
關注
68文章
19395瀏覽量
230672 -
ARM
+關注
關注
134文章
9150瀏覽量
368469 -
百度
+關注
關注
9文章
2275瀏覽量
90605 -
BCC
+關注
關注
0文章
10瀏覽量
7546 -
Ampere
+關注
關注
1文章
69瀏覽量
4555
原文標題:安博士講堂|應用示例 - 基于百度 BCC GR1 實例部署 Elastic Stack
文章出處:【微信號:AmpereComputing,微信公眾號:安晟培半導體】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論