温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

yarn和k8s混合部署初步方案是怎样的

发布时间:2021-12-16 09:53:51 来源:亿速云 阅读:364 作者:柒染 栏目:云计算

yarn和k8s混合部署初步方案是怎样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

版本

yarn 2.6.0
k8s v1.15.2

背景

随着k8s的越来越火热以及k8s的可扩展以及自修复优势,k8s势必是互联网的优势,但是很大一部分公司的资源管理工具依旧是yarn,而且yarn和k8s也必然并行很久一段时间,
但是由于yarn的隔离型相对于k8s来说还是很弱的,好在yarn 2.6.0版本也集成了LinuxContainerExecutor(默认是DefaultContainerExecutor),也就是说yarn在好长一段时间是不支持cpu限制的,LinuxContainerExecutor的利用了cgroup来进行cpu的限制,而memory的隔离是在利用container进行隔离。
我们知道对于多种资源管理工具的混合部署来说,资源的争夺必定是存在的。分析一下k8s,k8s默认是支持docker runtime的,也就是说k8s在支持docker的情况下,是利用docke进行资源隔离的,而docker是利用了liunx 的namespace进行隔离,用cgroup进行资源限制。而相对于yarn,只需要修改配置文件就行。

具体实施以及配置

k8s

对于k8s来说,按照k8s官网,我们把docker cgroups的驱动修改为systemd。具体修改方式参照官网:

# Set up the Docker daemon
cat <<EOF | sudo tee /etc/docker/daemon.json
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}
EOF

修改完后重启docker,运行docker info会打印出:

...
Cgroup Driver: systemd
...

说明设置成功。

关于cgroup的两种驱动cgroupfs和sysmted的区别:
cgroupfs是直接把pid写入对应的cgroup文件,然后把对应的资源限制也写入相应的cpu memory的cgroup文件。
systemd本身可以提供一个cgroup的管理方式。直接在service的文件中写入对应的资源限制就可以

另外我们得设置dockerd的cgroup-parent和yarn在同一个目录下,这样才能达到yarn和k8s按照配置文件进行资源的分配和管理 按照dockerd官网 直接运行

dockerd --cgroup-parent /path/to/cgroup

yarn

yarn配置支持cpu的限制网上很多资料。如这里关于yarn的linuxcontainerExecutor的jira,参考这里 注意一下这个配置:

<property>
  <name>yarn.nodemanager.linux-container-executor.cgroups.mount-path</name>
  <value>/sys/fs/cgroup<value>
</property>

这个配置最好和docker的--cgroup-parent一致,这样才能更好的管理和控制资源

关于yarn和k8s混合部署初步方案是怎样的问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI