有时候我们需要判断我们当前使用的机器是处于什么环境,是云主机还是虚拟机又或者是,是否在k8s中
如何判断机器是否在云主机中?
有时我们也可以通过云服务进程判断是否为云主机,比如阿里云的云盾、腾讯云的云镜等
1、使用 命令获取主机硬件信息,下面的命令用于获取产品名称
dmidecode -s system-product-name
# Alibaba Cloud ECS 阿里云云主机
# CVM 腾讯云主机
# OpenStack Nova 华为云云主机
2、查看欢迎语,如果没有显示可以去读motd文件
cat /etc/motd
3、查看根分区磁盘类型,/dev/vda一般是云主机
df -h
4、查看元数据
#阿里云
curl http://100.100.100.200/latest/meta-data/
#腾讯云
curl http://metadata.tencentyun.com/meta-data/
#华为云
curl http://169.254.169.254/openstack/latest/meta_data.json
如何判断机器是否在虚拟机中
判断虚拟机与云主机可以看当前机器所使用的虚拟化技术,如虚拟机使用虚拟技术
1、依然使用 命令
dmidecode -s system-product-name
# VMware Virtual Platform VMware虚拟机
# VirtualBox VirtualBox虚拟机
如何判断机器是否在中
如果当前机器不是一台云主机或者虚拟机的话,那么它有可能是一台容器
1、查看根目录下是否有.文件
ls -al /
2、查看/proc/1/中是否有字符串
cat /proc/1/cgroup |grep 'docker'
注:在较新版本的 中,容器内部的 /proc/1/ 文件可能并不包含 字符串。这是因为 在一些情况下不再使用 v1,而是使用 v2。想要检查使用的是 v1 还是 v2 可以查看文件。
cat /proc/mounts |grep cgroup
3、检查mount信息,如在下,输出为 on / type (rw,)
mount |grep '/ type'
4、查看硬盘信息,容器输出为空,非容器有输出
fdisk -l
5、使用df命令查看文件系统挂载点
df -h | egrep '(overlay|aufs)'
如何判断当前容器是否在k8s中
如果我们已经确认在中了,那么可能要进一步确认是否在k8s中
处于k8s的pod如果使用容器的话,它与普通容器的显著区别在于环境变量
检查环境变量,是否包含 相关字符串
env | grep KUBERNETES