您好,登錄后才能下訂單哦!
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官網,我們把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配置支持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混合部署初步方案是怎樣的問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。