1、GOP S 全 球 運 維 大 會 2019上 海 站GOP S 全 球 運 維 大 會 2019上 海 站潤物細無聲在行業務的容器化改造之路GOP S 全 球 運 維 大 會 2019上 海 站GOP S 全 球 運 維 大 會 2019上 海 站目錄背景1容器化必須解決的問題2策略3過程4收益5GOP S 全 球 運 維 大 會 2019上 海 站GOP S 全 球 運 維 大 會 2019上 海 站微服務是個古老的話題,框架發展至今已經有很大的相似性,比如Eureka,Consul,Nacos,主要是在前兩個中間選擇,對Nacos了解不多。最后選擇了Consul,這個選擇對容器化也比較友
2、好。GOP S 全 球 運 維 大 會 2019上 海 站每一個運維團隊都應該有一套CMDB,而且只有一套。我對CMDB的理解是:對運維范圍內的關注對象的數據刻畫,是運維自動化的基礎。在這個工具的選擇上,建議是要么找一個有足夠定制空間的產品,要么定制,但最好的做法還是自己實現一套。自己實現可以對我們關心的運維領域的對象作更精確的建模,也允許我們在改進部署形態和管理方式時更自由。在不同的時期,我們對運維領域的對象模型是有區別的。GOP S 全 球 運 維 大 會 2019上 海 站GOP S 全 球 運 維 大 會 2019上 海 站發布物管理部署方式管理部署結果確認回滾和例外處理代碼包+配置+
3、數據庫腳本系統自檢接口+監控數據啟動停止腳本+前置檢查部署前快照采集發布平臺的作用GOP S 全 球 運 維 大 會 2019上 海 站目錄背景1容器化必須解決的問題2策略3過程4收益5GOP S 全 球 運 維 大 會 2019上 海 站GOP S 全 球 運 維 大 會 2019上 海 站XGOP S 全 球 運 維 大 會 2019上 海 站GOP S 全 球 運 維 大 會 2019上 海 站calico的設計方提供了ipip和BGP兩種通信模式,在節點不多的情況下使用ipip方式,但ipip方式的性能開銷是O(N2),要在規模大起來之前切換到BGP模式GOP S 全 球 運 維 大
4、會 2019上 海 站內層協議只要是IP協議族的就可以,圖中是ICMP協議,TCP協議可以再向下展開一層主流的包分析工具對IPIP協議是友好的,可以識別內層協議和寫過濾表達式。使用自己實現的工具分析網絡流量時候需要關注有無IPIP協議的區別。GOP S 全 球 運 維 大 會 2019上 海 站微服務訪問方式NATIPIPGOP S 全 球 運 維 大 會 2019上 海 站GOP S 全 球 運 維 大 會 2019上 海 站GOP S 全 球 運 維 大 會 2019上 海 站GOP S 全 球 運 維 大 會 2019上 海 站 容器本身特性Log-Pilot破解之道采集目標多同時支持s
5、tdout和容器內文件日志采集彈性伸縮性支持聲明式日志配置 現有采集工具缺陷缺乏動態配置能力自動感知(發現)機制日志采集重復或丟失自動checkpoint及句柄保持機制未明確標記日志源自動日志數據打標資源消耗大采用 node 方式進行部署GOP S 全 球 運 維 大 會 2019上 海 站K8s_pod:容器所屬的pod名稱K8s_pod_namespace:容器所屬的namespace名稱K8s_node_name:容器所在的node節點名稱K8s_container_name:容器名稱自動采集了日志源的各種信息日志還是一樣的日志GOP S 全 球 運 維 大 會 2019上 海 站GOP
6、 S 全 球 運 維 大 會 2019上 海 站GOP S 全 球 運 維 大 會 2019上 海 站需要克服的主要差異:【1】容器化后除了node/master以外都是非永久對象,監控采集數據不再有歷史數據關聯【2】(Prometheus的)時序數據庫TSDB對采集和繪圖友好,對問題調查和分析并不友好【3】AlterManager沒有報警歷史數據留存策略:A:AlertManager后接報警分發系統(自研),由分發系統做數據留存【3】B:對TSDB數據作數據轉置寫入RDBMS【1,2,3】【計劃中】AlertManagerGOP S 全 球 運 維 大 會 2019上 海 站需要克服的主要差
7、異:【1】容器化后除了node/master以外都是非永久對象,監控采集數據不再有歷史數據關聯【2】(Prometheus的)時序數據庫TSDB對采集和繪圖友好,對問題調查和分析并不友好【3】AlterManager沒有報警歷史數據留存策略:A:AlertManager后接報警分發系統(自研),由分發系統做數據留存【3】B:對TSDB數據作數據轉置寫入RDBMS【1,2,3】【計劃中】AlertManagerGOP S 全 球 運 維 大 會 2019上 海 站GOP S 全 球 運 維 大 會 2019上 海 站Yaml,Helm,還是Kubernetes Client(API)親媽支持額外
8、學習成本對開發者/工具友好其他因素Yaml有沒有可以對象化,但執行結果不是對象有版本更迭Helm沒有有Yaml可以對象化,執行結果不是對象;部分第三方接口基于Tiller開發即將發布新版本,且去掉了整個Tiller,可能增加發布系統的開發維護成本KubernetesClient(API)有幾乎沒有(程序對象和K8S對象對應)是,在主流語言都有原生sdkGOP S 全 球 運 維 大 會 2019上 海 站GOP S 全 球 運 維 大 會 2019上 海 站GOP S 全 球 運 維 大 會 2019上 海 站只提供基礎運行環境,根據部署特征僅存在有限幾套,安全和管理策略在這里控制。eg:安裝OS補丁在這個鏡像完成。模板化后由發布系統填充,每次發布都產生新imageGOP S 全 球 運 維 大 會 2019上 海 站GOP S 全 球 運 維 大 會 2019上 海 站目錄背景1容器化必須解決的問題2策略3過程4收益5GOP S 全 球 運 維 大 會 2019上 海 站GOP S 全 球 運 維 大 會 2019上 海 站GOP S 全 球 運 維 大 會 2019上 海 站目錄背景1容器化必須解決的問題2策略3收益5過程4GOP S 全 球 運 維 大 會 2019上 海 站