美文网首页
k8s 运维之:操作系统

k8s 运维之:操作系统

作者: akka9 | 来源:发表于2020-03-11 19:53 被阅读0次

RHEL 8 作为 REDHAT 的下一代 Linux 系统,目前最新的版本为 8.2 Beta. 该系统更新了大量的组件,但是目前存在的如下问题,部署 kubernetes 时需要注意。

nftables 的兼容性问题

RHEL 8 采用了 nftables 来替代 iptables,并且没有提供切换 lagency 的办法。
Debian10、Ubuntu 18.04、Ubuntu 20.04 都提供了切换 lagency 的途径,从而允许继续使用iptables。
因此,在 RHEL 8 系统上安装 docker、kubernetes 等软件时,存在不兼容的问题。
https://github.com/kubernetes/kubernetes/issues/62720
https://github.com/docker/libnetwork/issues/1998
https://github.com/moby/moby/issues/26824
https://github.com/moby/libnetwork/issues/2496
https://github.com/moby/moby/issues/39590

docker-ce 的依赖兼容性问题

最新版的 docker-ce 依赖 containerd.io >= 1.2.2-3 的版本,而 RHEL 又指定 containerd.io <= 1.2.0, 所以安装的时候 yum install -y docker-ce 就会报错。

https://bugzilla.redhat.com/show_bug.cgi?id=1756473
这个 bug 由于一个

临时解决办法:

yum install -y https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.13-3.1.el7.x86_64.rpm
yum install -y docker-ce

或者

yum install -y docker-ce --nobest

这两种办法都是权宜之计,建议不要用在生产环境。

除了 docker,kubernetes 另外还支持 cri-o 和 containerd.io 这两种 runtime,
Ubuntu 内置了 containerd, RHEL 8 内置了 containerd.io-1.2.0。

CentOS 7 内核版本相对较低

CentOS7 发布于 2014年7月,距今超过5年。自带的内核的版本为3.10。
如果由于种种原因无法使用Debian、Ubuntu 等系统,那么 k8s 可以考虑安装在 CentOS7.5+ 的版本。

另一个考虑因素: 基础镜像操作系统的选择

alpine 引起小巧,成为很多开源软件镜像发布的基础操作系统。
那 golang、java、python、nodejs、php等语言开发的业务软件,基础镜像是否也可以直接考虑使用 alpine 呢?
建议考虑如下因素:

  • 维护成本:各语言环境容器镜像最好是使用相同的基础系统
  • 兼容性:该系统与各语言、扩展,支持良好,无底层不兼容的隐患
  • 基础功能:openssl 1.1.1(支持TLS1.3、国密算法) 、python 3 等基础功能是否支持

由于 alpine 在支持 php 和 nodejs 的扩展时,未解决的 bug 还有很多,建议慎重考虑。
因此,基础镜像操作系统的选择,建议重点考虑的范围是 CentOS 8、 Debian 10、Ubuntu 18.04/20.04 。

总结

如果打算要在 RHEL 8 或是 CentOS 8 系统上安装 kubernetes,还是需要考虑兼容性问题。
目前来看,Ubuntu 18.04/20.04、Debian10 是相对比较务实的选择。
如果不能使用以上两个操作系统,那就考虑使用 CentOS 7 系统来安装 k8s。

相关文章

网友评论

      本文标题:k8s 运维之:操作系统

      本文链接:https://www.haomeiwen.com/subject/uymxwctx.html