如(ru)何區(qu)分應用所在的運行(xing)環境(jing):物(wu)理機、虛擬機、容器還是 K8s?
本文主要介紹(shao)如何通過一種簡單方式來(lai)判斷應用當前所在(zai)的運行環(huan)境。
1 物理機
物理機和虛擬機因為都是(shi)完整的(de)操作系統。因此可(ke)以(yi)用(yong)dmidecode來檢查計算(suan)機所在的(de)環(huan)境。dmidecode是(shi)一個可(ke)以(yi)將DMI table中的(de)內容以(yi)人類可(ke)讀(du)格式導出(chu)的(de)工具。DMI (也被稱(cheng)為) Table中保存的(de)是(shi)該表包(bao)含系統硬件組件的(de)描述,以(yi)及其他有用(yong)的(de)信息(xi),例如序列號和BIOS版本(ben)。
dmidecode -s system-product-name
2 虛擬機
不同(tong)的虛擬平(ping)臺(tai)檢(jian)查出來的結果會有所不同(tong)。
3. 容器
docker容(rong)器通常會在 "/" 目錄下(xia)有一個dockerenv文(wen)件(jian)。一些老版本(ben)可能是dockerinit文(wen)件(jian)
或者可以直接通過查看信息中是否包含(han)docker字樣來判斷。在容器(qi)技(ji)術中,cgroup主要(yao)用作資源管理和隔(ge)離。
阿里云的容器
k8s又分(fen)兩種情況,使(shi)用docker為(wei)容器底座和使(shi)用為(wei)容器底座。k8s的pod中都帶有k8s的環境變量。
所以我們可(ke)以通過env來(lai)判斷是否是運行在(zai)k8s環境。
如果根目錄下(xia)有(you)docker文件,且env有(you)k8s環境變(bian)量說(shuo)明容器底座使用(yong)的是(shi)docker。否則是(shi)containerd。也可(ke)以通過cgroup進(jin)一(yi)步確認,cgroup信(xin)息(xi)中會包含有(you)kube和containerd字樣。
關注公(gong)眾(zhong)號 singless,獲(huo)取更多有價值的文章