{"id":345193,"date":"2023-02-09T15:02:05","date_gmt":"2023-02-09T15:02:05","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=345193"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=345193","title":{"rendered":"<span>\u041a\u0430\u043a \u044f \u043a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043b \u0422\u043e\u043c\u043c\u0438 \u0412\u0435\u0440\u0441\u0435\u0442\u0442\u0438, \u0438\u043b\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c GUI\/GPU \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432 Kubernetes<\/span>"},"content":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<h2>\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/h2>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/8af\/4d7\/00a\/8af4d700ab770491aa62dc819122f775.jpeg\" width=\"704\" height=\"440\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8af\/4d7\/00a\/8af4d700ab770491aa62dc819122f775.jpeg\" data-blurred=\"true\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041f\u0440\u0438\u0432\u0435\u0442! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0421\u0435\u0440\u0433\u0435\u0439 \u0415\u0440\u043c\u0435\u0439\u043a\u0438\u043d, \u044f Junior DevOps engineer \u0432 \u0446\u0435\u043d\u0442\u0440\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 IT-\u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Lad. \u0412 \u043c\u043e\u0435\u0439 \u043f\u0435\u0440\u0432\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043d\u0430 \u0425\u0430\u0431\u0440\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043f\u0440\u043e \u0441\u0431\u043e\u0440\u043a\u0443 \u0441\u0432\u043e\u0438\u0445 GUI\/GPU \u043e\u0431\u0440\u0430\u0437\u043e\u0432 \u0438 \u043f\u043e\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0445\u043e\u0441\u0442\u043e\u0432\u0443\u044e \u0438 Kubernetes \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0438\u0433\u0440\u044b GTA:VC.<\/p>\n<p>\u0412 \u0434\u0435\u0442\u0441\u0442\u0432\u0435 \u043c\u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u043d\u0440\u0430\u0432\u0438\u043b\u043e\u0441\u044c \u0438\u0433\u0440\u0430\u0442\u044c \u0432 \u043d\u0435\u0451: \u0440\u0430\u0441\u0441\u0435\u043a\u0430\u0442\u044c \u043d\u0430 PCJ-600, \u0432\u043d\u043e\u0432\u044c \u0438 \u0432\u043d\u043e\u0432\u044c \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0442\u044c &#171;\u043c\u0438\u0441\u0441\u0438\u044e \u0441 \u0432\u0435\u0440\u0442\u043e\u043b\u0435\u0442\u0438\u043a\u043e\u043c&#187;, &#171;\u043b\u0435\u0442\u0430\u0442\u044c&#187; \u043d\u0430 Panzer. \u0421\u0435\u0439\u0447\u0430\u0441 \u044f \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u044e \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u0432 \u0440\u043e\u043b\u0438 \u0437\u0440\u0438\u0442\u0435\u043b\u044f, \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u044f \u0437\u0430 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u043d\u044b\u043c\u0438 \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f\u043c\u0438 \u0438\u0433\u0440\u044b. \u0412 \u043e\u0434\u0438\u043d \u0438\u0437 \u0442\u0430\u043a\u0438\u0445 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u043e\u0432 \u044f \u0437\u0430\u0434\u0430\u043b\u0441\u044f \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u043c: \u043c\u043e\u0436\u043d\u043e \u043b\u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0438 \u043d\u0430\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442 \u043d\u0430 \u0438\u0433\u0440\u0443 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438? \u0418\u043b\u0438 \u043a\u0430\u043a \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u044b? \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u044e \u0441\u0440\u0435\u0434\u0443 \u0434\u043b\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c\u0443 \u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442\u0443.<\/p>\n<h2>\u041f\u0440\u0438\u0447\u0438\u043d\u044b \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u044c\u0438<\/h2>\n<p>\u0413\u043e\u0432\u043e\u0440\u044f \u043e Kubernetes, \u043c\u044b \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f CLI, \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0435 CPU\/RAM\/NETWORK. \u041d\u0438\u0436\u0435 \u044f \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u044e \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u043f\u043e\u043b\u043e\u0436\u043d\u044b\u0439 \u0441\u043f\u0435\u043a\u0442\u0440 \u0437\u0430\u0434\u0430\u0447, \u0442\u0440\u0435\u0431\u0443\u044e\u0449\u0438\u0439 GUI \u0438 GPU.<\/p>\n<p>\u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0443 GUI\/GPU \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u044f \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0441\u044f \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u043c\u0438:<\/p>\n<ul>\n<li>\n<p>\u043d\u0435 \u0431\u044b\u043b\u043e \u043f\u043e\u0448\u0430\u0433\u043e\u0432\u043e\u0433\u043e \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0430 \u043e\u0442 \u0410 \u0434\u043e \u042f \u0441 \u0431\u0430\u0437\u043e\u0432\u044b\u043c\u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c\u0438;<\/p>\n<\/li>\n<li>\n<p>GUI\/GPU \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0440\u0435\u0434\u043a\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0442 \u0432 Kubernetes \u2014 \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u043b\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \u043f\u043e \u0434\u0430\u043d\u043d\u043e\u0439 \u0442\u0435\u043c\u0435.<\/p>\n<\/li>\n<\/ul>\n<p>\u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u043f\u043e\u0431\u0443\u0434\u0435\u0442 \u0442\u0435\u0431\u044f, \u043c\u043e\u0439 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c, \u0438\u0437\u0443\u0447\u0438\u0442\u044c \u0435\u0449\u0451 \u043e\u0434\u043d\u0443 \u043d\u0435\u0438\u0437\u0432\u0435\u0434\u0430\u043d\u043d\u0443\u044e \u0441\u0442\u043e\u0440\u043e\u043d\u0443 Kubernetes. \u0421\u043f\u0435\u043a\u0442\u0440 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u044c\u0438 \u0432\u0435\u043b\u0438\u043a:<\/p>\n<ul>\n<li>\n<p>\u0437\u0430\u043f\u0443\u0441\u043a \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0438 \u043e\u0442\u0432\u044f\u0437\u043a\u0430 \u0438\u0445 \u043e\u0442 \u0445\u043e\u0441\u0442\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b;<\/p>\n<\/li>\n<li>\n<p>\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 GPU-\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430;<\/p>\n<\/li>\n<li>\n<p>\u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0435 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0438 \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442\u0430;<\/p>\n<\/li>\n<li>\n<p>\u0437\u0430\u043f\u0443\u0441\u043a \u0441\u0432\u043e\u0438\u0445 \u043b\u044e\u0431\u0438\u043c\u044b\u0445 \u0438\u0433\u0440;<\/p>\n<\/li>\n<li>\n<p>\u0438 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0433\u043e.<\/p>\n<\/li>\n<\/ul>\n<p>\u0414\u0438\u0441\u043a\u043b\u0435\u0439\u043c\u0435\u0440: \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0439\u0442\u0435 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442 \u043d\u0430 \u0432\u0430\u0448 \u0440\u0438\u0441\u043a.<\/p>\n<h2>\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043f\u043e\u043d\u044f\u0442\u0438\u044f<\/h2>\n<ul>\n<li>\n<p>X.Org Server \u2014 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u0430\u044f \u043a\u0430\u043d\u043e\u043d\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u0430 X Window System \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c;<\/p>\n<\/li>\n<li>\n<p>GLX \u2014 \u044d\u0442\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u044b X Window, \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u044e\u0449\u0435\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043c\u0435\u0436\u0434\u0443 OpenGL \u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 X Window, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0441\u0430\u043c\u043e\u0433\u043e OpenGL;<\/p>\n<\/li>\n<li>\n<p>EGL \u2014 \u044d\u0442\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043c\u0435\u0436\u0434\u0443 API-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430\u043c\u0438 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430 Khronos (\u0442\u0430\u043a\u0438\u043c\u0438 \u043a\u0430\u043a OpenGL, OpenGL ES \u0438\u043b\u0438 OpenVG) \u0438 \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u043e\u0439 \u043e\u043a\u043e\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c;<\/p>\n<\/li>\n<li>\n<p>Direct Rendering Infrastructure (DRI) \u2014 \u044d\u0442\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u044f\u0434\u0440\u0430, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0433\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 X Window\/Wayland \u0434\u043b\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0432\u0438\u0434\u0435\u043e\u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044e \u0431\u0435\u0437 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0447\u0435\u0440\u0435\u0437 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u0435\u0440\u0432\u0435\u0440. \u0415\u0433\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0435 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u2014 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0435 \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 OpenGL \u0432 Mesa, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u044f\u0434\u0440\u043e\u043c \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u043e\u0432 DRI OpenGL;<\/p>\n<\/li>\n<li>\n<p>VirtualGL \u2014 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435, \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u044b 3D-\u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430 \u0438\u0437 Unix \u0438 Linux OpenGL \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0432 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0439 3D-\u0443\u0441\u043a\u043e\u0440\u0438\u0442\u0435\u043b\u044c \u043d\u0430 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0442\u043e\u043d\u043a\u043e\u0433\u043e \u043a\u043b\u0438\u0435\u043d\u0442\u0430, \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0433\u043e \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u043c\u0435\u0441\u0442\u0430\u0445 \u0432 \u0441\u0435\u0442\u0438.<\/p>\n<\/li>\n<\/ul>\n<h2>\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0441\u0442\u0435\u043d\u0434\u0430<\/h2>\n<p>\u0421\u0442\u0435\u043d\u0434 \u2014 Dell Vostro 5502.<\/p>\n<p>\u041a\u0440\u0430\u0442\u043a\u0438\u0435 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0438:<\/p>\n<ul>\n<li>\n<p>CPU: Intel(R) Core(TM) i5-1135G7 @ 2.40GHz;<\/p>\n<\/li>\n<li>\n<p>RAM: 32 GB;<\/p>\n<\/li>\n<li>\n<p>GPU:<\/p>\n<ul>\n<li>\n<p>Intel Corporation TigerLake-LP GT2 [Iris Xe Graphics];<\/p>\n<\/li>\n<li>\n<p>NVIDIA Corporation GP108M [GeForce MX330];<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>NVME: KBG40ZNS512G NVMe KIOXIA 512GB.<\/p>\n<\/li>\n<\/ul>\n<p>\u041e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u2014 Ubuntu 22.04.01.<\/p>\n<p>Kubernetes \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432 \u2014 minikube \u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u043c driver=none. \u041f\u0440\u0438\u0447\u0438\u043d\u0430 \u2014 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a <a href=\"https:\/\/minikube.sigs.k8s.io\/docs\/tutorials\/nvidia_gpu\/\" rel=\"noopener noreferrer nofollow\">\u0445\u043e\u0441\u0442\u043e\u0432\u044b\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c<\/a>.<\/p>\n<p>\u0421\u0438\u0441\u0442\u0435\u043c\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/gitlab.com\/mistikan\/grand-theft-auto-vice-city-in-kubernetes\/-\/blob\/main\/article_materials\/stand\/notebook\/lscpu.txt\" rel=\"noopener noreferrer nofollow\">lscpu<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/gitlab.com\/mistikan\/grand-theft-auto-vice-city-in-kubernetes\/-\/blob\/main\/article_materials\/stand\/notebook\/lspci.txt\" rel=\"noopener noreferrer nofollow\">lspci<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/gitlab.com\/mistikan\/grand-theft-auto-vice-city-in-kubernetes\/-\/blob\/main\/article_materials\/stand\/notebook\/nvidia-smi.txt\" rel=\"noopener noreferrer nofollow\">nvidia-smi<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/gitlab.com\/mistikan\/grand-theft-auto-vice-city-in-kubernetes\/-\/blob\/main\/article_materials\/stand\/notebook\/clinfo.txt\" rel=\"noopener noreferrer nofollow\">clinfo<\/a><\/p>\n<\/li>\n<\/ul>\n<h2>\u0421\u0431\u043e\u0440\u043a\u0430 \u043e\u0431\u0440\u0430\u0437\u043e\u0432 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432<\/h2>\n<h3>\u041f\u0440\u043e\u0431\u0440\u043e\u0441 X vs \u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0435 X<\/h3>\n<p>\u041f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f X, \u0447\u0442\u043e\u0431\u044b \u0441 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0437\u0430\u0442\u0440\u0430\u0442\u0430\u043c\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u043c \u0441\u043e\u043a\u0435\u0442 X11 \u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u042f \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u043b \u043d\u0430 \u0441\u0432\u043e\u0439 \u0441\u0442\u0440\u0430\u0445 \u0438 \u0440\u0438\u0441\u043a \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430. \u041f\u043e\u0441\u043b\u0435 \u0431\u0430\u0437\u043e\u0432\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043c X11 \u0441\u0435\u0440\u0432\u0435\u0440, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430.<\/p>\n<h3>GTA:VC<\/h3>\n<p>\u0414\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 GTA:VC \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0438\u0433\u0440\u044b. \u0418\u0445 \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u044c \u0438\u0437 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0446\u0438\u0438 \u0438\u0433\u0440, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <a href=\"https:\/\/store.steampowered.com\/app\/12110\/Grand_Theft_Auto_Vice_City\/\" rel=\"noopener noreferrer nofollow\">\u043c\u0430\u0433\u0430\u0437\u0438\u043d\u0430 Steam<\/a>. \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0438\u0433\u0440\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0443 \u0442\u0435\u0445, \u043a\u0442\u043e \u0435\u0451 \u043a\u0443\u043f\u0438\u043b \u0434\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u0440\u0435\u043b\u0438\u0437\u0430 <a href=\"https:\/\/store.steampowered.com\/app\/1546970\/Grand_Theft_Auto_III__The_Definitive_Edition\/\" rel=\"noopener noreferrer nofollow\">Grand Theft Auto: The Trilogy \u2014 The Definitive Edition<\/a>.<\/p>\n<p>\u0421\u0442\u043e\u0438\u0442 \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e GTA:VC \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043e GNU\/Linux. \u042f \u0431\u0443\u0434\u0443 \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 RE3.<\/p>\n<p>\u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u0432 \u0438 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0431\u0438\u043b\u0434 \u043f\u043e\u0434 \u0434\u0432\u0430 \u0440\u0435\u043b\u0438\u0437\u0430 Ubuntu LTS:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/gitlab.com\/mistikan\/grand-theft-auto-vice-city-in-kubernetes\/-\/blob\/main\/article_materials\/build-containers\/gta-vc\/Dockerfile-20.04\" rel=\"noopener noreferrer nofollow\">Ubuntu 20.04<\/a>;<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/gitlab.com\/mistikan\/grand-theft-auto-vice-city-in-kubernetes\/-\/blob\/main\/article_materials\/build-containers\/gta-vc\/Dockerfile-22.04\" rel=\"noopener noreferrer nofollow\">Ubuntu 22.04<\/a>.<\/p>\n<\/li>\n<\/ul>\n<p>\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u043c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0443 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u043a X \u0441\u0435\u0440\u0432\u0435\u0440\u0443:<\/p>\n<pre><code>xhost +local:<\/code><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439:<\/p>\n<pre><code>docker container run \\     --gpus all \\ # \u0414\u043e\u0441\u0442\u0443\u043f \u043a GPU \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c     --rm -ti --entrypoint \/bin\/bash \\     -e DISPLAY=$DISPLAY \\ # \u041f\u0440\u043e\u0431\u0440\u043e\u0441 \u0430\u0434\u0440\u0435\u0441\u0430 \u0434\u0438\u0441\u043f\u043b\u0435\u044f     --device \/dev\/snd \\ # \u0414\u043e\u0441\u0442\u0443\u043f \u043a \u0437\u0432\u0443\u043a\u043e\u0432\u044b\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c     -v \/dev\/dri:\/dev\/dri \\ # \u0414\u043e\u0441\u0442\u0443\u043f \u043a GPU \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c     -v \/tmp\/.X11-unix:\/tmp\/.X11-unix \\ # \u041f\u0440\u043e\u0431\u0440\u043e\u0441 \u0441\u043e\u043a\u0435\u0442\u0430 X11 \u0441\u0435\u0440\u0432\u0435\u0440\u0430     ${IMAGE}<\/code><\/pre>\n<p>\u0427\u0438\u0442\u0430\u0442\u0435\u043b\u044c \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u043f\u0440\u043e\u0431\u0440\u043e\u0441 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u0432\u0443\u043c\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c\u0438:<\/p>\n<ul>\n<li>\n<p><code>--gpus all<\/code>;<\/p>\n<\/li>\n<li>\n<p><code>-v \/dev\/dri:\/dev\/dri <\/code>.<\/p>\n<\/li>\n<\/ul>\n<p>\u042d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b \u043f\u043e\u043b\u0443\u0447\u0435\u043d \u0434\u043e\u0441\u0442\u0443\u043f \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043a \u0434\u0432\u0443\u043c \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u0430\u043c (Nvidia \u0447\u0435\u0440\u0435\u0437 <code>--gpus<\/code>, Intel \u0447\u0435\u0440\u0435\u0437 <code>--volume<\/code>).<\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0435\u0449\u0451 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b &#171;\u043f\u0440\u043e\u0431\u0440\u043e\u0441\u0430&#187; \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0447\u0435\u0440\u0435\u0437:<\/p>\n<ul>\n<li>\n<p><code>--privileged<\/code> (\u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430 X-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u0432\u0430\u043c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c <code>--net=host<\/code> \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0430 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0435 <code>DISPLAY<\/code>);<\/p>\n<\/li>\n<li>\n<p><code>--device<\/code>.<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043f\u043e\u043f\u0430\u0434\u0430\u043d\u0438\u044f \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u044c Docker \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0438\u0433\u0440\u0443:<\/p>\n<pre><code>.\/reVC<\/code><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c\/\u0438\u0433\u0440\u043e\u0439 \u0437\u0430\u043f\u0440\u0435\u0442\u0438\u043c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0443 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u043a X \u0441\u0435\u0440\u0432\u0435\u0440\u0443:<\/p>\n<pre><code>xhost -local:<\/code><\/pre>\n<p>\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 \u043f\u043e <a href=\"https:\/\/gitlab.com\/mistikan\/grand-theft-auto-vice-city-in-kubernetes\/-\/tree\/main\/article_materials\/build-containers\/gta-vc\" rel=\"noopener noreferrer nofollow\">\u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0435<\/a>.<\/p>\n<h3>X11 \u0441\u0435\u0440\u0432\u0435\u0440<\/h3>\n<p>\u041e\u0434\u043d\u0438\u043c \u0438\u0437 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432, \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u044b\u0445 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f X11 \u0441\u0435\u0440\u0432\u0435\u0440. \u0414\u043e \u044d\u0442\u043e\u0433\u043e \u044f \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u043b \u0434\u043e\u0441\u0442\u0443\u043f \u0441 \u043d\u0430\u0448\u0435\u0439 \u0445\u043e\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0430, \u0442\u0435\u043f\u0435\u0440\u044c \u0431\u0443\u0434\u0443 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0435\u0433\u043e \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430. \u041d\u0438\u0436\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b.<\/p>\n<h4>Xvfb<\/h4>\n<p>Xvfb (X virtual framebuffer) \u2013 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0434\u0438\u0441\u043f\u043b\u0435\u0439\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u0431\u0435\u0437 \u043a\u0430\u043a\u043e\u0433\u043e-\u043b\u0438\u0431\u043e \u0432\u044b\u0432\u043e\u0434\u0430 \u043d\u0430 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0434\u0438\u0441\u043f\u043b\u0435\u0439. \u042f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0430\u043c\u044b\u043c \u0447\u0430\u0441\u0442\u044b\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435. \u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 <a href=\"https:\/\/gitlab.com\/mistikan\/grand-theft-auto-vice-city-in-kubernetes\/-\/tree\/main\/article_materials\/build-containers\/xvfb\" rel=\"noopener noreferrer nofollow\">\u0437\u0434\u0435\u0441\u044c<\/a>.<\/p>\n<details class=\"spoiler\">\n<summary>\u0412\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043e\u043d\u043e \u0442\u0430\u043a<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f4e\/ee6\/2f0\/f4eee62f0a1817fa7dd523017404dba8.png\" width=\"1922\" height=\"1175\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f4e\/ee6\/2f0\/f4eee62f0a1817fa7dd523017404dba8.png\"\/><figcaption><\/figcaption><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/984\/3a7\/c21\/9843a7c2161e93c105ed2e6c69d44849.png\" width=\"1922\" height=\"1175\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/984\/3a7\/c21\/9843a7c2161e93c105ed2e6c69d44849.png\"\/><figcaption><\/figcaption><\/figure>\n<\/p>\n<\/div>\n<\/details>\n<h4>Xdummy<\/h4>\n<p>Xdummy &#8212; \u0445\u0430\u043a \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 Xorg \u0438\u043b\u0438 XFree86 X-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0441 \u00ab\u0444\u0438\u043a\u0442\u0438\u0432\u043d\u044b\u043c\u00bb \u0432\u0438\u0434\u0435\u043e\u0434\u0440\u0430\u0439\u0432\u0435\u0440\u043e\u043c. \u041f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c Xvfb. \u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 <a href=\"https:\/\/gitlab.com\/mistikan\/grand-theft-auto-vice-city-in-kubernetes\/-\/tree\/main\/article_materials\/build-containers\/xdummy\" rel=\"noopener noreferrer nofollow\">\u0437\u0434\u0435\u0441\u044c<\/a>.<\/p>\n<h3>\u0423\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a X11 \u0441\u0435\u0440\u0432\u0435\u0440\u0443<\/h3>\n<h4>X11VNC<\/h4>\n<p>VNC (Virtual Network Computing) \u0432 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u043d\u0435 \u043d\u0443\u0436\u0434\u0430\u0435\u0442\u0441\u044f, \u0442.\u043a. \u0441\u0430\u043c\u044b\u0439 \u0447\u0430\u0441\u0442\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u043c\u0443 \u0440\u0430\u0431\u043e\u0447\u0435\u043c\u0443 \u043c\u0435\u0441\u0442\u0443. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u0432 \u043e\u0431\u0440\u0430\u0437\u0430\u0445 \u0432\u044b\u0448\u0435.<\/p>\n<h4>X2Go<\/h4>\n<p>X2Go &#8212; \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0435 \u041f\u041e \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043f\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443 NX. \u0414\u043b\u044f \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043c\u043e\u0433\u0443 \u043f\u043e\u0441\u043e\u0432\u0435\u0442\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u0440\u0430\u0437\u044b \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <a href=\"https:\/\/github.com\/danger89\/xfcevdi\" rel=\"noopener noreferrer nofollow\">XFCEVDI<\/a>.<\/p>\n<details class=\"spoiler\">\n<summary>\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0435\u0441\u0441\u0438\u0435\u0439 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/8f0\/f2e\/bcc\/8f0f2ebccad55baf6bf9fd6a7495560d.png\" width=\"827\" height=\"687\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8f0\/f2e\/bcc\/8f0f2ebccad55baf6bf9fd6a7495560d.png\"\/><figcaption><\/figcaption><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/7dd\/35f\/db5\/7dd35fdb54574836e436def8a97429f4.png\" width=\"1172\" height=\"629\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/7dd\/35f\/db5\/7dd35fdb54574836e436def8a97429f4.png\"\/><figcaption><\/figcaption><\/figure>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0411\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0441 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c <a href=\"https:\/\/gitlab.com\/mistikan\/grand-theft-auto-vice-city-in-kubernetes\/-\/blob\/main\/article_materials\/build-containers\/x2go\/README.md\" rel=\"noopener noreferrer nofollow\">\u0437\u0434\u0435\u0441\u044c<\/a>. \u0420\u0430\u0431\u043e\u0442\u0430 X2Go \u043d\u0430 Xephyr \u2014 <a href=\"https:\/\/wiki.x2go.org\/doku.php\/wiki:advanced:x2gokdrive:start\" rel=\"noopener noreferrer nofollow\">X2Go KDrive<\/a> \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 3D \u0438 RANDR, \u043d\u043e \u043e\u0442\u0432\u0435\u0442\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u0447\u0430\u043b\u0430 2023 \u0433\u043e\u0434\u0430 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043d\u0435\u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u043c.<\/p>\n<h4>XRDP<\/h4>\n<p>RDP &#8212; \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e\u0433\u043e \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u0441\u0442\u043e\u043b\u0430 \u043e\u0442 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Microsoft. \u0414\u043b\u044f \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043c\u043e\u0433\u0443 \u043f\u043e\u0441\u043e\u0432\u0435\u0442\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u0440\u0430\u0437\u044b \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <a href=\"https:\/\/github.com\/danchitnis\/container-xrdp\" rel=\"noopener noreferrer nofollow\">container-xrdp<\/a>.<\/p>\n<details class=\"spoiler\">\n<summary>\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0435\u0441\u0441\u0438\u0435\u0439 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/a8c\/5f7\/b78\/a8c5f7b78df1510835d74de7c32dc986.png\" width=\"1289\" height=\"655\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a8c\/5f7\/b78\/a8c5f7b78df1510835d74de7c32dc986.png\"\/><figcaption><\/figcaption><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c81\/eb2\/50b\/c81eb250be07edb6ae42b8dad427128b.png\" width=\"1248\" height=\"777\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c81\/eb2\/50b\/c81eb250be07edb6ae42b8dad427128b.png\"\/><figcaption><\/figcaption><\/figure>\n<\/p>\n<\/div>\n<\/details>\n<h4>Xpra<\/h4>\n<p>\u0423\u0442\u0438\u043b\u0438\u0442\u0430 xpra \u2014 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b X11, \u043e\u0431\u044b\u0447\u043d\u043e \u043d\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u043c \u0445\u043e\u0441\u0442\u0435, \u0438 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u0445 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440 \u0431\u0435\u0437 \u043f\u043e\u0442\u0435\u0440\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f. \u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a\u0430\u043a \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c, \u0442\u0430\u043a \u0438 \u043d\u043e\u0432\u044b\u043c \u0438\u043b\u0438 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u0441\u0435\u0430\u043d\u0441\u0430\u043c \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u0441\u0442\u043e\u043b\u0430.<\/p>\n<p>\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0443 \u0441\u043e \u0437\u0432\u0443\u043a\u043e\u043c, \u043f\u0440\u0438\u043d\u0442\u0435\u0440\u0430\u043c\u0438, \u0432\u0435\u0431-\u043a\u0430\u043c\u0435\u0440\u0430\u043c\u0438. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 <a href=\"https:\/\/github.com\/Xpra-org\/xpra\/blob\/master\/docs\/Network\/README.md\" rel=\"noopener noreferrer nofollow\">\u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u0432 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f<\/a> \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c:<\/p>\n<ul>\n<li>\n<p>ssh;<\/p>\n<\/li>\n<li>\n<p>quic;<\/p>\n<\/li>\n<li>\n<p>tcp;<\/p>\n<\/li>\n<li>\n<p>WebSocket \u0438 Secure WebSocket;<\/p>\n<\/li>\n<li>\n<p>RFB\/VNC;<\/p>\n<\/li>\n<li>\n<p>\u0441\u043e\u043a\u0435\u0442\u044b \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c GNU\/Linux \u0438 Windows.<\/p>\n<\/li>\n<\/ul>\n<p>\u0414\u043b\u044f \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f <a href=\"https:\/\/..\/article_materials\/build-containers\/xpra\/README.md\" rel=\"noopener noreferrer nofollow\">\u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0435\u0439<\/a>.<\/p>\n<details class=\"spoiler\">\n<summary>\u0415\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 web-browser<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/221\/58a\/030\/22158a03045e1dc4d585f7dfc6f3e738.png\" width=\"1920\" height=\"1173\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/221\/58a\/030\/22158a03045e1dc4d585f7dfc6f3e738.png\"\/><figcaption><\/figcaption><\/figure>\n<\/p>\n<\/div>\n<\/details>\n<h3>\u0412\u0438\u0434\u0435\u043e\u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430<\/h3>\n<h4>Intel<\/h4>\n<p>\u0417\u0430 \u043e\u0441\u043d\u043e\u0432\u0443 \u043c\u043e\u0436\u043d\u043e \u0432\u0437\u044f\u0442\u044c <a href=\"https:\/\/github.com\/intel\/intel-device-plugins-for-kubernetes\/blob\/main\/demo\/intel-opencl-icd\/Dockerfile\" rel=\"noopener noreferrer nofollow\">\u0434\u0430\u043d\u043d\u044b\u0439 \u043e\u0431\u0440\u0430\u0437<\/a> \u0438\u043b\u0438 \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0441\u0432\u043e\u0439 \u043f\u043e \u043e\u0431\u0440\u0430\u0437\u0443 \u0438 \u043f\u043e\u0434\u043e\u0431\u0438\u044e.<\/p>\n<h4>Nvidia<\/h4>\n<p>\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u0432 <a href=\"https:\/\/gitlab.com\/nvidia\/container-images\" rel=\"noopener noreferrer nofollow\">\u043e\u0431\u0440\u0430\u0437\u044b \u043e\u0442 nvidia<\/a>. \u041c\u043e\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043e\u0431\u0440\u0430\u0437 \u043f\u043e\u0434 \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438.<\/p>\n<h3>VirtualGL<\/h3>\n<p>\u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f \u043c\u044b \u0442\u0430\u043a\u0436\u0435 \u043a\u043e\u0441\u043d\u0451\u043c\u0441\u044f \u043f\u0430\u043a\u0435\u0442\u0430 VirtualGL, \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0431\u0443\u0434\u0435\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c GUI-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0427\u0442\u043e\u0431\u044b \u0435\u0433\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c, \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/rawcdn.githack.com\/VirtualGL\/virtualgl\/3.0.2\/doc\/index.html#hd005001\" rel=\"noopener noreferrer nofollow\">\u041e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u043c \u0441\u0430\u0439\u0442\u043e\u043c<\/a>;<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/selkies-project\/docker-nvidia-egl-desktop\/blob\/main\/Dockerfile#L190\" rel=\"noopener noreferrer nofollow\">Dockerfile \u043e\u0442 selkies-project\/ehfd<\/a>.<\/p>\n<\/li>\n<\/ul>\n<details class=\"spoiler\">\n<summary>\u0421\u043e\u0441\u0442\u0430\u0432 \u043f\u0430\u043a\u0435\u0442\u0430 VirtualGL<\/summary>\n<div class=\"spoiler__content\">\n<ul>\n<li>\n<p>cpustat;<\/p>\n<\/li>\n<li>\n<p>eglinfo;<\/p>\n<\/li>\n<li>\n<p>glreadtest;<\/p>\n<\/li>\n<li>\n<p>glxinfo;<\/p>\n<\/li>\n<li>\n<p>glxspheres;<\/p>\n<\/li>\n<li>\n<p>glxspheres64;<\/p>\n<\/li>\n<li>\n<p>nettest;<\/p>\n<\/li>\n<li>\n<p>tcbench;<\/p>\n<\/li>\n<li>\n<p>vglclient;<\/p>\n<\/li>\n<li>\n<p>vglconfig;<\/p>\n<\/li>\n<li>\n<p>vglconnect;<\/p>\n<\/li>\n<li>\n<p>vglgenkey;<\/p>\n<\/li>\n<li>\n<p>vgllogin;<\/p>\n<\/li>\n<li>\n<p>vglrun;<\/p>\n<\/li>\n<li>\n<p>vglserver_config.<\/p>\n<\/li>\n<\/ul>\n<\/div>\n<\/details>\n<h3>\u0423\u0442\u0438\u043b\u0438\u0442\u044b \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430 \u0438 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0438<\/h3>\n<p>\u041d\u0430 \u044d\u0442\u0430\u043f\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0438 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u044f \u0441\u043e\u0432\u0435\u0442\u0443\u044e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c\u0438 \u0443\u0442\u0438\u043b\u0438\u0442\u0430\u043c\u0438 \u0438 \u043f\u0430\u043a\u0435\u0442\u0430\u043c\u0438:<\/p>\n<ul>\n<li>\n<p>mesa-utils:<\/p>\n<ul>\n<li>\n<p>glxgears;<\/p>\n<\/li>\n<li>\n<p>glxinfo;<\/p>\n<\/li>\n<li>\n<p>egl-info;<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/glmark2\/glmark2\" rel=\"noopener noreferrer nofollow\">glmark2<\/a>;<\/p>\n<\/li>\n<li>\n<p>virtualgl:<\/p>\n<ul>\n<li>\n<p>vglrun -d egl0 \/opt\/VirtualGL\/bin\/glxspheres64;<\/p>\n<\/li>\n<li>\n<p>\/opt\/VirtualGL\/bin\/eglinfo -e;<\/p>\n<\/li>\n<li>\n<p>\/opt\/VirtualGL\/bin\/glxinfo;<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>intel-gpu-tools:<\/p>\n<ul>\n<li>\n<p>intel_gpu_top \u2014 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u044b Intel;<\/p>\n<\/li>\n<li>\n<p>intel_gpu_frequency \u2014 \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u044b Intel;<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>nvidia:<\/p>\n<ul>\n<li>\n<p>nvidia-smi;<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/Syllo\/nvtop\" rel=\"noopener noreferrer nofollow\">nvtop<\/a> \u2014 top \u0434\u043b\u044f \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442;<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/Oblomov\/clinfo\" rel=\"noopener noreferrer nofollow\">clinfo<\/a>;<\/p>\n<\/li>\n<li>\n<p>vainfo &#8212;display drm &#8212;device \/dev\/dri\/renderD128;<\/p>\n<\/li>\n<li>\n<p>xrandr.<\/p>\n<\/li>\n<\/ul>\n<h3>X11docker<\/h3>\n<p>\u0423\u0434\u043e\u0431\u043d\u043e\u0439 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043e\u0439 \u043f\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0443 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0443\u0442\u0438\u043b\u0438\u0442\u0430 x11docker. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e \u043d\u0435\u0439 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c <a href=\"https:\/\/github.com\/mviereck\/x11docker\" rel=\"noopener noreferrer nofollow\">\u0437\u0434\u0435\u0441\u044c<\/a>.<\/p>\n<h2>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0445\u043e\u0441\u0442\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432, \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430<\/h2>\n<h3>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u043e\u0432 \u043d\u0430 \u0445\u043e\u0441\u0442\u043e\u0432\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443<\/h3>\n<h4>Nvidia<\/h4>\n<p>\u041d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u044c\u0438 (\u044f\u043d\u0432\u0430\u0440\u044c-\u0444\u0435\u0432\u0440\u0430\u043b\u044c 2023 \u0433\u043e\u0434\u0430) \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u043f\u0440\u043e\u043f\u0440\u0438\u0435\u0442\u0430\u0440\u043d\u044b\u0435 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 \u043e\u0442 nvidia &#8212; NVIDIA driver metapackage \u0438\u0437 nvidia-driver-525. \u041c\u043e\u0433\u0443 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u043e\u0432\u0435\u0442\u043e\u0432\u0430\u0442\u044c, \u0447\u0442\u043e \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0442\u044c \u043f\u043e\u0434\u0447\u0438\u0449\u0430\u0442\u044c \u0437\u0430 \u0441\u043e\u0431\u043e\u0439 \u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c\u0441\u044f. \u041f\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e &#8212; \u0432\u0430\u0448\u0430 \u043f\u043e \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0443 \u0438\u043b\u0438 <a href=\"https:\/\/wiki.archlinux.org\/title\/NVIDIA\" rel=\"noopener noreferrer nofollow\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f Arch<\/a>.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a <a href=\"https:\/\/docs.nvidia.com\/datacenter\/cloud-native\/container-toolkit\/install-guide.html\" rel=\"noopener noreferrer nofollow\">\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 NVIDIA Container Toolkit<\/a>. \u041f\u0440\u043e\u0448\u0443 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u043d\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b:<\/p>\n<ul>\n<li>\n<p>\/etc\/nvidia-container-runtime\/config.toml &#8212; \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 nvidia-container-runtime;<\/p>\n<\/li>\n<li>\n<p>\/etc\/docker\/daemon.json &#8212; \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c runtime \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.<\/p>\n<\/li>\n<\/ul>\n<h4>Intel<\/h4>\n<p>\u0414\u043b\u044f \u0441\u0432\u043e\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u044f \u043d\u0435 \u043f\u043e\u043c\u043d\u044e, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043b \u043a\u0430\u043a\u0438\u0435-\u043b\u0438\u0431\u043e \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u0438. \u041f\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0432\u0438\u0434\u0435\u043e\u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c, \u0442\u043e \u044f\u0432\u043d\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0431\u044b\u0442\u044c \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e. \u0418\u0437 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043c\u043e\u0433\u0443 \u043f\u043e\u0441\u043e\u0432\u0435\u0442\u043e\u0432\u0430\u0442\u044c \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u0443\u044e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u043f\u043e \u0432\u0430\u0448\u0435\u043c\u0443 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0443 \u0438 <a href=\"https:\/\/wiki.archlinux.org\/title\/intel_graphics\" rel=\"noopener noreferrer nofollow\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e Arch<\/a>.<\/p>\n<h3>\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0445\u043e\u0441\u0442\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b<\/h3>\n<h4>Nvidia<\/h4>\n<p>\u041d\u0435 \u043e\u0442\u043a\u0440\u043e\u044e \u0410\u043c\u0435\u0440\u0438\u043a\u0443 \u0438 \u043f\u0440\u043e\u0434\u0443\u0431\u043b\u0438\u0440\u0443\u044e <a href=\"https:\/\/docs.nvidia.com\/datacenter\/cloud-native\/container-toolkit\/install-guide.html#id3\" rel=\"noopener noreferrer nofollow\">\u0442\u0435\u0441\u0442 \u043e\u0442 nvidia<\/a>:<\/p>\n<pre><code>sudo docker run --rm -e NVIDIA_VISIBLE_DEVICES=all nvidia\/cuda:12.0.0-base-ubuntu22.04 nvidia-smi Tue Jan 24 17:53:42 2023 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 525.78.01    Driver Version: 525.78.01    CUDA Version: 12.0     | |-------------------------------+----------------------+----------------------+ | GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC | | Fan  Temp  Perf  Pwr:Usage\/Cap|         Memory-Usage | GPU-Util  Compute M. | |                               |                      |               MIG M. | |===============================+======================+======================| |   0  NVIDIA GeForce ...  Off  | 00000000:2C:00.0 Off |                  N\/A | | N\/A   45C    P8    N\/A \/  N\/A |     40MiB \/  2048MiB |      0%      Default | |                               |                      |                  N\/A | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes:                                                                  | |  GPU   GI   CI        PID   Type   Process name                  GPU Memory | |        ID   ID                                                   Usage      | |=============================================================================| +-----------------------------------------------------------------------------+<\/code><\/pre>\n<h4>Intel<\/h4>\n<p>\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0432 <a href=\"https:\/\/github.com\/intel\/intel-device-plugins-for-kubernetes\/blob\/main\/demo\/intel-opencl-icd\/Dockerfile\" rel=\"noopener noreferrer nofollow\">\u0434\u0430\u043d\u043d\u043e\u043c \u043e\u0431\u0440\u0430\u0437\u0435<\/a> clinfo \u0438 \u0443\u0434\u043e\u0441\u0442\u043e\u0432\u0435\u0440\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e <a href=\"https:\/\/gitlab.com\/mistikan\/grand-theft-auto-vice-city-in-kubernetes\/-\/blob\/main\/article_materials\/configure\/host\/check\/intel\/clinfo.txt\" rel=\"noopener noreferrer nofollow\">\u0432\u044b\u0432\u043e\u0434 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438<\/a>.<\/p>\n<h3>Kubernetes (minikube)<\/h3>\n<p>\u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u0440\u044f\u043c\u043e\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a PCI \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0443 (\u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043a \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u0435), Docker \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c:<\/p>\n<ul>\n<li>\n<p>\u043d\u0430 \u0445\u043e\u0441\u0442\u043e\u0432\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 &#8212; \u0434\u0440\u0430\u0439\u0432\u0435\u0440 none;<\/p>\n<\/li>\n<li>\n<p>\u043e\u0431\u043b\u0430\u0434\u0430\u0442\u044c CPU \u0441 IOMMU \u0438 \u043f\u0440\u043e\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 kvm2 &#8212; \u0434\u0440\u0430\u0439\u0432\u0435\u0440 kvm2.<\/p>\n<\/li>\n<\/ul>\n<p>\u042f \u0432\u044b\u0431\u0435\u0440\u0443 \u043f\u0435\u0440\u0432\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431. \u0411\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c <a href=\"https:\/\/minikube.sigs.k8s.io\/docs\/tutorials\/nvidia_gpu\/\" rel=\"noopener noreferrer nofollow\">\u0437\u0434\u0435\u0441\u044c<\/a>.<\/p>\n<h3>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 (device plugin)<\/h3>\n<h4>Nvidia<\/h4>\n<p>\u0412\u0430\u0436\u043d\u043e\u0435 \u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u0435 &#8212; \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u043f\u043e\u0438\u0441\u043a\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 \u043a\u0430\u043a nvidia-device-plugin, \u0442\u0430\u043a \u0438 nvidia-operator. \u0414\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0437\u0430\u0434\u0430\u0447\u0438 \u0445\u0432\u0430\u0442\u0438\u0442 \u0438 nvidia-device-plugin, \u043d\u043e \u0435\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0437\u0430\u043d\u044f\u0442\u044c\u0441\u044f \u0441\u0432\u043e\u0438\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u043c \u0432\u043f\u043b\u043e\u0442\u043d\u0443\u044e, \u0442\u043e \u043c\u043e\u0436\u0435\u0442\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c nvidia-operator. \u0418 \u0431\u0443\u0434\u044c\u0442\u0435 \u043e\u0441\u0442\u043e\u0440\u043e\u0436\u043d\u044b &#8212; \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043e\u0442 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0442 \u043f\u043b\u0430\u0433\u0438\u043d\u0443, \u0441\u043b\u0435\u0434\u0438\u0442\u0435 \u043a\u0430\u043a\u0443\u044e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u0447\u0438\u0442\u0430\u0435\u0442\u0435.<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c nvidia-device-plugin, \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439:<\/p>\n<pre><code>helm upgrade --install nvidia-device-plugin nvdp\/nvidia-device-plugin --namespace nvidia-device-plugin --create-namespace --wait<\/code><\/pre>\n<p>\u0411\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d daemonset nvidia-device-plugin, \u043e\u043d \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0441\u043e\u0437\u0434\u0430\u0441\u0442 pods. \u041b\u043e\u0433\u0438 \u043f\u043e\u0434\u043e\u0432 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435:<\/p>\n<pre><code>2023\/01\/21 17:26:52 Starting FS watcher. 2023\/01\/21 17:26:52 Starting OS watcher. 2023\/01\/21 17:26:52 Starting Plugins. 2023\/01\/21 17:26:52 Loading configuration. 2023\/01\/21 17:26:52 Updating config with default resource matching patterns. 2023\/01\/21 17:26:52  Running with config: {   \"version\": \"v1\",   \"flags\": {     \"migStrategy\": \"none\",     \"failOnInitError\": true,     \"nvidiaDriverRoot\": \"\/\",     \"gdsEnabled\": false,     \"mofedEnabled\": false,     \"plugin\": {       \"passDeviceSpecs\": false,       \"deviceListStrategy\": \"envvar\",       \"deviceIDStrategy\": \"uuid\"     }   },   \"resources\": {     \"gpus\": [       {         \"pattern\": \"*\",         \"name\": \"nvidia.com\/gpu\"       }     ]   },   \"sharing\": {     \"timeSlicing\": {}   } } 2023\/01\/21 17:26:52 Retreiving plugins. 2023\/01\/21 17:26:52 Detected NVML platform: found NVML library 2023\/01\/21 17:26:52 Detected non-Tegra platform: \/sys\/devices\/soc0\/family file not found 2023\/01\/21 17:26:52 Starting GRPC server for 'nvidia.com\/gpu' 2023\/01\/21 17:26:52 Starting to serve 'nvidia.com\/gpu' on \/var\/lib\/kubelet\/device-plugins\/nvidia-gpu.sock 2023\/01\/21 17:26:52 Registered device plugin for 'nvidia.com\/gpu' with Kubelet <\/code><\/pre>\n<p>\u0421\u0442\u0440\u043e\u0447\u043a\u0430 <code>Detected NVML platform: found NVML library<\/code> \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u0430 \u0431\u044b\u043b\u0430 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0430. \u0422\u0430\u043a\u0436\u0435 \u043d\u043e\u0434\u0430 \u0442\u0435\u043f\u0435\u0440\u044c \u0438\u043c\u0435\u0435\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b:<\/p>\n<pre><code>kubectl describe nodes user-vostro-5502 ... Capacity: ...   nvidia.com\/gpu:             1 ...<\/code><\/pre>\n<p>\u0417\u0430\u0431\u0435\u0433\u0430\u044f \u043d\u0430\u043f\u0435\u0440\u0435\u0434, \u0441\u043a\u0430\u0436\u0443 \u0435\u0441\u043b\u0438 \u043e\u0434\u0438\u043d pod \u0441 \u0433\u0440\u0430\u0444\u0438\u043a\u043e\u0439 \u0437\u0430\u043d\u044f\u043b \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u0443, \u0442\u043e \u0434\u0440\u0443\u0433\u0438\u0435 pods \u0443\u0436\u0435 \u043d\u0435 \u0441\u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f. \u041e\u0434\u043d\u0438\u043c \u0438\u0437 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f <s>\u043f\u043e\u043a\u0443\u043f\u043a\u0430 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u044b<\/s> \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 <a href=\"https:\/\/github.com\/NVIDIA\/k8s-device-plugin#shared-access-to-gpus-with-cuda-time-slicing\" rel=\"noopener noreferrer nofollow\">time slicing<\/a>.<\/p>\n<p>\u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c <a href=\"https:\/\/gitlab.com\/mistikan\/grand-theft-auto-vice-city-in-kubernetes\/-\/blob\/main\/article_materials\/configure\/kubernetes\/nvidia\/configmap.yaml\" rel=\"noopener noreferrer nofollow\">\u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442<\/a>:<\/p>\n<pre><code>kubectl apply -f configmap.yaml<\/code><\/pre>\n<p>\u0438 \u043f\u0435\u0440\u0435\u0434\u0435\u043f\u043b\u043e\u0438\u043c \u0445\u0435\u043b\u043c \u0447\u0430\u0440\u0442:<\/p>\n<pre><code>helm upgrade --install nvidia-device-plugin nvdp\/nvidia-device-plugin --namespace nvidia-device-plugin --create-namespace --wait --set config.name=time-slicing-config<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043b\u043e\u0433\u0438 \u0443 \u043d\u043e\u0432\u043e\u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u0430 (\u0442\u0435\u043f\u0435\u0440\u044c \u0432 \u043d\u0451\u043c \u0434\u0432\u0430 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430: sidecar, ctr), \u043d\u0430\u043c \u043d\u0443\u0436\u0435\u043d \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 ctr:<\/p>\n<pre><code>2023\/01\/21 18:16:16 Starting FS watcher. 2023\/01\/21 18:16:16 Starting OS watcher. 2023\/01\/21 18:16:16 Starting Plugins. 2023\/01\/21 18:16:16 Loading configuration. 2023\/01\/21 18:16:16 Updating config with default resource matching patterns. 2023\/01\/21 18:16:16  Running with config: {   \"version\": \"v1\",   \"flags\": {     \"migStrategy\": \"none\",     \"failOnInitError\": true,     \"nvidiaDriverRoot\": \"\/\",     \"gdsEnabled\": false,     \"mofedEnabled\": false,     \"plugin\": {       \"passDeviceSpecs\": false,       \"deviceListStrategy\": \"envvar\",       \"deviceIDStrategy\": \"uuid\"     }   },   \"resources\": {     \"gpus\": [       {         \"pattern\": \"*\",         \"name\": \"nvidia.com\/gpu\"       }     ]   },   \"sharing\": {     \"timeSlicing\": {       \"resources\": [         {           \"name\": \"nvidia.com\/gpu\",           \"devices\": \"all\",           \"replicas\": 4         }       ]     }   } } 2023\/01\/21 18:16:16 Retreiving plugins. 2023\/01\/21 18:16:16 Detected NVML platform: found NVML library 2023\/01\/21 18:16:16 Detected non-Tegra platform: \/sys\/devices\/soc0\/family file not found 2023\/01\/21 18:16:16 Starting GRPC server for 'nvidia.com\/gpu' 2023\/01\/21 18:16:16 Starting to serve 'nvidia.com\/gpu' on \/var\/lib\/kubelet\/device-plugins\/nvidia-gpu.sock 2023\/01\/21 18:16:16 Registered device plugin for 'nvidia.com\/gpu' with Kubelet<\/code><\/pre>\n<p>\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0440\u0435\u043f\u043b\u0438\u043a\u0438 \u0432 \u0432 <code>timeSlicing<\/code> \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043c\u044b \u0432\u0441\u0451 \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u0432\u0435\u0440\u043d\u043e.<\/p>\n<p>\u041d\u043e\u0434\u0430 \u0441\u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439:<\/p>\n<pre><code>kubectl describe nodes user-vostro-5502 ... Capacity: ...   nvidia.com\/gpu:             4 ...<\/code><\/pre>\n<p><a href=\"https:\/\/github.com\/NVIDIA\/k8s-device-plugin\/issues\/134\" rel=\"noopener noreferrer nofollow\">\u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u0442\u0440\u0435\u0434 \u043a\u0430\u043a \u044d\u0442\u043e \u0440\u0435\u0448\u0430\u043b\u0438 \u0440\u0430\u043d\u044c\u0448\u0435<\/a>.<\/p>\n<h4>Intel<\/h4>\n<p>\u0427\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c intel-device-plugin, \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c\u0438:<\/p>\n<pre><code>kubectl create ns intel-device-plugin kubens intel-device-plugin kubectl apply -k 'https:\/\/github.com\/intel\/intel-device-plugins-for-kubernetes\/deployments\/gpu_plugin?ref=release-0.26'<\/code><\/pre>\n<p>\u0411\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d daemonset intel-gpu-plugin, \u043e\u043d \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0441\u043e\u0437\u0434\u0430\u0441\u0442 pods.<\/p>\n<p>\u041c\u043e\u0438 pods \u043d\u0435 \u043f\u0440\u043e\u0440\u043e\u043d\u0438\u043b\u0438 \u043d\u0438 \u0441\u0442\u0440\u043e\u0447\u043a\u0438 \u043b\u043e\u0433\u043e\u0432, \u0442\u0430\u043a \u0447\u0442\u043e \u043e \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u044f \u0441\u0443\u0434\u0438\u043b \u043f\u043e \u0441\u0442\u0430\u0442\u0443\u0441\u0443 pod:<\/p>\n<pre><code>kubectl get po NAME                     READY   STATUS    RESTARTS   AGE intel-gpu-plugin-lnb2d   1\/1     Running   0          10m<\/code><\/pre>\n<p>\u041d\u043e\u0434\u0430 \u0442\u0435\u043f\u0435\u0440\u044c \u0438\u043c\u0435\u0435\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b:<\/p>\n<pre><code>kubectl describe nodes user-vostro-550 ... Capacity: ...   gpu.intel.com\/i915:             1 ...<\/code><\/pre>\n<p>\u0421 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c \u043a \u0432\u0438\u0434\u0435\u043e\u0447\u0438\u043f\u0443 \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0443 nvidia. <a href=\"https:\/\/intel.github.io\/intel-device-plugins-for-kubernetes\/cmd\/gpu_plugin\/README.html#install-to-nodes-with-nfd-monitoring-and-shared-dev\" rel=\"noopener noreferrer nofollow\">\u041e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0440\u0435\u0448\u0435\u043d\u0438\u044f<\/a>. \u042f \u0436\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u0437\u043c\u0435\u043d\u044e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0443 daemonset \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0441\u0442\u0430\u0442\u044c\u0438:<\/p>\n<pre><code>kubens intel-device-plugin EDITOR=nano kubectl edit daemonset.apps\/intel-gpu-plugin<\/code><\/pre>\n<p>\u0414\u043e\u0431\u0430\u0432\u0438\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:<\/p>\n<pre><code>...         image: intel\/intel-gpu-plugin:0.26.0         imagePullPolicy: IfNotPresent         args:           - \"-shared-dev-num=4\"           - \"-enable-monitoring\"           - \"-v=2\"         name: intel-gpu-plugin ...<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043b\u043e\u0433\u0438 \u0443 \u043d\u043e\u0432\u043e\u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u0430:<\/p>\n<pre><code>I0122 06:29:12.819134       1 gpu_plugin.go:403] GPU device plugin started with none preferred allocation policy I0122 06:29:12.819253       1 gpu_plugin.go:235] GPU 'i915' resource share count = 4 I0122 06:29:12.819937       1 gpu_plugin.go:248] GPU scan update: 0->4 'i915' resources found I0122 06:29:12.819944       1 gpu_plugin.go:248] GPU scan update: 0->1 'i915_monitoring' resources found I0122 06:29:13.820620       1 server.go:268] Start server for i915_monitoring at: \/var\/lib\/kubelet\/device-plugins\/gpu.intel.com-i915_monitoring.sock I0122 06:29:13.820672       1 server.go:268] Start server for i915 at: \/var\/lib\/kubelet\/device-plugins\/gpu.intel.com-i915.sock I0122 06:29:13.822908       1 server.go:286] Device plugin for i915_monitoring registered I0122 06:29:13.822950       1 server.go:286] Device plugin for i915 registered<\/code><\/pre>\n<p>\u041d\u043e\u0434\u0430 \u0441\u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439:<\/p>\n<pre><code>kubectl describe nodes user-vostro-5502 ... Capacity: ...   gpu.intel.com\/i915:             4   gpu.intel.com\/i915_monitoring:  1 ...<\/code><\/pre>\n<h3>\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 (device plugin)<\/h3>\n<p>\u0422\u0435\u0441\u0442\u044b \u043d\u0435 \u043f\u0440\u0438\u0437\u043d\u0430\u043d\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0432\u0441\u0435 \u0430\u0441\u043f\u0435\u043a\u0442\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0438 \u043d\u0435 \u0431\u043e\u043b\u0435\u0435. \u041b\u043e\u0433\u0438 \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u043c README.md, \u043b\u0435\u0436\u0430\u0449\u0438\u043c \u0440\u044f\u0434\u043e\u043c \u0441 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u0432\u0430\u043c\u0438.<\/p>\n<h4>Nvidia<\/h4>\n<p>\u0411\u0430\u0437\u043e\u0432\u044b\u0435 \u0442\u0435\u0441\u0442\u044b \u043d\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 <a href=\"https:\/\/gitlab.com\/mistikan\/grand-theft-auto-vice-city-in-kubernetes\/-\/tree\/main\/article_materials\/configure\/kubernetes_check\/nvidia\" rel=\"noopener noreferrer nofollow\">\u0437\u0434\u0435\u0441\u044c<\/a>.<\/p>\n<h4>Intel<\/h4>\n<p>\u0411\u0430\u0437\u043e\u0432\u044b\u0435 \u0442\u0435\u0441\u0442\u044b \u043d\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 <a href=\"https:\/\/gitlab.com\/mistikan\/grand-theft-auto-vice-city-in-kubernetes\/-\/tree\/main\/article_materials\/configure\/kubernetes_check\/intel\" rel=\"noopener noreferrer nofollow\">\u0437\u0434\u0435\u0441\u044c<\/a>.<\/p>\n<h3>\u041b\u0438\u0440\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043e\u0442\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u043e smarter-device-manager<\/h3>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c \u044f \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u044e \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0443 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 Kubernetes \u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0436\u0443 \u043a \u0437\u0430\u043f\u0443\u0441\u043a\u0443 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438. \u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u043f\u043e\u0438\u0441\u043a\u0430 \u044f \u043d\u0430\u0442\u043a\u043d\u0443\u043b\u0441\u044f \u043d\u0430 \u043f\u0440\u043e\u0435\u043a\u0442, \u043a\u0430\u043a <a href=\"https:\/\/gitlab.com\/arm-research\/smarter\/smarter-device-manager\" rel=\"noopener noreferrer nofollow\">smarter-device-manager<\/a>. \u041e\u043d \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a dev \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0443 \u0432 \u0432\u0438\u0434\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u0430:<\/p>\n<pre><code>... Capacity:   cpu:                            8   ephemeral-storage:              482095632Ki   gpu.intel.com\/i915:             4   gpu.intel.com\/i915_monitoring:  1   hugepages-1Gi:                  0   hugepages-2Mi:                  0   memory:                         32597084Ki   nvidia.com\/gpu:                 4   pods:                           110   smarter-devices\/gpiochip0:      20   smarter-devices\/i2c-0:          1   ...   smarter-devices\/i2c-14:         1   smarter-devices\/rtc0:           20   smarter-devices\/snd:            20   smarter-devices\/ttyS0:          0   ...   smarter-devices\/ttyS9:          1   smarter-devices\/video0:         20   smarter-devices\/video1:         20 ... <\/code><\/pre>\n<h2>\u0417\u0430\u043f\u0443\u0441\u043a \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0432 Kubernetes<\/h2>\n<h3>\u0421\u0431\u043e\u0440\u043a\u0430 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043e\u0431\u0440\u0430\u0437\u0430 \u0434\u043b\u044f Kubernetes<\/h3>\n<p>\u041f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0438 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 GUI\/GPU \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043e\u0431\u0440\u0430\u0437, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 \u043e\u0431\u0440\u0430\u0437\u0435 <a href=\"https:\/\/github.com\/selkies-project\/docker-nvidia-egl-desktop\" rel=\"noopener noreferrer nofollow\">docker-nvidia-egl-desktop<\/a>. \u0421\u0447\u0438\u0442\u0430\u044e \u0435\u0433\u043e \u0441\u0430\u043c\u044b\u043c \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c \u043f\u0440\u0438 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0438 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043e\u0431\u0440\u0430\u0437\u043e\u0432, \u043c\u043e\u0436\u043d\u043e \u043e\u043f\u0438\u0440\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0435\u0433\u043e Dockerfile. \u0422\u0430\u043a\u0436\u0435 \u0443 \u043d\u0435\u0433\u043e \u0435\u0441\u0442\u044c \u0432\u0435\u0440\u0441\u0438\u044f <a href=\"https:\/\/github.com\/selkies-project\/docker-nvidia-glx-desktop\" rel=\"noopener noreferrer nofollow\">docker-nvidia-glx-desktop<\/a>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0443\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 glx \u043f\u043e\u0434\u0445\u043e\u0434.<\/p>\n<h4>\u0421\u0431\u043e\u0440\u043a\u0430<\/h4>\n<p>Dockerfile \u0444\u0430\u0439\u043b \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f <a href=\"https:\/\/gitlab.com\/mistikan\/grand-theft-auto-vice-city-in-kubernetes\/-\/blob\/main\/article_materials\/run-gui-app-in-k8s\/dockerfile\/Dockerfile\" rel=\"noopener noreferrer nofollow\">\u0437\u0434\u0435\u0441\u044c<\/a> \u0438 \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043e\u0431\u0440\u0430\u0437 ehfd \u0438 \u043c\u043e\u0439 \u0441 GTA:VC.<\/p>\n<p>\u0421\u0431\u043e\u0440\u043a\u0430 \u043e\u0431\u0440\u0430\u0437\u0430:<\/p>\n<pre><code>cd article_materials\/run-gui-app-in-k8s\/dockerfile docker build -t ehfd-egl-gta-vc:22.04 .<\/code><\/pre>\n<h3>CPU only<\/h3>\n<p>\u041c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u044b \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f <a href=\"https:\/\/gitlab.com\/mistikan\/grand-theft-auto-vice-city-in-kubernetes\/-\/tree\/main\/article_materials\/run-gui-app-in-k8s\/cpu-only\" rel=\"noopener noreferrer nofollow\">\u0437\u0434\u0435\u0441\u044c<\/a>. Renderer \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a llvmipe. \u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043e\u0439 \u0438\u0433\u0440\u044b \u043d\u0438\u043a\u0430\u043a\u0430\u044f, \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0447\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e. \u0421\u0442\u043e\u0438\u0442 \u0442\u0430\u043a\u0436\u0435 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 nvidia-runtime-docker, \u0442\u043e \u0432\u043d\u0443\u0442\u0440\u044c \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0442\u044c\u0441\u044f nvidia \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043e \u044d\u0442\u043e \u0432 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u0445. \u0414\u043b\u044f \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e <code>NVIDIA_VISIBLE_DEVICE<\/code> = <code>none<\/code>.<\/p>\n<h3>Privileged<\/h3>\n<p>\u041c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u044b \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f <a href=\"https:\/\/gitlab.com\/mistikan\/grand-theft-auto-vice-city-in-kubernetes\/-\/tree\/main\/article_materials\/run-gui-app-in-k8s\/privileged\" rel=\"noopener noreferrer nofollow\">\u0437\u0434\u0435\u0441\u044c<\/a>. \u0414\u0430\u043d\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u044f \u043d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e, \u0442.\u043a. \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0440\u044f\u043c\u043e\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \/dev\/ \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c, \u0447\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0432\u0440\u0435\u0434\u0438\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u0435, \u043d\u043e \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430 \u044f \u0434\u043e\u043b\u0436\u0435\u043d \u0435\u0433\u043e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c.<\/p>\n<p>\u0412\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0441\u0442\u0440\u043e\u0447\u0435\u043a:<\/p>\n<pre><code>        securityContext:           privileged: true<\/code><\/pre>\n<p>\u041a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043f\u0440\u044f\u043c\u043e\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a DRI \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0443, \u043d\u043e \u0442\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u0438 (\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u0440\u0430\u0432, \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0438 \u0442.\u0434.), \u0447\u0442\u043e\u0431\u044b DRI \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e. \u041e\u0431\u044b\u0447\u043d\u043e \u043d\u0430 \u0441\u0435\u0431\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u044d\u0442\u0438\u0445 \u0437\u0430\u0431\u043e\u0442 \u0431\u0435\u0440\u0451\u0442 device plugin, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d \u043d\u0438\u0436\u0435. \u0415\u0441\u043b\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0447\u0435\u0440\u0435\u0437 vglrun, \u0442\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 \u0434\u043e\u043b\u0436\u043d\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435, \u0431\u043b\u0438\u0437\u043a\u043e\u0439 \u043a \u0437\u0430\u043f\u0443\u0441\u043a\u0443 \u043d\u0430 \u0445\u043e\u0441\u0442\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435. \u0412\u044b\u0431\u043e\u0440 DRI \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043b\u044e\u0447\u0430 <code>-d<\/code>:<\/p>\n<ul>\n<li>\n<p><code>vglrun -d egl0 \/opt\/VirtualGL\/bin\/glxspheres64<\/code>;<\/p>\n<\/li>\n<li>\n<p><code>vglrun -d \/dev\/dri\/card0 \/opt\/VirtualGL\/bin\/glxspheres64<\/code>.<\/p>\n<\/li>\n<\/ul>\n<h3>Kubernetes Device Plugins<\/h3>\n<p>\u0421\u0430\u043c\u044b\u0439 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0443 GPU \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 <a href=\"https:\/\/kubernetes.io\/docs\/concepts\/extend-kubernetes\/compute-storage-net\/device-plugins\/\" rel=\"noopener noreferrer nofollow\">Kubernetes Device Plugins<\/a>.<\/p>\n<h4>Nvidia-VNC<\/h4>\n<p>\u041c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u044b \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u044e\u0442\u0441\u044f <a href=\"https:\/\/gitlab.com\/mistikan\/grand-theft-auto-vice-city-in-kubernetes\/-\/tree\/main\/article_materials\/run-gui-app-in-k8s\/nvidia-plugin\" rel=\"noopener noreferrer nofollow\">\u0437\u0434\u0435\u0441\u044c<\/a>. \u0414\u043b\u044f \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u0445:<\/p>\n<pre><code>            nvidia.com\/gpu: 1<\/code><\/pre>\n<p>\u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 NVIDIA-* \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 (\u043b\u0438\u0431\u043e \u0447\u0435\u0440\u0435\u0437 env, \u043b\u0438\u0431\u043e \u0432 dockerfile).<\/p>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 vglrun, \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043d\u0430 \u0434\u043e\u043b\u0436\u043d\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435, \u0431\u043b\u0438\u0437\u043a\u043e\u0439 \u043a \u0437\u0430\u043f\u0443\u0441\u043a\u0443 \u043d\u0430 \u0445\u043e\u0441\u0442\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435. \u041f\u0440\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 (\u0441\u043c. \u0440\u0430\u0437\u0434\u0435\u043b \u0432\u044b\u0448\u0435) \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e gpu \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0432\u0438\u0434\u0435\u043e\u044f\u0434\u0440\u0435. \u041f\u0440\u0438 \u0438\u0433\u0440\u0435 \u0447\u0435\u0440\u0435\u0437 VNC \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0437\u0432\u0443\u043a, \u0442.\u043a. \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u043d\u0435 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442 \u0435\u0433\u043e.<\/p>\n<details class=\"spoiler\">\n<summary>\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u044b \u0441\u0430\u043c\u043e\u0439 \u0438\u0433\u0440\u044b \u0438 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u043d\u0438\u0436\u0435<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/9df\/178\/79c\/9df17879c13208e13534ffc6775dcf79.png\" width=\"1920\" height=\"1200\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/9df\/178\/79c\/9df17879c13208e13534ffc6775dcf79.png\"\/><figcaption><\/figcaption><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/75a\/f2f\/ab8\/75af2fab80a36470ce7b983fbf9a9ae5.png\" width=\"1920\" height=\"1080\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/75a\/f2f\/ab8\/75af2fab80a36470ce7b983fbf9a9ae5.png\"\/><figcaption><\/figcaption><\/figure>\n<\/p>\n<\/div>\n<\/details>\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/63d9ea947a8d27e026074767\" data-style=\"\" id=\"63d9ea947a8d27e026074767\" width=\"\"><\/div>\n<h4>Nvidia-Gstreamer<\/h4>\n<p>\u041c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u044b \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u044e\u0442\u0441\u044f <a href=\"https:\/\/gitlab.com\/mistikan\/grand-theft-auto-vice-city-in-kubernetes\/-\/tree\/main\/article_materials\/run-gui-app-in-k8s\/nvidia-plugin-gstreamer\" rel=\"noopener noreferrer nofollow\">\u0437\u0434\u0435\u0441\u044c<\/a>. \u0414\u043b\u044f \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0440\u0435\u0441\u0443\u0440\u0441\u044b:<\/p>\n<pre><code>            nvidia.com\/gpu: 1<\/code><\/pre>\n<p>\u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 NVIDIA-* \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 (\u043b\u0438\u0431\u043e \u0447\u0435\u0440\u0435\u0437 env, \u043b\u0438\u0431\u043e \u0432 dockerfile), \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0440\u0435\u0436\u0438\u043c \u043d\u0430 Gstreamer (\u0441\u043c. configmap).<\/p>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 vglrun, \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0447\u0435\u0440\u0435\u0437 \u043c\u043e\u0439 software \u043a\u043e\u0434\u0435\u043a \u043d\u0438\u0437\u043a\u0430\u044f (\u044d\u0442\u043e \u043d\u0435 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0443 \u0432\u0430\u0441 \u0431\u0443\u0434\u0435\u0442 \u0442\u0430\u043a\u0436\u0435, <a href=\"https:\/\/developer.nvidia.com\/video-encode-and-decode-gpu-support-matrix-new\" rel=\"noopener noreferrer nofollow\">\u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0441\u0432\u043e\u044e \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u0443<\/a>). \u041f\u0440\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 (\u0441\u043c. \u0440\u0430\u0437\u0434\u0435\u043b \u0432\u044b\u0448\u0435) \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e GPU \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0432\u0438\u0434\u0435\u043e\u044f\u0434\u0440\u0435. \u041f\u0440\u0438 \u0438\u0433\u0440\u0435 \u0437\u0432\u0443\u043a \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442, \u043d\u043e \u043d\u0430 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f\u0445 \u043e\u043d \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0437\u0430\u0435\u0434\u0430\u0442\u044c\u0441\u044f \u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 &#171;\u043c\u044b\u043b\u044c\u043d\u0430\u044f&#187;.<\/p>\n<p>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u0441\u044f \u043c\u044b \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u043a pod, \u0442.\u043a. \u0435\u0441\u043b\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u0447\u0435\u0440\u0435\u0437 nodePort, \u0442\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 TURN \u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u042d\u0442\u043e \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c, \u0435\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 gstreamer.<\/p>\n<details class=\"spoiler\">\n<summary>\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u044b \u0441\u0430\u043c\u043e\u0439 \u0438\u0433\u0440\u044b \u0438 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u043d\u0438\u0436\u0435<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/733\/d38\/8b6\/733d388b63b9187b35f06d56c280a3c0.png\" width=\"1920\" height=\"1080\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/733\/d38\/8b6\/733d388b63b9187b35f06d56c280a3c0.png\"\/><figcaption><\/figcaption><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/7d9\/8ac\/2d7\/7d98ac2d730bde76965df3d2b06e6fe0.png\" width=\"1920\" height=\"1200\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/7d9\/8ac\/2d7\/7d98ac2d730bde76965df3d2b06e6fe0.png\"\/><figcaption><\/figcaption><\/figure>\n<\/p>\n<\/div>\n<\/details>\n<h4>Nvidia-XPRA<\/h4>\n<p>\u041c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u044b \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u044e\u0442\u0441\u044f <a href=\"https:\/\/gitlab.com\/mistikan\/grand-theft-auto-vice-city-in-kubernetes\/-\/tree\/main\/article_materials\/run-gui-app-in-k8s\/nvidia-plugin-xpra\" rel=\"noopener noreferrer nofollow\">\u0437\u0434\u0435\u0441\u044c<\/a>. \u0414\u043b\u044f \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u0445:<\/p>\n<pre><code>            nvidia.com\/gpu: 1<\/code><\/pre>\n<p>\u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 NVIDIA-* \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 (\u043b\u0438\u0431\u043e \u0447\u0435\u0440\u0435\u0437 env, \u043b\u0438\u0431\u043e \u0432 dockerfile). \u0412 Docker \u043e\u0431\u0440\u0430\u0437 \u0443\u0436\u0435 \u0432\u0441\u0442\u0440\u043e\u0435\u043d XPRA \u0438 SSH \u0441\u0435\u0440\u0432\u0435\u0440.<\/p>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 vglrun, \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043d\u0430 \u0434\u043e\u043b\u0436\u043d\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435, \u0431\u043b\u0438\u0437\u043a\u043e\u0439 \u043a \u0437\u0430\u043f\u0443\u0441\u043a\u0443 \u043d\u0430 \u0445\u043e\u0441\u0442\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435. \u041f\u0440\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 (\u0441\u043c. \u0440\u0430\u0437\u0434\u0435\u043b \u0432\u044b\u0448\u0435) \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e gpu \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0432\u0438\u0434\u0435\u043e\u044f\u0434\u0440\u0435. \u041f\u0440\u0438 \u0438\u0433\u0440\u0435 \u0447\u0435\u0440\u0435\u0437 XPRA \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0437\u0432\u0443\u043a, \u0438\u0433\u0440\u0443 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043d\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u043c \u043a\u043b\u0438\u0435\u043d\u0442\u0435 \u0432 \u043e\u043a\u043e\u043d\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435.<\/p>\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/63d9ea943afabae0665d04c4\" data-style=\"\" id=\"63d9ea943afabae0665d04c4\" width=\"\"><\/div>\n<h4>Intel-VNC<\/h4>\n<p>\u041c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u044b \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u044e\u0442\u0441\u044f <a href=\"https:\/\/gitlab.com\/mistikan\/grand-theft-auto-vice-city-in-kubernetes\/-\/tree\/main\/article_materials\/run-gui-app-in-k8s\/intel-plugin\" rel=\"noopener noreferrer nofollow\">\u0437\u0434\u0435\u0441\u044c<\/a>. \u0414\u043b\u044f \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u0445:<\/p>\n<pre><code>            gpu.intel.com\/i915: 1<\/code><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 vglrun, \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043d\u0430 \u0434\u043e\u043b\u0436\u043d\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435, \u0431\u043b\u0438\u0437\u043a\u043e\u0439 \u043a \u0437\u0430\u043f\u0443\u0441\u043a\u0443 \u043d\u0430 \u0445\u043e\u0441\u0442\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435. \u042d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442 \u0431\u044b\u043b \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u043c \u043f\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0442.\u043a. \u043c\u043e\u0433\u043b\u043e \u0447\u0442\u043e-\u0442\u043e \u043e\u0442\u043a\u0430\u0437\u0430\u0442\u044c \u0438\u0437 \u043f\u0440\u0435\u0432\u044b\u0448\u0435\u043d\u0438\u0439 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e\u0439 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043d\u0430 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u0443\u044e \u0447\u0430\u0441\u0442\u044c. \u041f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u043b\u043e\u0441\u044c \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u0430\u0432\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e, \u0441\u043c. <a href=\"https:\/\/gitlab.com\/mistikan\/grand-theft-auto-vice-city-in-kubernetes\/-\/tree\/main\/article_materials\/run-gui-app-in-k8s\/intel-plugin\/README.md\" rel=\"noopener noreferrer nofollow\">README.md<\/a>. \u041f\u0440\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 (\u0441\u043c. \u0440\u0430\u0437\u0434\u0435\u043b \u0432\u044b\u0448\u0435) \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e gpu \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0432\u0438\u0434\u0435\u043e\u044f\u0434\u0440\u0435.<\/p>\n<details class=\"spoiler\">\n<summary>\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u044b \u0441\u0430\u043c\u043e\u0439 \u0438\u0433\u0440\u044b \u0438 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u043d\u0438\u0436\u0435<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/41c\/350\/f3c\/41c350f3c196acb168e896929076a72e.png\" width=\"1920\" height=\"1200\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/41c\/350\/f3c\/41c350f3c196acb168e896929076a72e.png\"\/><figcaption><\/figcaption><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/862\/892\/c31\/862892c311763fc836032a22bce0f8f8.png\" width=\"1920\" height=\"1080\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/862\/892\/c31\/862892c311763fc836032a22bce0f8f8.png\"\/><figcaption><\/figcaption><\/figure>\n<\/p>\n<\/div>\n<\/details>\n<h3>VirtualGL<\/h3>\n<p>\u0422.\u043a. \u0434\u043e \u044d\u0442\u043e\u0433\u043e \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u0432\u043e \u0432\u0441\u0435\u0445 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u0445 VirtualGL, \u0442\u043e \u044f \u043d\u0435 \u043c\u043e\u0433 \u043e\u0431\u043e\u0439\u0442\u0438 \u0435\u0433\u043e \u043c\u0438\u043c\u043e. \u0427\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435, \u043a\u0440\u043e\u043c\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438, \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u0435. \u042f \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043b \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b, \u043a\u043e\u0433\u0434\u0430 \u043e\u043d\u0430 \u043f\u0440\u043e\u0431\u0440\u043e\u0448\u0435\u043d\u0430 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440, \u043d\u043e \u043c\u043e\u0436\u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c, \u043a\u043e\u0433\u0434\u0430 virtualgl \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d \u0432\u043d\u0435 \u043a\u0443\u0431\u0435\u0440\u0430 \u0438 \u0434\u043e\u0441\u0442\u0443\u043f \u0442\u0443\u0434\u0430 \u0435\u0441\u0442\u044c \u043f\u043e ssh.<\/p>\n<p>\u041a\u0440\u0430\u0442\u043a\u0430\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u0438 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u044b \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u044b <a href=\"https:\/\/gitlab.com\/mistikan\/grand-theft-auto-vice-city-in-kubernetes\/-\/tree\/main\/article_materials\/run-gui-app-in-k8s\/virtualgl\" rel=\"noopener noreferrer nofollow\">\u0437\u0434\u0435\u0441\u044c<\/a>. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u043f\u044b\u0442\u043d\u043e\u0433\u043e \u043e\u0431\u0440\u0430\u0437\u0446\u0430 \u044f \u0441\u043e\u0437\u0434\u0430\u043b \u0434\u0432\u0430 deployments:<\/p>\n<ul>\n<li>\n<p>gta-vc-server \u2014 \u0438\u043c\u0435\u0435\u0442 nvidia \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u0443;<\/p>\n<\/li>\n<li>\n<p>gta-vc-client \u2014 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u0443, \u043d\u043e \u043d\u0430 \u043d\u0451\u043c \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<\/p>\n<\/li>\n<\/ul>\n<p>\u042f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0441\u0445\u0435\u043c\u0443 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f <a href=\"https:\/\/rawcdn.githack.com\/VirtualGL\/virtualgl\/3.0.2\/doc\/index.html#hd003\" rel=\"noopener noreferrer nofollow\">\u0447\u0435\u0440\u0435\u0437 ssh<\/a>.<\/p>\n<p>\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430:<\/p>\n<ul>\n<li>\n<p>\u0443 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a GPU \u043b\u044e\u0431\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c;<\/p>\n<\/li>\n<li>\n<p>\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0441 \u0432\u0438\u0434\u0435\u043e\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u043c;<\/p>\n<\/li>\n<li>\n<p>\u0447\u0430\u0441\u0442\u043e \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u0435\u043d \u0437\u0430\u043f\u0443\u0441\u043a \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043a\u043e\u043f\u0438\u0439 \u0438\u0437-\u0437\u0430 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. GTA:VC \u043d\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b\u0430\u0441\u044c, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043e\u043d\u0430 \u043d\u0435 \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u043a \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043a\u043e\u043f\u0438\u0439 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u2014 \u043a\u043e\u043f\u0438\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u043b\u0438 softlock;<\/p>\n<\/li>\n<li>\n<p>\u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0439\u0442\u0435 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f.<\/p>\n<\/li>\n<\/ul>\n<p>\u0422\u0430\u043a\u0436\u0435 \u044f \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043b \u0432\u0438\u0434\u0435\u043e, \u0433\u0434\u0435 vglconnect \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u043b \u0441 \u0445\u043e\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0430, \u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u043b\u0441\u044f \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b \u0441\u0430\u043c\u0443 GTA:VC \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 \u0432 Kubernetes. \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, OBS Studio \u0432\u043d\u043e\u0441\u0438\u043b \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 input lag, \u043f\u043e \u044d\u0442\u043e\u0439 \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0431\u044b\u043b\u043e \u043f\u043e\u043d\u0438\u0436\u0435\u043d\u043e \u0434\u043e 1366&#215;768 \u0438 \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u043e \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u044b\u0434\u0430\u0432\u0430\u0435\u043c\u043e\u0439 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 (VGL_QUALITY).<\/p>\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/63d9ea949f1c6be050aec4cb\" data-style=\"\" id=\"63d9ea949f1c6be050aec4cb\" width=\"\"><\/div>\n<h2>\u0420\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0451\u043d\u043d\u044b\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u0438\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u044f<\/h2>\n<h3>Strace<\/h3>\n<p>\u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0435\u043c \u043e\u0431 \u0443\u0442\u0438\u043b\u0438\u0442\u0435 <code>strace<\/code>.<\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u043c\u0430\u043d\u0434\u044b:<\/p>\n<pre><code>strace -e openat program<\/code><\/pre>\n<h3>Failed to initialize NVML: Insufficient Permissions<\/h3>\n<p>\u041f\u0440\u0438\u0447\u0438\u043d\u0430: \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u043a <code>\/dev\/nvidiactl<\/code>.<\/p>\n<p>\u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u043d\u0430 \u0432\u044b\u0431\u043e\u0440:<\/p>\n<ul>\n<li>\n<p>\u0437\u0430\u043f\u0443\u0441\u043a \u043e\u0442 sudo;<\/p>\n<\/li>\n<li>\n<p>\u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u0447\u0435\u0440\u0435\u0437 <code>chown<\/code>;<\/p>\n<\/li>\n<li>\n<p>\u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0432 \u0433\u0440\u0443\u043f\u043f\u0443, \u0438\u043c\u0435\u044e\u0449\u0430\u044f \u0434\u043e\u0441\u0442\u0443\u043f \u043a <code>\/dev\/nvidiactl<\/code>;<\/p>\n<\/li>\n<li>\n<p>\u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0432 \u0444\u0430\u0439\u043b\u0435 <code>\/etc\/nvidia-container-runtime\/config.toml<\/code>.<\/p>\n<\/li>\n<\/ul>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0437\u0430\u043c\u0435\u0442\u0438\u043b, \u0447\u0442\u043e \u043f\u0440\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 VirtualGL \u043d\u0430 \u0445\u043e\u0441\u0442\u043e\u0432\u043e\u043c \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0435 \u0438\u0437\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u043f\u0440\u0430\u0432\u0430 \u0447\u0435\u0440\u0435\u0437 udev: \u044d\u0442\u043e \u0441\u043f\u0440\u0430\u0432\u0435\u0434\u043b\u0438\u0432\u043e, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0435\u043c\u0443 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0443\u043f \u043a nvidia-\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c. \u041e\u0431 \u044d\u0442\u043e\u043c \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 \/etc\/udev\/rules.d\/99-virtualgl-dri.rules. \u0427\u0442\u043e\u0431\u044b \u0443\u0431\u0440\u0430\u0442\u044c VirtualGL \u0438\u0437 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f:<\/p>\n<pre><code>cd \/opt\/VirtualGL\/bin sudo vglserver_config 2 \u043f\u0443\u043d\u043a\u0442 - 2) Unconfigure server for use with VirtualGL (GLX + EGL back ends) exit reboot<\/code><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043f\u0440\u0430\u0432\u0430 \u043d\u0430 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0432\u0438\u0434\u0435\u043e\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c.<\/p>\n<h3>\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u0430 \u0432\u0435\u0440\u043d\u043e, \u043d\u043e \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 GPU \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435<\/h3>\n<p>\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c:<\/p>\n<ul>\n<li>\n<p>\u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \/dev\/nvidia* \u0438 \/dev\/dri\/*;<\/p>\n<\/li>\n<li>\n<p>\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 vglrun \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430;<\/p>\n<\/li>\n<li>\n<p>\u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0443\u0442\u0438\u043b\u0438\u0442\u0430\u043c\u0438 \u0434\u043b\u044f \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0438 \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0440\u0435\u043d\u0434\u0435\u0440;<\/p>\n<\/li>\n<li>\n<p>\u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c VGL_LOGO=1 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438 vglrun;<\/p>\n<\/li>\n<li>\n<p>\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043d\u0430 \u0445\u043e\u0441\u0442\u0435 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b.<\/p>\n<\/li>\n<\/ul>\n<h2>\u041f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f<\/h2>\n<h3>\u041f\u0440\u043e\u0431\u0440\u043e\u0441 GUI \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0447\u0435\u0440\u0435\u0437 hostPath<\/h3>\n<p>\u041f\u0440\u0438 \u043f\u0440\u043e\u0431\u0440\u043e\u0441\u0435 \u0438\u0433\u0440\u044b \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0431\u0440\u043e\u0441\u0438\u0442\u044c \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u0447\u0435\u0440\u0435\u0437 hostPath. \u0422\u043e\u043b\u044c\u043a\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0442\u044c \u043e \u043f\u0440\u0430\u0432\u0430\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435. \u0412 \u0446\u0435\u043b\u043e\u043c \u044d\u0442\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431, \u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440.<\/p>\n<h3>\u041f\u0440\u043e\u0431\u0440\u043e\u0441 X \u0432 deployment<\/h3>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0438\u0433\u0440\u0443 \u043f\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0438 \u0441 Docker-\u0441\u0440\u0435\u0434\u043e\u0439, \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u044b \u043f\u043e\u0434 Kubernetes. \u041f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f:<\/p>\n<ul>\n<li>\n<p>privileged \u0434\u043e\u0441\u0442\u0443\u043f;<\/p>\n<\/li>\n<li>\n<p>\u043f\u0440\u043e\u0431\u0440\u043e\u0448\u0435\u043d\u043d\u044b\u0439 \/tmp\/.X11-unix;<\/p>\n<\/li>\n<li>\n<p>\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f DISPLAY;<\/p>\n<\/li>\n<li>\n<p>\u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0445\u043e\u0441\u0442\u043e\u0432\u043e\u0433\u043e X.<\/p>\n<\/li>\n<\/ul>\n<h3>\u0422\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432 EHFD \u043e\u0431\u0440\u0430\u0437\u0435<\/h3>\n<p>\u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043b\u044e\u0431\u044b\u043c \u0443\u0434\u043e\u0431\u043d\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u0437\u0430\u043f\u0443\u0441\u043a KDE \u043d\u0430 \u0441\u0432\u043e\u0451 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, <a href=\"https:\/\/github.com\/selkies-project\/docker-nvidia-egl-desktop\/blob\/main\/entrypoint.sh#L50\" rel=\"noopener noreferrer nofollow\">\u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u0430<\/a>. \u0421\u0440\u0430\u0437\u0443 \u043d\u0435 \u0434\u0435\u043f\u043b\u043e\u0438\u043c: \u043e\u0442\u043b\u0430\u0434\u044c\u0442\u0435 \u0438 \u043f\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u0439\u0442\u0435 \u0441\u043e \u0441\u0432\u043e\u0438\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c, \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0432 \u0435\u0433\u043e \u0438\u0437 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0441\u0440\u0435\u0434\u044b.<\/p>\n<h2>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h2>\n<p>\u041d\u0430\u043f\u043e\u043c\u043d\u0438\u043c \u043a\u0440\u0430\u0442\u043a\u043e \u0447\u0442\u043e \u043c\u044b \u0441\u0434\u0435\u043b\u0430\u043b\u0438:<\/p>\n<ul>\n<li>\n<p>\u0438\u0437\u0443\u0447\u0438\u043b\u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u044b\u0439 \u0441\u043e\u0444\u0442 \u0434\u043b\u044f \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f docker \u043e\u0431\u0440\u0430\u0437\u043e\u0432;<\/p>\n<\/li>\n<li>\n<p>\u0441\u043e\u0431\u0440\u0430\u043b\u0438 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b\u0438 docker \u043e\u0431\u0440\u0430\u0437\u044b, \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u0438 \u0441 \u0433\u0440\u0430\u0444\u0438\u043a\u043e\u0439;<\/p>\n<\/li>\n<li>\n<p>\u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043b\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0438 Kubernetes \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 GPU;<\/p>\n<\/li>\n<li>\n<p>\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0441 GPU \u0432 Kubernetes;<\/p>\n<\/li>\n<li>\n<p>\u043f\u043e\u0438\u0433\u0440\u0430\u043b\u0438 \u0432 GTA:VC;<\/p>\n<\/li>\n<li>\n<p>\u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b.<\/p>\n<\/li>\n<\/ul>\n<p>\u0423\u0434\u0430\u0447\u0438!<\/p>\n<h2>\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b<\/h2>\n<ul>\n<li>\n<p><a href=\"https:\/\/kasmweb.com\/docs\/latest\/index.html\" rel=\"noopener noreferrer nofollow\">Kasm Workspaces<\/a> \u2014 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u0441\u0442\u043e\u043b\u0430 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435;<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/dzone.com\/articles\/hardware-accelerated-opengl-rendering-in-a-linux-container\" rel=\"noopener noreferrer nofollow\">Hardware-Accelerated OpenGL Rendering in a Linux Container<\/a> \u2014 \u0441\u0442\u0430\u0442\u044c\u044f \u043e \u0440\u0430\u0431\u043e\u0442\u0435 OpenGL \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430 \u0432 Linux \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435;<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/youtu.be\/gPzSYMYJRlM\" rel=\"noopener noreferrer nofollow\">HST \u041f\u0440\u0430\u043a\u0442\u0438\u043a\u0430 1_2: CUDA OpenGL remote simulation rendering with VirtualGL<\/a> \u2014 \u041c\u0438\u0445\u0430\u0438\u043b \u0420\u043e\u0432\u043d\u044f\u0433\u0438\u043d \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 VirtualGL.<\/p>\n<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/div>\n<p> <!----> <!----><\/div>\n<p> <!----> <!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/715886\/\"> https:\/\/habr.com\/ru\/post\/715886\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<h2>\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/h2>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u041f\u0440\u0438\u0432\u0435\u0442! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0421\u0435\u0440\u0433\u0435\u0439 \u0415\u0440\u043c\u0435\u0439\u043a\u0438\u043d, \u044f Junior DevOps engineer \u0432 \u0446\u0435\u043d\u0442\u0440\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 IT-\u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Lad. \u0412 \u043c\u043e\u0435\u0439 \u043f\u0435\u0440\u0432\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043d\u0430 \u0425\u0430\u0431\u0440\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043f\u0440\u043e \u0441\u0431\u043e\u0440\u043a\u0443 \u0441\u0432\u043e\u0438\u0445 GUI\/GPU \u043e\u0431\u0440\u0430\u0437\u043e\u0432 \u0438 \u043f\u043e\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0445\u043e\u0441\u0442\u043e\u0432\u0443\u044e \u0438 Kubernetes \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0438\u0433\u0440\u044b GTA:VC.<\/p>\n<p>\u0412 \u0434\u0435\u0442\u0441\u0442\u0432\u0435 \u043c\u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u043d\u0440\u0430\u0432\u0438\u043b\u043e\u0441\u044c \u0438\u0433\u0440\u0430\u0442\u044c \u0432 \u043d\u0435\u0451: \u0440\u0430\u0441\u0441\u0435\u043a\u0430\u0442\u044c \u043d\u0430 PCJ-600, \u0432\u043d\u043e\u0432\u044c \u0438 \u0432\u043d\u043e\u0432\u044c \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0442\u044c &#171;\u043c\u0438\u0441\u0441\u0438\u044e \u0441 \u0432\u0435\u0440\u0442\u043e\u043b\u0435\u0442\u0438\u043a\u043e\u043c&#187;, &#171;\u043b\u0435\u0442\u0430\u0442\u044c&#187; \u043d\u0430 Panzer. \u0421\u0435\u0439\u0447\u0430\u0441 \u044f \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u044e \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u0432 \u0440\u043e\u043b\u0438 \u0437\u0440\u0438\u0442\u0435\u043b\u044f, \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u044f \u0437\u0430 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u043d\u044b\u043c\u0438 \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f\u043c\u0438 \u0438\u0433\u0440\u044b. \u0412 \u043e\u0434\u0438\u043d \u0438\u0437 \u0442\u0430\u043a\u0438\u0445 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u043e\u0432 \u044f \u0437\u0430\u0434\u0430\u043b\u0441\u044f \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u043c: \u043c\u043e\u0436\u043d\u043e \u043b\u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0438 \u043d\u0430\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442 \u043d\u0430 \u0438\u0433\u0440\u0443 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438? \u0418\u043b\u0438 \u043a\u0430\u043a \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u044b? \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u044e \u0441\u0440\u0435\u0434\u0443 \u0434\u043b\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c\u0443 \u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442\u0443.<\/p>\n<h2>\u041f\u0440\u0438\u0447\u0438\u043d\u044b \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u044c\u0438<\/h2>\n<p>\u0413\u043e\u0432\u043e\u0440\u044f \u043e Kubernetes, \u043c\u044b \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f CLI, \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0435 CPU\/RAM\/NETWORK. \u041d\u0438\u0436\u0435 \u044f \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u044e \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u043f\u043e\u043b\u043e\u0436\u043d\u044b\u0439 \u0441\u043f\u0435\u043a\u0442\u0440 \u0437\u0430\u0434\u0430\u0447, \u0442\u0440\u0435\u0431\u0443\u044e\u0449\u0438\u0439 GUI \u0438 GPU.<\/p>\n<p>\u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0443 GUI\/GPU \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u044f \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0441\u044f \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u043c\u0438:<\/p>\n<ul>\n<li>\n<p>\u043d\u0435 \u0431\u044b\u043b\u043e \u043f\u043e\u0448\u0430\u0433\u043e\u0432\u043e\u0433\u043e \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0430 \u043e\u0442 \u0410 \u0434\u043e \u042f \u0441 \u0431\u0430\u0437\u043e\u0432\u044b\u043c\u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c\u0438;<\/p>\n<\/li>\n<li>\n<p>GUI\/GPU \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0440\u0435\u0434\u043a\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0442 \u0432 Kubernetes \u2014 \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u043b\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \u043f\u043e \u0434\u0430\u043d\u043d\u043e\u0439 \u0442\u0435\u043c\u0435.<\/p>\n<\/li>\n<\/ul>\n<p>\u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u043f\u043e\u0431\u0443\u0434\u0435\u0442 \u0442\u0435\u0431\u044f, \u043c\u043e\u0439 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c, \u0438\u0437\u0443\u0447\u0438\u0442\u044c \u0435\u0449\u0451 \u043e\u0434\u043d\u0443 \u043d\u0435\u0438\u0437\u0432\u0435\u0434\u0430\u043d\u043d\u0443\u044e \u0441\u0442\u043e\u0440\u043e\u043d\u0443 Kubernetes. \u0421\u043f\u0435\u043a\u0442\u0440 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u044c\u0438 \u0432\u0435\u043b\u0438\u043a:<\/p>\n<ul>\n<li>\n<p>\u0437\u0430\u043f\u0443\u0441\u043a \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0438 \u043e\u0442\u0432\u044f\u0437\u043a\u0430 \u0438\u0445 \u043e\u0442 \u0445\u043e\u0441\u0442\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b;<\/p>\n<\/li>\n<li>\n<p>\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 GPU-\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430;<\/p>\n<\/li>\n<li>\n<p>\u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0435 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0438 \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442\u0430;<\/p>\n<\/li>\n<li>\n<p>\u0437\u0430\u043f\u0443\u0441\u043a \u0441\u0432\u043e\u0438\u0445 \u043b\u044e\u0431\u0438\u043c\u044b\u0445 \u0438\u0433\u0440;<\/p>\n<\/li>\n<li>\n<p>\u0438 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0433\u043e.<\/p>\n<\/li>\n<\/ul>\n<p>\u0414\u0438\u0441\u043a\u043b\u0435\u0439\u043c\u0435\u0440: \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0439\u0442\u0435 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442 \u043d\u0430 \u0432\u0430\u0448 \u0440\u0438\u0441\u043a.<\/p>\n<h2>\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043f\u043e\u043d\u044f\u0442\u0438\u044f<\/h2>\n<ul>\n<li>\n<p>X.Org Server \u2014 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u0430\u044f \u043a\u0430\u043d\u043e\u043d\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u0430 X Window System \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c;<\/p>\n<\/li>\n<li>\n<p>GLX \u2014 \u044d\u0442\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u044b X Window, \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u044e\u0449\u0435\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043c\u0435\u0436\u0434\u0443 OpenGL \u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 X Window, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0441\u0430\u043c\u043e\u0433\u043e OpenGL;<\/p>\n<\/li>\n<li>\n<p>EGL \u2014 \u044d\u0442\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043c\u0435\u0436\u0434\u0443 API-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430\u043c\u0438 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430 Khronos (\u0442\u0430\u043a\u0438\u043c\u0438 \u043a\u0430\u043a OpenGL, OpenGL ES \u0438\u043b\u0438 OpenVG) \u0438 \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u043e\u0439 \u043e\u043a\u043e\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c;<\/p>\n<\/li>\n<li>\n<p>Direct Rendering Infrastructure (DRI) \u2014 \u044d\u0442\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u044f\u0434\u0440\u0430, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0433\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 X Window\/Wayland \u0434\u043b\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0432\u0438\u0434\u0435\u043e\u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044e \u0431\u0435\u0437 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0447\u0435\u0440\u0435\u0437 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u0435\u0440\u0432\u0435\u0440. \u0415\u0433\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0435 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u2014 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0435 \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 OpenGL \u0432 Mesa, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u044f\u0434\u0440\u043e\u043c \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u043e\u0432 DRI OpenGL;<\/p>\n<\/li>\n<li>\n<p>VirtualGL \u2014 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435, \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u044b 3D-\u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430 \u0438\u0437 Unix \u0438 Linux OpenGL \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0432 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0439 3D-\u0443\u0441\u043a\u043e\u0440\u0438\u0442\u0435\u043b\u044c \u043d\u0430 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0442\u043e\u043d\u043a\u043e\u0433\u043e \u043a\u043b\u0438\u0435\u043d\u0442\u0430, \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0433\u043e \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u043c\u0435\u0441\u0442\u0430\u0445 \u0432 \u0441\u0435\u0442\u0438.<\/p>\n<\/li>\n<\/ul>\n<h2>\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0441\u0442\u0435\u043d\u0434\u0430<\/h2>\n<p>\u0421\u0442\u0435\u043d\u0434 \u2014 Dell Vostro 5502.<\/p>\n<p>\u041a\u0440\u0430\u0442\u043a\u0438\u0435 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0438:<\/p>\n<ul>\n<li>\n<p>CPU: Intel(R) Core(TM) i5-1135G7 @ 2.40GHz;<\/p>\n<\/li>\n<li>\n<p>RAM: 32 GB;<\/p>\n<\/li>\n<li>\n<p>GPU:<\/p>\n<ul>\n<li>\n<p>Intel Corporation TigerLake-LP GT2 [Iris Xe Graphics];<\/p>\n<\/li>\n<li>\n<p>NVIDIA Corporation GP108M [GeForce MX330];<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>NVME: KBG40ZNS512G NVMe KIOXIA 512GB.<\/p>\n<\/li>\n<\/ul>\n<p>\u041e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u2014 Ubuntu 22.04.01.<\/p>\n<p>Kubernetes \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432 \u2014 minikube \u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u043c driver=none. \u041f\u0440\u0438\u0447\u0438\u043d\u0430 \u2014 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a <a href=\"https:\/\/minikube.sigs.k8s.io\/docs\/tutorials\/nvidia_gpu\/\" rel=\"noopener noreferrer nofollow\">\u0445\u043e\u0441\u0442\u043e\u0432\u044b\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c<\/a>.<\/p>\n<p>\u0421\u0438\u0441\u0442\u0435\u043c\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/gitlab.com\/mistikan\/grand-theft-auto-vice-city-in-kubernetes\/-\/blob\/main\/article_materials\/stand\/notebook\/lscpu.txt\" rel=\"noopener noreferrer nofollow\">lscpu<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/gitlab.com\/mistikan\/grand-theft-auto-vice-city-in-kubernetes\/-\/blob\/main\/article_materials\/stand\/notebook\/lspci.txt\" rel=\"noopener noreferrer nofollow\">lspci<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/gitlab.com\/mistikan\/grand-theft-auto-vice-city-in-kubernetes\/-\/blob\/main\/article_materials\/stand\/notebook\/nvidia-smi.txt\" rel=\"noopener noreferrer nofollow\">nvidia-smi<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/gitlab.com\/mistikan\/grand-theft-auto-vice-city-in-kubernetes\/-\/blob\/main\/article_materials\/stand\/notebook\/clinfo.txt\" rel=\"noopener noreferrer nofollow\">clinfo<\/a><\/p>\n<\/li>\n<\/ul>\n<h2>\u0421\u0431\u043e\u0440\u043a\u0430 \u043e\u0431\u0440\u0430\u0437\u043e\u0432 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432<\/h2>\n<h3>\u041f\u0440\u043e\u0431\u0440\u043e\u0441 X vs \u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0435 X<\/h3>\n<p>\u041f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f X, \u0447\u0442\u043e\u0431\u044b \u0441 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0437\u0430\u0442\u0440\u0430\u0442\u0430\u043c\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u043c \u0441\u043e\u043a\u0435\u0442 X11 \u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u042f \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u043b \u043d\u0430 \u0441\u0432\u043e\u0439 \u0441\u0442\u0440\u0430\u0445 \u0438 \u0440\u0438\u0441\u043a \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430. \u041f\u043e\u0441\u043b\u0435 \u0431\u0430\u0437\u043e\u0432\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043c X11 \u0441\u0435\u0440\u0432\u0435\u0440, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430.<\/p>\n<h3>GTA:VC<\/h3>\n<p>\u0414\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 GTA:VC \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0438\u0433\u0440\u044b. \u0418\u0445 \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u044c \u0438\u0437 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0446\u0438\u0438 \u0438\u0433\u0440, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <a href=\"https:\/\/store.steampowered.com\/app\/12110\/Grand_Theft_Auto_Vice_City\/\" rel=\"noopener noreferrer nofollow\">\u043c\u0430\u0433\u0430\u0437\u0438\u043d\u0430 Steam<\/a>. \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0438\u0433\u0440\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0443 \u0442\u0435\u0445, \u043a\u0442\u043e \u0435\u0451 \u043a\u0443\u043f\u0438\u043b \u0434\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u0440\u0435\u043b\u0438\u0437\u0430 <a href=\"https:\/\/store.steampowered.com\/app\/1546970\/Grand_Theft_Auto_III__The_Definitive_Edition\/\" rel=\"noopener noreferrer nofollow\">Grand Theft Auto: The Trilogy \u2014 The Definitive Edition<\/a>.<\/p>\n<p>\u0421\u0442\u043e\u0438\u0442 \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e GTA:VC \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043e GNU\/Linux. \u042f \u0431\u0443\u0434\u0443 \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 RE3.<\/p>\n<p>\u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u0432 \u0438 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0431\u0438\u043b\u0434 \u043f\u043e\u0434 \u0434\u0432\u0430 \u0440\u0435\u043b\u0438\u0437\u0430 Ubuntu LTS:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/gitlab.com\/mistikan\/grand-theft-auto-vice-city-in-kubernetes\/-\/blob\/main\/article_materials\/build-containers\/gta-vc\/Dockerfile-20.04\" rel=\"noopener noreferrer nofollow\">Ubuntu 20.04<\/a>;<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/gitlab.com\/mistikan\/grand-theft-auto-vice-city-in-kubernetes\/-\/blob\/main\/article_materials\/build-containers\/gta-vc\/Dockerfile-22.04\" rel=\"noopener noreferrer nofollow\">Ubuntu 22.04<\/a>.<\/p>\n<\/li>\n<\/ul>\n<p>\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u043c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0443 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u043a X \u0441\u0435\u0440\u0432\u0435\u0440\u0443:<\/p>\n<pre><code>xhost +local:<\/code><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439:<\/p>\n<pre><code>docker container run \\     --gpus all \\ # \u0414\u043e\u0441\u0442\u0443\u043f \u043a GPU \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c     --rm -ti --entrypoint \/bin\/bash \\     -e DISPLAY=$DISPLAY \\ # \u041f\u0440\u043e\u0431\u0440\u043e\u0441 \u0430\u0434\u0440\u0435\u0441\u0430 \u0434\u0438\u0441\u043f\u043b\u0435\u044f     --device \/dev\/snd \\ # \u0414\u043e\u0441\u0442\u0443\u043f \u043a \u0437\u0432\u0443\u043a\u043e\u0432\u044b\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c     -v \/dev\/dri:\/dev\/dri \\ # \u0414\u043e\u0441\u0442\u0443\u043f \u043a GPU \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c     -v \/tmp\/.X11-unix:\/tmp\/.X11-unix \\ # \u041f\u0440\u043e\u0431\u0440\u043e\u0441 \u0441\u043e\u043a\u0435\u0442\u0430 X11 \u0441\u0435\u0440\u0432\u0435\u0440\u0430     ${IMAGE}<\/code><\/pre>\n<p>\u0427\u0438\u0442\u0430\u0442\u0435\u043b\u044c \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u043f\u0440\u043e\u0431\u0440\u043e\u0441 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u0432\u0443\u043c\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c\u0438:<\/p>\n<ul>\n<li>\n<p><code>--gpus all<\/code>;<\/p>\n<\/li>\n<li>\n<p><code>-v \/dev\/dri:\/dev\/dri <\/code>.<\/p>\n<\/li>\n<\/ul>\n<p>\u042d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b \u043f\u043e\u043b\u0443\u0447\u0435\u043d \u0434\u043e\u0441\u0442\u0443\u043f \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043a \u0434\u0432\u0443\u043c \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u0430\u043c (Nvidia \u0447\u0435\u0440\u0435\u0437 <code>--gpus<\/code>, Intel \u0447\u0435\u0440\u0435\u0437 <code>--volume<\/code>).<\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0435\u0449\u0451 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b &#171;\u043f\u0440\u043e\u0431\u0440\u043e\u0441\u0430&#187; \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0447\u0435\u0440\u0435\u0437:<\/p>\n<ul>\n<li>\n<p><code>--privileged<\/code> (\u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430 X-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u0432\u0430\u043c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c <code>--net=host<\/code> \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0430 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0435 <code>DISPLAY<\/code>);<\/p>\n<\/li>\n<li>\n<p><code>--device<\/code>.<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043f\u043e\u043f\u0430\u0434\u0430\u043d\u0438\u044f \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u044c Docker \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0438\u0433\u0440\u0443:<\/p>\n<pre><code>.\/reVC<\/code><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c\/\u0438\u0433\u0440\u043e\u0439 \u0437\u0430\u043f\u0440\u0435\u0442\u0438\u043c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0443 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u043a X \u0441\u0435\u0440\u0432\u0435\u0440\u0443:<\/p>\n<pre><code>xhost -local:<\/code><\/pre>\n<p>\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 \u043f\u043e <a href=\"https:\/\/gitlab.com\/mistikan\/grand-theft-auto-vice-city-in-kubernetes\/-\/tree\/main\/article_materials\/build-containers\/gta-vc\" rel=\"noopener noreferrer nofollow\">\u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0435<\/a>.<\/p>\n<h3>X11 \u0441\u0435\u0440\u0432\u0435\u0440<\/h3>\n<p>\u041e\u0434\u043d\u0438\u043c \u0438\u0437 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432, \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u044b\u0445 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f X11 \u0441\u0435\u0440\u0432\u0435\u0440. \u0414\u043e \u044d\u0442\u043e\u0433\u043e \u044f \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u043b \u0434\u043e\u0441\u0442\u0443\u043f \u0441 \u043d\u0430\u0448\u0435\u0439 \u0445\u043e\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0430, \u0442\u0435\u043f\u0435\u0440\u044c \u0431\u0443\u0434\u0443 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0435\u0433\u043e \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430. \u041d\u0438\u0436\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b.<\/p>\n<h4>Xvfb<\/h4>\n<p>Xvfb (X virtual framebuffer) \u2013 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0434\u0438\u0441\u043f\u043b\u0435\u0439\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u0431\u0435\u0437 \u043a\u0430\u043a\u043e\u0433\u043e-\u043b\u0438\u0431\u043e \u0432\u044b\u0432\u043e\u0434\u0430 \u043d\u0430 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0434\u0438\u0441\u043f\u043b\u0435\u0439. \u042f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0430\u043c\u044b\u043c \u0447\u0430\u0441\u0442\u044b\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435. \u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 <a href=\"https:\/\/gitlab.com\/mistikan\/grand-theft-auto-vice-city-in-kubernetes\/-\/tree\/main\/article_materials\/build-containers\/xvfb\" rel=\"noopener noreferrer nofollow\">\u0437\u0434\u0435\u0441\u044c<\/a>.<\/p>\n<details class=\"spoiler\">\n<summary>\u0412\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043e\u043d\u043e \u0442\u0430\u043a<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<\/p>\n<\/div>\n<\/details>\n<h4>Xdummy<\/h4>\n<p>Xdummy &#8212; \u0445\u0430\u043a \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 Xorg \u0438\u043b\u0438 XFree86 X-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0441 \u00ab\u0444\u0438\u043a\u0442\u0438\u0432\u043d\u044b\u043c\u00bb \u0432\u0438\u0434\u0435\u043e\u0434\u0440\u0430\u0439\u0432\u0435\u0440\u043e\u043c. \u041f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c Xvfb. \u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 <a href=\"https:\/\/gitlab.com\/mistikan\/grand-theft-auto-vice-city-in-kubernetes\/-\/tree\/main\/article_materials\/build-containers\/xdummy\" rel=\"noopener noreferrer nofollow\">\u0437\u0434\u0435\u0441\u044c<\/a>.<\/p>\n<h3>\u0423\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a X11 \u0441\u0435\u0440\u0432\u0435\u0440\u0443<\/h3>\n<h4>X11VNC<\/h4>\n<p>VNC (Virtual Network Computing) \u0432 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u043d\u0435 \u043d\u0443\u0436\u0434\u0430\u0435\u0442\u0441\u044f, \u0442.\u043a. \u0441\u0430\u043c\u044b\u0439 \u0447\u0430\u0441\u0442\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u043c\u0443 \u0440\u0430\u0431\u043e\u0447\u0435\u043c\u0443 \u043c\u0435\u0441\u0442\u0443. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u0432 \u043e\u0431\u0440\u0430\u0437\u0430\u0445 \u0432\u044b\u0448\u0435.<\/p>\n<h4>X2Go<\/h4>\n<p>X2Go &#8212; \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0435 \u041f\u041e \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043f\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443 NX. \u0414\u043b\u044f \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043c\u043e\u0433\u0443 \u043f\u043e\u0441\u043e\u0432\u0435\u0442\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u0440\u0430\u0437\u044b \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <a href=\"https:\/\/github.com\/danger89\/xfcevdi\" rel=\"noopener noreferrer nofollow\">XFCEVDI<\/a>.<\/p>\n<details class=\"spoiler\">\n<summary>\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0435\u0441\u0441\u0438\u0435\u0439 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0411\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0441 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c <a href=\"https:\/\/gitlab.com\/mistikan\/grand-theft-auto-vice-city-in-kubernetes\/-\/blob\/main\/article_materials\/build-containers\/x2go\/README.md\" rel=\"noopener noreferrer nofollow\">\u0437\u0434\u0435\u0441\u044c<\/a>. \u0420\u0430\u0431\u043e\u0442\u0430 X2Go \u043d\u0430 Xephyr \u2014 <a href=\"https:\/\/wiki.x2go.org\/doku.php\/wiki:advanced:x2gokdrive:start\" rel=\"noopener noreferrer nofollow\">X2Go KDrive<\/a> \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 3D \u0438 RANDR, \u043d\u043e \u043e\u0442\u0432\u0435\u0442\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u0447\u0430\u043b\u0430 2023 \u0433\u043e\u0434\u0430 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043d\u0435\u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u043c.<\/p>\n<h4>XRDP<\/h4>\n<p>RDP &#8212; \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e\u0433\u043e \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u0441\u0442\u043e\u043b\u0430 \u043e\u0442 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Microsoft. \u0414\u043b\u044f \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043c\u043e\u0433\u0443 \u043f\u043e\u0441\u043e\u0432\u0435\u0442\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u0440\u0430\u0437\u044b \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <a href=\"https:\/\/github.com\/danchitnis\/container-xrdp\" rel=\"noopener noreferrer nofollow\">container-xrdp<\/a>.<\/p>\n<details class=\"spoiler\">\n<summary>\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0435\u0441\u0441\u0438\u0435\u0439 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<\/p>\n<\/div>\n<\/details>\n<h4>Xpra<\/h4>\n<p>\u0423\u0442\u0438\u043b\u0438\u0442\u0430 xpra \u2014 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b X11, \u043e\u0431\u044b\u0447\u043d\u043e \u043d\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u043c \u0445\u043e\u0441\u0442\u0435, \u0438 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u0445 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440 \u0431\u0435\u0437 \u043f\u043e\u0442\u0435\u0440\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f. \u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a\u0430\u043a \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c, \u0442\u0430\u043a \u0438 \u043d\u043e\u0432\u044b\u043c \u0438\u043b\u0438 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u0441\u0435\u0430\u043d\u0441\u0430\u043c \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u0441\u0442\u043e\u043b\u0430.<\/p>\n<p>\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0443 \u0441\u043e \u0437\u0432\u0443\u043a\u043e\u043c, \u043f\u0440\u0438\u043d\u0442\u0435\u0440\u0430\u043c\u0438, \u0432\u0435\u0431-\u043a\u0430\u043c\u0435\u0440\u0430\u043c\u0438. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 <a href=\"https:\/\/github.com\/Xpra-org\/xpra\/blob\/master\/docs\/Network\/README.md\" rel=\"noopener noreferrer nofollow\">\u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u0432 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f<\/a> \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c:<\/p>\n<ul>\n<li>\n<p>ssh;<\/p>\n<\/li>\n<li>\n<p>quic;<\/p>\n<\/li>\n<li>\n<p>tcp;<\/p>\n<\/li>\n<li>\n<p>WebSocket \u0438 Secure WebSocket;<\/p>\n<\/li>\n<li>\n<p>RFB\/VNC;<\/p>\n<\/li>\n<li>\n<p>\u0441\u043e\u043a\u0435\u0442\u044b \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c GNU\/Linux \u0438 Windows.<\/p>\n<\/li>\n<\/ul>\n<p>\u0414\u043b\u044f \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f <a href=\"https:\/\/..\/article_materials\/build-containers\/xpra\/README.md\" rel=\"noopener noreferrer nofollow\">\u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0435\u0439<\/a>.<\/p>\n<details class=\"spoiler\">\n<summary>\u0415\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 web-browser<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<\/p>\n<\/div>\n<\/details>\n<h3>\u0412\u0438\u0434\u0435\u043e\u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430<\/h3>\n<h4>Intel<\/h4>\n<p>\u0417\u0430 \u043e\u0441\u043d\u043e\u0432\u0443 \u043c\u043e\u0436\u043d\u043e \u0432\u0437\u044f\u0442\u044c <a href=\"https:\/\/github.com\/intel\/intel-device-plugins-for-kubernetes\/blob\/main\/demo\/intel-opencl-icd\/Dockerfile\" rel=\"noopener noreferrer nofollow\">\u0434\u0430\u043d\u043d\u044b\u0439 \u043e\u0431\u0440\u0430\u0437<\/a> \u0438\u043b\u0438 \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0441\u0432\u043e\u0439 \u043f\u043e \u043e\u0431\u0440\u0430\u0437\u0443 \u0438 \u043f\u043e\u0434\u043e\u0431\u0438\u044e.<\/p>\n<h4>Nvidia<\/h4>\n<p>\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u0432 <a href=\"https:\/\/gitlab.com\/nvidia\/container-images\" rel=\"noopener noreferrer nofollow\">\u043e\u0431\u0440\u0430\u0437\u044b \u043e\u0442 nvidia<\/a>. \u041c\u043e\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043e\u0431\u0440\u0430\u0437 \u043f\u043e\u0434 \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438.<\/p>\n<h3>VirtualGL<\/h3>\n<p>\u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f \u043c\u044b \u0442\u0430\u043a\u0436\u0435 \u043a\u043e\u0441\u043d\u0451\u043c\u0441\u044f \u043f\u0430\u043a\u0435\u0442\u0430 VirtualGL, \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0431\u0443\u0434\u0435\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c GUI-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0427\u0442\u043e\u0431\u044b \u0435\u0433\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c, \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/rawcdn.githack.com\/VirtualGL\/virtualgl\/3.0.2\/doc\/index.html#hd005001\" rel=\"noopener noreferrer nofollow\">\u041e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u043c \u0441\u0430\u0439\u0442\u043e\u043c<\/a>;<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/selkies-project\/docker-nvidia-egl-desktop\/blob\/main\/Dockerfile#L190\" rel=\"noopener noreferrer nofollow\">Dockerfile \u043e\u0442 selkies-project\/ehfd<\/a>.<\/p>\n<\/li>\n<\/ul>\n<details class=\"spoiler\">\n<summary>\u0421\u043e\u0441\u0442\u0430\u0432 \u043f\u0430\u043a\u0435\u0442\u0430 VirtualGL<\/summary>\n<div class=\"spoiler__content\">\n<ul>\n<li>\n<p>cpustat;<\/p>\n<\/li>\n<li>\n<p>eglinfo;<\/p>\n<\/li>\n<li>\n<p>glreadtest;<\/p>\n<\/li>\n<li>\n<p>glxinfo;<\/p>\n<\/li>\n<li>\n<p>glxspheres;<\/p>\n<\/li>\n<li>\n<p>glxspheres64;<\/p>\n<\/li>\n<li>\n<p>nettest;<\/p>\n<\/li>\n<li>\n<p>tcbench;<\/p>\n<\/li>\n<li>\n<p>vglclient;<\/p>\n<\/li>\n<li>\n<p>vglconfig;<\/p>\n<\/li>\n<li>\n<p>vglconnect;<\/p>\n<\/li>\n<li>\n<p>vglgenkey;<\/p>\n<\/li>\n<li>\n<p>vgllogin;<\/p>\n<\/li>\n<li>\n<p>vglrun;<\/p>\n<\/li>\n<li>\n<p>vglserver_config.<\/p>\n<\/li>\n<\/ul>\n<\/div>\n<\/details>\n<h3>\u0423\u0442\u0438\u043b\u0438\u0442\u044b \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430 \u0438 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0438<\/h3>\n<p>\u041d\u0430 \u044d\u0442\u0430\u043f\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0438 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u044f \u0441\u043e\u0432\u0435\u0442\u0443\u044e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c\u0438 \u0443\u0442\u0438\u043b\u0438\u0442\u0430\u043c\u0438 \u0438 \u043f\u0430\u043a\u0435\u0442\u0430\u043c\u0438:<\/p>\n<ul>\n<li>\n<p>mesa-utils:<\/p>\n<ul>\n<li>\n<p>glxgears;<\/p>\n<\/li>\n<li>\n<p>glxinfo;<\/p>\n<\/li>\n<li>\n<p>egl-info;<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/glmark2\/glmark2\" rel=\"noopener noreferrer nofollow\">glmark2<\/a>;<\/p>\n<\/li>\n<li>\n<p>virtualgl:<\/p>\n<ul>\n<li>\n<p>vglrun -d egl0 \/opt\/VirtualGL\/bin\/glxspheres64;<\/p>\n<\/li>\n<li>\n<p>\/opt\/VirtualGL\/bin\/eglinfo -e;<\/p>\n<\/li>\n<li>\n<p>\/opt\/VirtualGL\/bin\/glxinfo;<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>intel-gpu-tools:<\/p>\n<ul>\n<li>\n<p>intel_gpu_top \u2014 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u044b Intel;<\/p>\n<\/li>\n<li>\n<p>intel_gpu_frequency \u2014 \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u044b Intel;<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>nvidia:<\/p>\n<ul>\n<li>\n<p>nvidia-smi;<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/Syllo\/nvtop\" rel=\"noopener noreferrer nofollow\">nvtop<\/a> \u2014 top \u0434\u043b\u044f \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442;<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/Oblomov\/clinfo\" rel=\"noopener noreferrer nofollow\">clinfo<\/a>;<\/p>\n<\/li>\n<li>\n<p>vainfo &#8212;display drm &#8212;device \/dev\/dri\/renderD128;<\/p>\n<\/li>\n<li>\n<p>xrandr.<\/p>\n<\/li>\n<\/ul>\n<h3>X11docker<\/h3>\n<p>\u0423\u0434\u043e\u0431\u043d\u043e\u0439 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043e\u0439 \u043f\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0443 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0443\u0442\u0438\u043b\u0438\u0442\u0430 x11docker. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e \u043d\u0435\u0439 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c <a href=\"https:\/\/github.com\/mviereck\/x11docker\" rel=\"noopener noreferrer nofollow\">\u0437\u0434\u0435\u0441\u044c<\/a>.<\/p>\n<h2>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0445\u043e\u0441\u0442\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432, \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430<\/h2>\n<h3>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u043e\u0432 \u043d\u0430 \u0445\u043e\u0441\u0442\u043e\u0432\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443<\/h3>\n<h4>Nvidia<\/h4>\n<p>\u041d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u044c\u0438 (\u044f\u043d\u0432\u0430\u0440\u044c-\u0444\u0435\u0432\u0440\u0430\u043b\u044c 2023 \u0433\u043e\u0434\u0430) \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u043f\u0440\u043e\u043f\u0440\u0438\u0435\u0442\u0430\u0440\u043d\u044b\u0435 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 \u043e\u0442 nvidia &#8212; NVIDIA driver metapackage \u0438\u0437 nvidia-driver-525. \u041c\u043e\u0433\u0443 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u043e\u0432\u0435\u0442\u043e\u0432\u0430\u0442\u044c, \u0447\u0442\u043e \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0442\u044c \u043f\u043e\u0434\u0447\u0438\u0449\u0430\u0442\u044c \u0437\u0430 \u0441\u043e\u0431\u043e\u0439 \u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c\u0441\u044f. \u041f\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e &#8212; \u0432\u0430\u0448\u0430 \u043f\u043e \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0443 \u0438\u043b\u0438 <a href=\"https:\/\/wiki.archlinux.org\/title\/NVIDIA\" rel=\"noopener noreferrer nofollow\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f Arch<\/a>.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a <a href=\"https:\/\/docs.nvidia.com\/datacenter\/cloud-native\/container-toolkit\/install-guide.html\" rel=\"noopener noreferrer nofollow\">\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 NVIDIA Container Toolkit<\/a>. \u041f\u0440\u043e\u0448\u0443 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u043d\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b:<\/p>\n<ul>\n<li>\n<p>\/etc\/nvidia-container-runtime\/config.toml &#8212; \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 nvidia-container-runtime;<\/p>\n<\/li>\n<li>\n<p>\/etc\/docker\/daemon.json &#8212; \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c runtime \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.<\/p>\n<\/li>\n<\/ul>\n<h4>Intel<\/h4>\n<p>\u0414\u043b\u044f \u0441\u0432\u043e\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u044f \u043d\u0435 \u043f\u043e\u043c\u043d\u044e, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043b \u043a\u0430\u043a\u0438\u0435-\u043b\u0438\u0431\u043e \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u0438. \u041f\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0432\u0438\u0434\u0435\u043e\u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c, \u0442\u043e \u044f\u0432\u043d\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0431\u044b\u0442\u044c \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e. \u0418\u0437 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043c\u043e\u0433\u0443 \u043f\u043e\u0441\u043e\u0432\u0435\u0442\u043e\u0432\u0430\u0442\u044c \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u0443\u044e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u043f\u043e \u0432\u0430\u0448\u0435\u043c\u0443 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0443 \u0438 <a href=\"https:\/\/wiki.archlinux.org\/title\/intel_graphics\" rel=\"noopener noreferrer nofollow\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e Arch<\/a>.<\/p>\n<h3>\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0445\u043e\u0441\u0442\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b<\/h3>\n<h4>Nvidia<\/h4>\n<p>\u041d\u0435 \u043e\u0442\u043a\u0440\u043e\u044e \u0410\u043c\u0435\u0440\u0438\u043a\u0443 \u0438 \u043f\u0440\u043e\u0434\u0443\u0431\u043b\u0438\u0440\u0443\u044e <a href=\"https:\/\/docs.nvidia.com\/datacenter\/cloud-native\/container-toolkit\/install-guide.html#id3\" rel=\"noopener noreferrer nofollow\">\u0442\u0435\u0441\u0442 \u043e\u0442 nvidia<\/a>:<\/p>\n<pre><code>sudo docker run --rm -e NVIDIA_VISIBLE_DEVICES=all nvidia\/cuda:12.0.0-base-ubuntu22.04 nvidia-smi Tue Jan 24 17:53:42 2023 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 525.78.01    Driver Version: 525.78.01    CUDA Version: 12.0     | |-------------------------------+----------------------+----------------------+ | GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC | | Fan  Temp  Perf  Pwr:Usage\/Cap|         Memory-Usage | GPU-Util  Compute M. | |                               <\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-345193","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/345193","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=345193"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/345193\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=345193"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=345193"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=345193"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}