如何區分應用所在的運行環境:物理機、虛擬機、容器還是 K8s?
本文主要介紹如何通過一種簡單方式來判斷應用當前所在的運行環境。
1 物理機
物理機和虛擬機因為都是完整的操作系統。因此可以用dmidecode來檢查計算機所在的環境。dmidecode是一個可以將DMI table中的內容以人類可讀格式導出的工具。DMI (也被稱為SMBIOS) Table中保存的是該表包含系統硬件組件的描述,以及其他有用的信息,例如序列號和BIOS版本。
dmidecode -s system-product-name
2 虛擬機
不同的虛擬平臺檢查出來的結果會有所不同。
3. 容器
docker容器通常會在 "/" 目錄下有一個dockerenv文件。一些老版本可能是dockerinit文件
或者可以直接通過查看cgroup信息中是否包含docker字樣來判斷。在容器技術中,cgroup主要用作資源管理和隔離。
阿里云的容器
k8s又分兩種情況,使用docker為容器底座和使用containerd為容器底座。k8s的pod中都帶有k8s的環境變量。
所以我們可以通過env來判斷是否是運行在k8s環境。
如果根目錄下有docker文件,且env有k8s環境變量說明容器底座使用的是docker。否則是containerd。也可以通過cgroup進一步確認,cgroup信息中會包含有kube和containerd字樣。
關注公眾號 singless,獲取更多有價值的文章
浙公網安備 33010602011771號