命令:strings /lib/x86_64-linux-gnu/libc.so.6 |grep GLIBC_
GLIBC_2.2.5
GLIBC_2.2.6
GLIBC_2.3
GLIBC_2.3.2
GLIBC_2.3.3
GLIBC_2.3.4
GLIBC_2.4
GLIBC_2.5
GLIBC_2.6
GLIBC_2.7
GLIBC_2.8
GLIBC_2.9
GLIBC_2.10
GLIBC_2.11
GLIBC_2.12
GLIBC_2.13
GLIBC_2.14
GLIBC_2.15
GLIBC_2.16
GLIBC_2.17
GLIBC_2.18
GLIBC_2.22
GLIBC_2.23
GLIBC_2.24
GLIBC_2.25
GLIBC_2.26
GLIBC_2.27
GLIBC_2.28
GLIBC_2.29
GLIBC_2.30
GLIBC_2.31
GLIBC_2.32
GLIBC_2.33
GLIBC_2.34
GLIBC_2.35
GLIBC_PRIVATE
看到这里是有GLIBC_2.32和GLIBC_2.34版本的
但是kubectl logs kubeedge-counter-app-6f88f7cb5c-nd5wb会报错
/kubeedge-counter-controller: /lib/x86_64-linux-gnu/libc.so.6: version GLIBC_2.32' not found (required by /kubeedge-counter-controller) /kubeedge-counter-controller: /lib/x86_64-linux-gnu/libc.so.6: version GLIBC_2.34' not found (required by /kubeedge-counter-controller)
想问一下这是什么原因呢?
看到有可能是链接不对,想问一下怎么解决呢?
容器中的glibc版本低了,换句话说容器中的系统版本低了,不能运行你编译的二进制,,可以在容器中同样检查一下glibc版本,肯定和主机是不一样的,这样你就能看到本质了。
主要原因应该在生成docker image的时候,image打包的系统版本低了,所以你要检查docker image是怎么生成的,修改对应的Dockerfile,使用更高版本的系统,比如ubuntu16.4的要升级到ubuntu20.4
添加最新的镜像仓库到你系统里,之后执行尝试更新
sudo apt update
sudo apt install libc6