mirror of
https://github.com/tailscale/tailscale.git
synced 2025-11-28 14:01:36 +01:00
hostifo: update LXC, add Cloud Run.
Recent LXC support no longer has "lxc" in /proc/1/cgroup:
# cat /proc/1/cgroup
12:freezer:/
11:rdma:/
10:cpuset:/
9:pids:/
8:blkio:/
7:devices:/
6:perf_event:/
5:net_cls,net_prio:/
4:memory:/
3:hugetlb:/
2:cpu,cpuacct:/
1:name=systemd:/init.scope
0::/init.scope
Look for fuse.lxcfs in /proc.mounts in addition:
# grep lxc /proc/mounts
lxcfs /proc/cpuinfo fuse.lxcfs ...
lxcfs /proc/diskstats fuse.lxcfs ...
lxcfs /proc/loadavg fuse.lxcfs ...
lxcfs /proc/meminfo fuse.lxcfs ...
lxcfs /proc/stat fuse.lxcfs ...
lxcfs /proc/swaps fuse.lxcfs ...
lxcfs /proc/uptime fuse.lxcfs ...
lxcfs /sys/devices/system/cpu/online fuse.lxcfs ...
Add Knative detection by looking for the environment variables
which are part of its container contract.
Signed-off-by: Denton Gentry <dgentry@tailscale.com>
This commit is contained in:
parent
57756ef673
commit
224e60cef2
@ -11,6 +11,7 @@ import (
|
||||
"fmt"
|
||||
"io"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"strings"
|
||||
"syscall"
|
||||
|
||||
@ -58,6 +59,9 @@ func osVersionLinux() string {
|
||||
if inContainer() {
|
||||
attrBuf.WriteString("; container")
|
||||
}
|
||||
if inKnative() {
|
||||
attrBuf.WriteString("; env=kn")
|
||||
}
|
||||
attr := attrBuf.String()
|
||||
|
||||
id := m["ID"]
|
||||
@ -99,5 +103,21 @@ func inContainer() (ret bool) {
|
||||
}
|
||||
return nil
|
||||
})
|
||||
lineread.File("/proc/mounts", func(line []byte) error {
|
||||
if mem.Contains(mem.B(line), mem.S("fuse.lxcfs")) {
|
||||
ret = true
|
||||
return io.EOF
|
||||
}
|
||||
return nil
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
func inKnative() bool {
|
||||
// https://cloud.google.com/run/docs/reference/container-contract#env-vars
|
||||
if os.Getenv("K_REVISION") != "" && os.Getenv("K_CONFIGURATION") != "" &&
|
||||
os.Getenv("K_SERVICE") != "" && os.Getenv("PORT") != "" {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user