{"id":283521,"date":"2017-03-19T16:46:50","date_gmt":"2017-03-19T13:46:50","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=283521"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=283521","title":{"rendered":"\u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u0441\u0432\u043e\u0439 OpenShift Origin Cluster"},"content":{"rendered":"<p>\u00ab\u0412\u0441\u044e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u2014 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b\u00bb \u2014 \u0441 \u044d\u0442\u043e\u0439 \u0444\u0440\u0430\u0437\u044b \u043d\u0430\u0447\u0430\u043b\u043e\u0441\u044c \u043c\u043e\u0435 \u0443\u0432\u043b\u0435\u043a\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0438\u0435 \u0432 \u043c\u0438\u0440 Docker. \u041f\u043e\u043f\u044b\u0442\u043a\u0438 \u0443\u0433\u043e\u0434\u0438\u0442\u044c \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u043f\u0440\u0438\u0432\u0435\u043b\u0438 \u043a \u0432\u044b\u0431\u043e\u0440\u0443 OpenShift Origin. \u041e\u0434\u043d\u0430\u043a\u043e, \u0437\u0430\u0432\u0435\u0441\u0442\u0438 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440, \u043a\u0430\u043a \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0437\u0430\u0434\u0430\u0447\u0430 \u043d\u0435\u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u0430\u044f. \u0412\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043d\u043e\u0439 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u044f \u043f\u044b\u0442\u0430\u043b\u0441\u044f \u043d\u0430\u0439\u0442\u0438 \u0447\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u043f\u043e \u0442\u0435\u043c\u0435, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u043d\u0430 \u0425\u0430\u0431\u0440\u0435, \u0438 \u043d\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u043b, \u043a\u0430\u043a \u044d\u0442\u043e \u043d\u0438 \u0441\u0442\u0440\u0430\u043d\u043d\u043e. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0438\u0436\u0435 \u044f \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u044e \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0432\u0435\u0441\u044c \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0438 \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u044e\u0441\u044c \u0443\u0431\u0435\u0440\u0435\u0447\u044c \u0432\u0430\u0441 \u043e\u0442 \u0433\u0440\u0430\u0431\u043b\u0435\u0439, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0433\u0443\u043b\u044f\u043b.<\/p>\n<p>  \u041f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c:<br \/>  <a name=\"habracut\"><\/a>  <\/p>\n<h3>\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f<\/h3>\n<p>  \u0412\u0441\u0435 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0441\u043e\u0431\u043e\u0439 \u043d\u0430\u0431\u043e\u0440 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u0412\u041c \u0441 \u0440\u0430\u0437\u043d\u044b\u043c \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432. \u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u0437\u043b\u043e\u0436\u0435\u043d\u044b <a href=\"https:\/\/docs.openshift.org\/latest\/install_config\/install\/prerequisites.html#install-config-install-prerequisites\">\u0437\u0434\u0435\u0441\u044c<\/a>. \u041f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043c\u0435\u0436\u0434\u0443 \u0412\u041c \u0442\u0440\u0430\u0444\u0444\u0438\u043a \u0445\u043e\u0434\u0438\u0442 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e \u0438 \u0431\u0435\u0437 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439. \u0415\u0441\u043b\u0438 \u044d\u0442\u043e \u043d\u0435 \u0442\u0430\u043a, \u0442\u043e <a href=\"https:\/\/docs.openshift.org\/latest\/install_config\/install\/prerequisites.html#required-ports\">\u0437\u0434\u0435\u0441\u044c<\/a> \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043a\u0430\u043a\u0438\u0435 \u043f\u043e\u0440\u0442\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u043e\u0442\u043a\u0440\u044b\u0442\u044b.<\/p>\n<p>  \u041d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u044d\u0442\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b:<\/p>\n<ul>\n<li>\u0422\u0440\u0438 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0445 \u0412\u041c \u0434\u043b\u044f \u0441\u0430\u043c\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 (CentOS 7.2);<\/li>\n<li>\u041e\u0434\u043d\u0430 \u0412\u041c \u0441 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0438 DNS-\u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c (Windows Server 2012);<\/li>\n<li>\u041e\u0434\u043d\u0430 \u0412\u041c \u0441 NFS-\u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c \u0434\u043b\u044f \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 (CentOS 7.2);<\/li>\n<li>\u0412\u041c \u0441 Ansible \u043d\u0430 \u0431\u043e\u0440\u0442\u0443.<\/li>\n<\/ul>\n<p>  \u0418\u0442\u0430\u043a, \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043c, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0434\u043e\u043c\u0435\u043d \u0432\u0438\u0434\u0430 habra.cloud, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043c\u044b \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f \u0434\u043b\u044f \u043d\u0430\u0448\u0438\u0445 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u044b\u0445 \u043d\u0443\u0436\u0434.<\/p>\n<p>  \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u0437\u0430\u043f\u0438\u0441\u0438 \u0442\u0438\u043f\u0430 \u00ab\u0410\u00bb \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0445\u043e\u0441\u0442\u043e\u0432 \u043d\u0430\u0448\u0435\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0438 \u0432\u044b\u0434\u0435\u043b\u0438\u043c \u043f\u043e\u0434\u0434\u043e\u043c\u0435\u043d apps.habra.cloud \u0434\u043b\u044f \u0431\u0443\u0434\u0443\u0449\u0438\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0432 \u043d\u0430\u0448\u0435\u043c \u043e\u0431\u043b\u0430\u043a\u0435.<\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043a\u0430\u0440\u0442\u0438\u043d\u0443 \u0432\u0438\u0434\u0430:<\/p>\n<pre><code>Name\t                  Type\t                      Data                       apps\t\t (same as parent folder)\t  Start of Authority (SOA)   [16], dc-infra.habra.cloud, (same as parent folder)\t  Name Server (NS)\t     172.28.246.50. ansible\t                  Host (A)\t             172.28.247.200 master\t                  Host (A)\t             172.28.247.211 nfs\t                  Host (A)\t             172.28.247.51 node01\t                  Host (A)\t             172.28.247.212 node02\t                  Host (A)\t             172.28.247.213 <\/code><\/pre>\n<p>  \u0414\u043b\u044f \u0437\u043e\u043d\u044b apps.habra.cloud \u0432\u044b\u0432\u043e\u0434 \u0431\u0443\u0434\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c:<\/p>\n<pre><code>Name\tType\t Data\t        Timestamp *\tHost (A) 172.28.247.211\tstatic <\/code><\/pre>\n<p>  \u041c\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043b\u0438 DNS \u2014 \u043d\u0443\u0436\u043d\u043e \u0441\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0435\u0442\u0435\u0432\u044b\u0435 \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u044b \u0438 \u0438\u043c\u0435\u043d\u0430 NFS-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0438 \u043d\u043e\u0434\u044b \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430.<\/p>\n<p>  \u041d\u0430\u0434\u043e\u043b\u0433\u043e \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u044d\u0442\u043e\u043c \u043d\u0435 \u0431\u0443\u0434\u0435\u043c, \u0442.\u043a. \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043f\u043e \u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0432\u043e\u0434\u0443 \u0432\u0430\u0433\u043e\u043d \u0438 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0430\u044f \u0442\u0435\u043b\u0435\u0436\u043a\u0430. \u0417\u0430\u043e\u0441\u0442\u0440\u044e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043b\u0438\u0448\u044c \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043c\u043e\u043c\u0435\u043d\u0442\u0430\u0445:<\/p>\n<ul>\n<li>\u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u0432\u0441\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0447\u0435\u0440\u0435\u0437 NetworkManager, \u0442.\u043a. \u0438\u043d\u0430\u0447\u0435 Ansible \u043f\u0440\u043e\u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u0435\u0442 \u0432\u0430\u0448\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 DNS \u0438 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u0445 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u0432, \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u0435\u0441\u0442\u044c.<\/li>\n<li>\u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u043d\u0443\u0436\u043d\u043e \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0432\u0430\u0448 DNS-\u0441\u0435\u0440\u0432\u0435\u0440 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 primary DNS server, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432\u0430\u0448\u0438 \u0445\u043e\u0441\u0442\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c \u043d\u0430 \u043f\u043e\u043b\u043d\u044b\u0435 DNS-\u0438\u043c\u0435\u043d\u0430, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 DNS-\u0441\u0435\u0440\u0432\u0435\u0440\u0435. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f \u043c\u0430\u0441\u0442\u0435\u0440-\u043d\u043e\u0434\u044b OpenShift \u0432\u044b\u0432\u043e\u0434 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0442\u0430\u043a\u0438\u043c:<\/li>\n<\/ul>\n<p>  <\/p>\n<pre><code class=\"bash\">root@master# hostname master.habra.cloud <\/code><\/pre>\n<p>  <\/p>\n<ul>\n<li>\u0412-\u0442\u0440\u0435\u0442\u044c\u0438\u0445 \u2014 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 search-\u0434\u043e\u043c\u0435\u043d\u043e\u0432 \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0435\u0449\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0431\u044b\u043b\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c \u0438\u043c\u0435\u043d \u043c\u0435\u0436\u0434\u0443 \u043f\u043e\u0434\u0430\u043c\u0438 \u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c\u0438. \u0414\u043b\u044f \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f, \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u0447\u0430\u0441\u0442\u044c \u043c\u043e\u0435\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \/etc\/resolv.conf:<\/li>\n<\/ul>\n<p>  <\/p>\n<pre><code class=\"bash\">root@OpenShiftCluster# cat \/etc\/resolv.conf # Generated by NetworkManager search habra.cloud default.svc.cluster.local svc.cluster.local cloud.local default.svc svc local nameserver 172.28.246.50 <\/code><\/pre>\n<p>  \u0421 \u0445\u043e\u0441\u0442\u0430\u043c\u0438 \u0438 \u0441\u0435\u0442\u044c\u044e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0438\u0441\u044c. \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u044d\u0442\u0430\u043f\u043e\u043c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c docker \u043d\u0430 \u0432\u0441\u0435 \u043d\u043e\u0434\u044b \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043c docker-storage.<\/p>\n<pre><code class=\"bash\">root@OpenShiftCluster# yum -y install docker<\/code><\/pre>\n<p>  \u0412 \u0444\u0430\u0439\u043b \/etc\/sysconfig\/docker \u0432 \u0440\u0430\u0437\u0434\u0435\u043b OPTIONS \u0434\u043e\u0431\u0430\u0432\u0438\u043c:<\/p>\n<pre><code class=\"bash\">OPTIONS='--selinux-enabled --insecure-registry 172.30.0.0\/16'<\/code><\/pre>\n<p>  \u0414\u0430\u043b\u0435\u0435, \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 <a href=\"https:\/\/docs.openshift.org\/latest\/install_config\/install\/host_preparation.html#configuring-docker-storage\">\u044d\u0442\u0438\u043c<\/a> \u043c\u0430\u043d\u0443\u0430\u043b\u043e\u043c \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c docker-storage.<\/p>\n<p>  \u042f \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u043f\u0446\u0438\u0435\u0439 \u00abB\u00bb, \u0447\u0442\u043e\u0431\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0438\u043c \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e LVM. \u0422\u0430\u043a\u0436\u0435, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u0447\u0435\u0441\u0442\u044c, \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0432 \u044d\u0442\u043e\u0442 storage OpenShift \u0431\u0443\u0434\u0435\u0442 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c docker-\u043e\u0431\u0440\u0430\u0437\u044b \u0438\u0437 \u043b\u044e\u0431\u044b\u0445 docker registry. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c, OpenShift \u043d\u0435 \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u0441\u0442\u0430\u0440\u044b\u0435 \u0438 \u043d\u0435\u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u043d\u044b\u0435 docker-\u043e\u0431\u0440\u0430\u0437\u044b. \u041f\u043e\u044d\u0442\u043e\u043c\u0443, \u044f \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u0434\u0435\u043b\u0430\u0442\u044c docker-storage \u043e\u0431\u044a\u0435\u043c\u043e\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 30-50\u0413\u0411 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 \u043d\u043e\u0434\u0435. \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u2014 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0432\u0430\u0448\u0438\u0445 \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u0435\u0439. <\/p>\n<p>  \u041a\u0430\u043a \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043b \u044f:<\/p>\n<ul>\n<li>\u0420\u0430\u0437\u043c\u0435\u0442\u0438\u043c fdisk`\u043e\u043c \/dev\/sdb \u043f\u043e\u0434 \u0444\u043e\u0440\u043c\u0430\u0442 LVM, \u0437\u0430\u0442\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c PV \u0438 VG:<\/li>\n<\/ul>\n<p>  <\/p>\n<pre><code class=\"bash\">root@OpenShiftCluster# fdisk \/dev\/sdb n t 8e w root@OpenShiftCluster# pvcreate \/dev\/sdb1 root@OpenShiftCluster# vgcreate docker-vg \/dev\/sdb1 <\/code><\/pre>\n<p>  <\/p>\n<ul>\n<li>\u041f\u043e\u043f\u0440\u0430\u0432\u0438\u043c \/etc\/sysconfig\/docker-storage-setup. \u041b\u0438\u0441\u0442\u0438\u043d\u0433 \/etc\/sysconfig\/docker-storage-setup \u043f\u0440\u0438\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f:<\/li>\n<\/ul>\n<p>  <\/p>\n<pre><code class=\"bash\"># Edit this file to override any configuration options specified in # \/usr\/lib\/docker-storage-setup\/docker-storage-setup. # # For more details refer to &quot;man docker-storage-setup&quot; VG=docker-vg <\/code><\/pre>\n<p>  <\/p>\n<ul>\n<li>\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0443 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f docker-storage:<\/li>\n<\/ul>\n<p>  <\/p>\n<pre><code class=\"bash\">root@OpenShiftCluster# docker-storage-setup <\/code><\/pre>\n<p>  <\/p>\n<ul>\n<li>\u0412\u044b\u043f\u043e\u043b\u043d\u0438\u043c \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0438 \u0438\u0437 \u043c\u0430\u043d\u0443\u0430\u043b\u0430 \u043f\u043e\u0441\u043b\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f docker-storage:<\/li>\n<\/ul>\n<p>  <\/p>\n<pre><code class=\"bash\">root@OpenShiftCluster# systemctl is-active docker <\/code><\/pre>\n<p>  <\/p>\n<ul>\n<li><i>\u0415\u0441\u043b\u0438 docker \u0435\u0449\u0435 \u043d\u0435 \u0431\u044b\u043b \u0437\u0430\u043f\u0443\u0449\u0435\u043d \u043d\u0430 \u0445\u043e\u0441\u0442\u0435:<\/i><\/li>\n<\/ul>\n<p>  <\/p>\n<pre><code class=\"bash\">root@OpenShiftCluster# systemctl enable docker root@OpenShiftCluster# systemctl start docker <\/code><\/pre>\n<p>  <\/p>\n<ul>\n<li><i>\u0415\u0441\u043b\u0438 Docker \u0443\u0436\u0435 \u0437\u0430\u043f\u0443\u0449\u0435\u043d (\u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430 \u0443\u043d\u0438\u0447\u0442\u043e\u0436\u0438\u0442 \u0432\u0441\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0438 \u043e\u0431\u0440\u0430\u0437\u044b):<\/i><\/li>\n<\/ul>\n<p>  <\/p>\n<pre><code class=\"bash\">root@OpenShiftCluster# systemctl stop docker root@OpenShiftCluster# rm -rf \/var\/lib\/docker\/* root@OpenShiftCluster# systemctl restart docker <\/code><\/pre>\n<p>  \u0425\u043e\u0440\u043e\u0448\u043e, docker \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0438 \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u0435\u043d. \u041d\u0430\u0441\u0442\u0440\u043e\u0438\u043c SELinux \u043a\u0430\u043a \u0442\u043e\u0433\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442 OpenShift.<\/p>\n<ul>\n<li>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 SELINUXTYPE=targeted \u0432 \u0444\u0430\u0439\u043b\u0435 <\/li>\n<\/ul>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\/etc\/selinux\/config:<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\"># This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: #     enforcing - SELinux security policy is enforced. #     permissive - SELinux prints warnings instead of enforcing. #     disabled - No SELinux policy is loaded. SELINUX=enforcing # SELINUXTYPE= can take one of these three values: #     targeted - Targeted processes are protected, #     minimum - Modification of targeted policy. Only selected processes are protected. #     mls - Multi Level Security protection. SELINUXTYPE=targeted <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  <\/p>\n<ul>\n<li>\u0418, \u0442\u0430\u043a \u043a\u0430\u043a \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 NFS, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043c \u043f\u0430\u0440\u0443 \u043a\u043e\u043c\u0430\u043d\u0434:<\/li>\n<\/ul>\n<p>  <\/p>\n<pre><code class=\"bash\">root@OpenShiftCluster# setsebool -P virt_use_nfs 1 root@OpenShiftCluster# setsebool -P virt_sandbox_use_nfs 1 <\/code><\/pre>\n<p>  <\/p>\n<ul>\n<li>\u0414\u043e\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u0435\u0441\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435<\/li>\n<\/ul>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b:<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\">root@OpenShiftCluster# yum install -y wget git net-tools bind-utils iptables-services bridge-utils bash-completion nfs-utils nfs-utils-lib root@OpenShiftCluster# yum update root@OpenShiftCluster# yum -y install \\     https:\/\/dl.fedoraproject.org\/pub\/epel\/epel-release-latest-7.noarch.rpm root@OpenShiftCluster# sed -i -e &quot;s\/^enabled=1\/enabled=0\/&quot; \/etc\/yum.repos.d\/epel.repo root@OpenShiftCluster# yum -y --enablerepo=epel install pyOpenSSL <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  <\/p>\n<ul>\n<li><i>\u0412 \u043c\u043e\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 Ansible \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435, \u043d\u043e \u0435\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435, \u043c\u043e\u0436\u043d\u043e \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0430 Master, \u0432 \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:<\/i><\/li>\n<\/ul>\n<p>  <\/p>\n<pre><code class=\"bash\">root@master# yum -y --enablerepo=epel install ansible pyOpenSSL <\/code><\/pre>\n<p>  \u0418\u0434\u0435\u043c \u0434\u0430\u043b\u044c\u0448\u0435, \u043a NFS-\u0441\u0435\u0440\u0432\u0435\u0440\u0443. \u0422\u0430\u043a \u043a\u0430\u043a \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u043c\u044b \u0443\u0436\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438 \u0438 \u0434\u0430\u0436\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043b\u0438 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e SELinux, \u043e\u0441\u0442\u0430\u043b\u0441\u044f \u043f\u0443\u0441\u0442\u044f\u043a \u2014 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c NFS-\u0441\u0435\u0440\u0432\u0435\u0440.<\/p>\n<p>  \u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435, \u0434\u0430\u0431\u044b \u043e\u043d\u0430 \u043d\u0435 \u0440\u0430\u0437\u0440\u043e\u0441\u043b\u0430\u0441\u044c \u0434\u043e \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0445 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432, \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e NFS-\u0441\u0435\u0440\u0432\u0435\u0440 \u0443 \u0432\u0430\u0441 \u0443\u0436\u0435 \u0432\u043e\u0432\u0441\u044e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0415\u0441\u043b\u0438 \u044d\u0442\u043e \u043d\u0435 \u0442\u0430\u043a, \u0442\u043e <a href=\"https:\/\/www.howtoforge.com\/tutorial\/setting-up-an-nfs-server-and-client-on-centos-7\/\">\u0432\u043e\u0442 \u043d\u0435\u043f\u043b\u043e\u0445\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f<\/a> \u043d\u0430 \u044d\u0442\u0443 \u0442\u0435\u043c\u0443.<br \/>  \u0414\u043e\u0431\u0430\u0432\u043b\u044e, \u0447\u0442\u043e \u043c\u043e\u0439 NFS-\u0441\u0435\u0440\u0432\u0435\u0440 \u0441\u043c\u043e\u0442\u0440\u0438\u0442 \u043d\u0430 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \/nfs\/ \u0438 \u044f \u0431\u0443\u0434\u0443 \u043e\u0442\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u044d\u0442\u043e\u0433\u043e.<\/p>\n<ul>\n<li>\u041f\u0440\u0438\u0433\u043e\u0442\u043e\u0432\u0438\u043c \u043f\u0430\u043f\u043a\u0438 \u043d\u0430 NFS \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0434\u043b\u044f \u0431\u0443\u0434\u0443\u0449\u0435\u0433\u043e private docker registry:<\/li>\n<\/ul>\n<p>  <\/p>\n<pre><code class=\"bash\">root@nfs# mkdir -R \/nfs\/infrastructure\/registry root@nfs# chmod 755 \/nfs\/infrastructure root@nfs# chmod 755 \/nfs\/infrastructure\/registry root@nfs# chown nfsnobody:nfsnobody \/nfs\/infrastructure root@nfs# chown nfsnobody:nfsnobody \/nfs\/infrastructure\/registry <\/code><\/pre>\n<p>  <\/p>\n<ul>\n<li>\u041c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u043c \u0444\u0430\u0439\u043b \/etc\/exports \u2014 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u0443\u0434\u0430:<\/li>\n<\/ul>\n<p>  <\/p>\n<pre><code class=\"bash\">\/nfs\/infrastructure\/registry           *(rw,sync,root_squash,no_subtree_check,no_wdelay) <\/code><\/pre>\n<p>  <\/p>\n<ul>\n<li>\u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c:<\/li>\n<\/ul>\n<p>  <\/p>\n<pre><code class=\"bash\">root@nfs# exportfs -a <\/code><\/pre>\n<p>  \u041e\u0442\u043b\u0438\u0447\u043d\u043e, \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u0441\u043c\u043e\u0436\u0435\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u043c \u043a \u044d\u0442\u043e\u043c\u0443 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0443.<\/p>\n<h3>\u0413\u043e\u0442\u043e\u0432\u0438\u043c Ansible \u0438 \u0435\u0433\u043e inventory.<\/h3>\n<p>  \u0412 \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 Ansible \u0443 \u0432\u0430\u0441 \u0443\u0436\u0435 \u0433\u0434\u0435-\u0442\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d, \u043a\u0430\u043a \u0443 \u043c\u0435\u043d\u044f, \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u0430 \u043d\u0435\u043c. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e Master, \u0442\u043e \u0442\u043e\u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0438 \u0434\u043b\u044f \u043d\u0435\u0433\u043e.<\/p>\n<p>  \u0418\u0442\u0430\u043a, \u043f\u0435\u0440\u0432\u043e\u0435 \u2014 Ansible \u0434\u043e\u043b\u0436\u0435\u043d \u0437\u043d\u0430\u0442\u044c \u043d\u0430\u0448\u0438 \u0412\u041c \u043f\u043e hostname. \u0417\u043d\u0430\u0447\u0438\u0442, \u043b\u0438\u0431\u043e \u043f\u0440\u0430\u0432\u0438\u043c \/etc\/hosts, \u043b\u0438\u0431\u043e, \u0447\u0442\u043e \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0435\u0435, \u043d\u0430\u0442\u0440\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043d\u0430\u0448\u0443 \u0412\u041c \u043d\u0430 \u043d\u0430\u0448 DNS-\u0441\u0435\u0440\u0432\u0435\u0440 \u043b\u044e\u0431\u044b\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c \u043d\u0430\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c (\u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f Master \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e, \u0442\u0430\u043a \u043a\u0430\u043a \u0443\u0436\u0435 \u0432\u0441\u0435 \u0433\u043e\u0442\u043e\u0432\u043e).<\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0440\u0430\u0441\u0442\u0438\u0440\u0430\u0436\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0448 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 SSH-\u043a\u043b\u044e\u0447 \u043d\u0430 \u043d\u043e\u0434\u044b \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430, \u0447\u0442\u043e\u0431\u044b Ansible \u043c\u043e\u0433 \u0431\u0435\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u043a \u043d\u0438\u043c.<\/p>\n<pre><code class=\"bash\">root@ansible# for host in master.habra.cloud \\     node01.habra.cloud \\     node02.habra.cloud; \\     do ssh-copy-id -i ~\/.ssh\/id_rsa.pub $host; \\     done <\/code><\/pre>\n<p>  <i>\u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0443 \u043c\u0435\u043d\u044f \u0443\u0436\u0435 \u0431\u044b\u043b\u0438 \u0433\u043e\u0442\u043e\u0432\u044b \u043f\u0430\u0440\u044b \u043a\u043b\u044e\u0447\u0435\u0439. \u0415\u0441\u043b\u0438 \u044d\u0442\u043e \u043d\u0435 \u0442\u0430\u043a, \u0442\u043e \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0443\u0442\u0438\u043b\u0438\u0442\u043e\u0439 ssh-keygen \u0438 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u043f\u0430\u0440\u0443.<\/i><\/p>\n<p>  \u041f\u0440\u0438\u0448\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u0434\u043b\u044f \u0441\u0430\u043c\u043e\u0433\u043e \u0433\u043b\u0430\u0432\u043d\u043e\u0433\u043e \u2014 \u043f\u0440\u0430\u0432\u043a\u0438 inventory \u0444\u0430\u0439\u043b\u0430 \u0434\u043b\u044f Ansible \u0441 \u043d\u0443\u0436\u043d\u044b\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438. <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041c\u043e\u0439 \u0444\u0430\u0439\u043b Inventory:<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\">root@ansible# cat inventory [OSEv3:children] masters nodes  [masters] master.habra.cloud  [nodes] master.habra.cloud openshift_schedulable=false openshift_node_labels=&quot;{'region': 'infra', 'zone': 'default'}&quot; node01.habra.cloud openshift_node_labels=&quot;{'region': 'primary', 'zone': 'firstzone'}&quot; node02.habra.cloud openshift_node_labels=&quot;{'region': 'primary', 'zone': 'secondzone'}&quot;  [OSEv3:vars] ansible_ssh_user=root openshift_master_default_subdomain=apps.habra.cloud containerized=false  deployment_type=origin <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043f\u0440\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 OpenShift \u0432 Ansible \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c <a href=\"https:\/\/docs.openshift.org\/latest\/install_config\/install\/advanced_install.html#configuring-ansible\">\u0442\u0443\u0442<\/a> <\/p>\n<p>  \u041e\u0441\u0442\u0430\u043b\u0430\u0441\u044c \u0441\u0430\u043c\u0430\u044f \u043c\u0430\u043b\u043e\u0441\u0442\u044c \u2014 \u043a\u0430\u0447\u0430\u0435\u043c \u0441\u0432\u0435\u0436\u0438\u0439 \u0430\u0440\u0445\u0438\u0432 \u0441 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u043c\u0438 \u0440\u043e\u043b\u044f\u043c\u0438 OpenShift \u0434\u043b\u044f Ansible (\u043d\u0443\u0436\u0435\u043d \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0439 git-client):<\/p>\n<pre><code class=\"bash\">root@ansible# git clone https:\/\/github.com\/openshift\/openshift-ansible<\/code><\/pre>\n<p>  <i>\u0412\u0430\u0436\u043d\u043e\u0435 \u0437\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u0435. \u0415\u0441\u043b\u0438 \u0432\u044b, \u043a\u0430\u043a \u0438 \u044f, \u0434\u0435\u043f\u043b\u043e\u0438\u0442\u0435\u0441\u044c \u043d\u0430 \u0412\u041c \u2014 \u044f \u0431\u044b \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u043e\u0432\u0430\u043b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u043d\u0430\u043f\u0448\u043e\u0442\u0430\u043c\u0438. \u0415\u0441\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u0439\u0434\u0435\u0442 \u043d\u0435 \u0442\u0430\u043a, \u0442\u043e \u043f\u0440\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u0431\u0443\u0434\u0435\u0442 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u043f\u0440\u043e\u0449\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u0432 \u043f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a, \u0447\u0435\u043c \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u0434\u043e\u043b\u0433\u0438\u0439 \u0438 \u043d\u0443\u0434\u043d\u044b\u0439 \u0434\u044d\u0431\u0430\u0433.<\/i><\/p>\n<p>  \u041f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c \u043a \u043b\u0430\u043a\u043e\u043c\u043a\u0435 \u2014 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u043d\u0430\u043a\u043e\u043d\u0435\u0446-\u0442\u043e OpenShift Origin \u043d\u0430 \u043d\u0430\u0448\u0438 \u043d\u043e\u0434\u044b. \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u0432\u044b \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0435\u0441\u044c \u0432 \u0442\u043e\u043c \u0436\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435, \u0433\u0434\u0435 \u0438 \u0432\u0430\u0448 inventory-\u0444\u0430\u0439\u043b.<\/p>\n<p>  <i>\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u043d\u0430 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442, \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u0432\u0435\u0440\u0441\u0438\u044f OpenShift Origin (1.4) playbook \u0434\u043b\u044f Ansible \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 Ansible \u0432\u0435\u0440\u0441\u0438\u0438 2.2.0.0. \u041f\u0440\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u0434\u043e \u0432\u0435\u0440\u0441\u0438\u0438 1.4 \u043c\u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043e\u0442\u043a\u0430\u0442\u0438\u0442\u044c Ansible \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0435 \u0432\u0441\u0442\u0430\u043b\u043e \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e.<\/i><\/p>\n<pre><code class=\"bash\">root@ansible# ansible-playbook -i .\/inventory openshift-ansible\/playbooks\/byo\/config.yml<\/code><\/pre>\n<p>  \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0434\u043b\u0438\u0442\u0441\u044f \u043e\u043a\u043e\u043b\u043e 20 \u043c\u0438\u043d\u0443\u0442. \u041f\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0444\u044d\u0439\u043b\u043e\u0432.<\/p>\n<h3>\u041f\u0435\u0440\u0432\u0438\u0447\u043d\u0430\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430<\/h3>\n<p>  \u041d\u0430 Master`\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u0438\u043c \u0441\u0442\u0430\u0442\u0443\u0441 \u043d\u043e\u0434 \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0432\u044b\u0432\u043e\u0434:<\/p>\n<pre><code class=\"bash\">root@master# oc get nodes  NAME                        STATUS                     AGE master.habra.cloud          Ready,SchedulingDisabled   1d node01.habra.cloud           Ready                      1d node02.habra.cloud           Ready                      1d<\/code><\/pre>\n<p>  \u0415\u0441\u043b\u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u0430 \u0442\u0430\u043a\u0430\u044f, \u043e\u0442\u043a\u0440\u043e\u0435\u043c \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u0438 \u043f\u0440\u043e\u0439\u0434\u0435\u043c \u043f\u043e URL: <a href=\"https:\/\/master.habra.cloud:8443\/console\">https:\/\/master.habra.cloud:8443\/console<\/a><\/p>\n<p>  \u0423\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043b\u043e\u0433\u0438\u043d\u0438\u0442\u044c\u0441\u044f \u043f\u043e\u0434 \u043b\u044e\u0431\u044b\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c.<\/p>\n<p>  \u041e\u0434\u043d\u0430\u043a\u043e, \u0440\u0430\u0434\u043e\u0441\u0442\u044c \u0431\u0443\u0434\u0435\u0442 \u043d\u0435 \u043f\u043e\u043b\u043d\u043e\u0439. <\/p>\n<p>  \u0414\u043b\u044f \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0441\u0447\u0430\u0441\u0442\u044c\u044f \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0435\u0449\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439. \u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445 \u043f\u0440\u043e\u0434\u0435\u043f\u043b\u043e\u0438\u0442\u044c router \u0438 private docker-registry. \u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c docker-registry \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u043b\u0441\u044f \u043d\u0430 \u043d\u0430\u0448\u0435\u043c NFS-\u0441\u0435\u0440\u0432\u0435\u0440\u0435.<\/p>\n<ul>\n<li>\u041f\u043e\u0435\u0445\u0430\u043b\u0438 \u2014 \u0434\u0435\u043f\u043b\u043e\u0438\u043c router \u0438 private docker-registry:<\/li>\n<\/ul>\n<p>  <\/p>\n<pre><code class=\"bash\">root@master# oadm manage-node master.habra.cloud --schedulable=true root@master# oc get nodes NAME                        STATUS                     AGE master.habra.cloud          Ready                      1d node1.habra.cloud           Ready                      1d node2.habra.cloud           Ready                      1d<\/code><\/pre>\n<p>  \u0418\u043d\u0441\u0442\u0430\u043b\u043b\u044f\u0442\u043e\u0440 \u043f\u043e-\u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u0437\u0430\u0434\u0430\u043d\u0438\u044f \u043d\u0430 \u0434\u0435\u043f\u043b\u043e\u0439 router \u0438 registry \u0432 namespace default. \u041d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c, \u0434\u0435\u043f\u043b\u043e\u0439 \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u0441\u0442\u0430\u0442\u0443\u0441 Master`\u0430 \u0431\u0443\u0434\u0435\u0442 Schedulable. <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u043a\u0430\u043a \u0438\u0434\u0435\u0442 \u0434\u0435\u043f\u043b\u043e\u0439:<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\">root@master# oc project default root@master# oc get all  NAME                  REVISION   DESIRED   CURRENT   TRIGGERED BY dc\/docker-registry    4          1         1         config dc\/router             3          1         1         config  NAME                    DESIRED   CURRENT   READY     AGE rc\/docker-registry-1    0         0         0         1d rc\/router-1             1         1         1         1d   NAME                   CLUSTER-IP     EXTERNAL-IP   PORT(S)                   AGE svc\/docker-registry    172.30.7.135   &lt;none&gt;        5000\/TCP                  1d svc\/kubernetes         172.30.0.1     &lt;none&gt;        443\/TCP,53\/UDP,53\/TCP     1d svc\/router             172.30.79.17   &lt;none&gt;        80\/TCP,443\/TCP,1936\/TCP   1d  NAME                          READY     STATUS    RESTARTS   AGE po\/docker-registry-1-ayuuo    1\/1       Running   11         1d po\/router-1-lzewh             1\/1       Running   8          1d <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0440\u043e\u0443\u0442\u0435\u0440 \u0443\u0436\u0435 \u0433\u043e\u0442\u043e\u0432. \u0418 \u043d\u0430\u0448\u0438 \u0431\u0443\u0434\u0443\u0449\u0438\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b \u0443\u0436\u0435 \u0441\u043c\u043e\u0433\u0443\u0442 \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c \u043d\u0430 \u0438\u0445 DNS-\u0438\u043c\u0435\u043d\u0430. \u0422\u0430\u043a \u043a\u0430\u043a \u043c\u044b \u0443\u0436\u0435 \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0438 \u043d\u0430 NFS-\u0441\u0435\u0440\u0432\u0435\u0440\u0435, \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0430 \u043d\u0438\u0445 OpenShift`\u0443.<\/p>\n<ul>\n<li>\u041d\u0430 Master`\u0435 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0444\u0430\u0439\u043b nfs-pv.yaml \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c:<\/li>\n<\/ul>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">nfs-pv.yaml<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>apiVersion: v1 kind: PersistentVolume metadata:   name: registrypv  spec:   capacity:     storage: 20Gi    accessModes:   - ReadWriteOnce    nfs:      path: \/nfs\/infrastructure\/registry     server: nfs.habra.cloud   persistentVolumeReclaimPolicy: Recycle<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <\/p>\n<ul>\n<li>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u0444\u0430\u0439\u043b nfs-claim1.yaml:<\/li>\n<\/ul>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">nfs-claim1.yaml<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>apiVersion: v1 kind: PersistentVolumeClaim metadata:   name: registry-claim1 spec:   accessModes:   - ReadWriteOnce    resources:     requests:       storage: 20Gi<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <\/p>\n<ul>\n<li>\u0422\u0435\u043f\u0435\u0440\u044c \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c PV:<\/li>\n<\/ul>\n<pre><code class=\"bash\">root@master# oc create -f nfs-pv.yaml<\/code><\/pre>\n<p>  <\/p>\n<ul>\n<li>\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:<\/li>\n<\/ul>\n<p>  <\/p>\n<pre><code class=\"bash\">root@master# oc get pv  NAME                   CAPACITY   ACCESSMODES   RECLAIMPOLICY   STATUS  ...     registrypv             20Gi       RWO           Recycle         Available   <\/code><\/pre>\n<p>  <\/p>\n<ul>\n<li>\u0422\u0430\u043a\u0436\u0435 \u043f\u043e\u0441\u0442\u0443\u043f\u0438\u043c \u0441 pvc:<\/li>\n<\/ul>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">Persistent Volume Claim<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\">root@master# oc create -f nfs-claim1.yaml root@master# oc get pvc  NAME              STATUS    VOLUME       CAPACITY   ACCESSMODES   AGE registry-claim1   Bound     registrypv   20Gi       RWO           1d <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <\/p>\n<ul>\n<li>\u041c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u043c \u043d\u0430\u0448 deploymentconfig \u0434\u043b\u044f docker-registry, \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u0441\u043c\u043e\u0442\u0440\u0435\u043b \u043d\u0430 \u043d\u0430\u0448 nfs-claim1:<\/li>\n<\/ul>\n<p>  <\/p>\n<pre><code class=\"bash\">root@master# oc volume deploymentconfigs\/docker-registry --add --name=registry-storage -t pvc \\      --claim-name=registry-claim1 --overwrite<\/code><\/pre>\n<p>  <\/p>\n<ul>\n<li>\u0423\u0431\u0435\u0436\u0434\u0430\u0435\u043c\u0441\u044f, \u0447\u0442\u043e \u0440\u0435\u0434\u0435\u043f\u043b\u043e\u0439 \u043f\u0440\u043e\u0448\u0435\u043b:<\/li>\n<\/ul>\n<p>  <\/p>\n<pre><code class=\"bash\">root@master# oc get pods  NAME                       READY     STATUS    RESTARTS   AGE docker-registry-2-sdfhk    1\/1       Running   1         1d<\/code><\/pre>\n<p>  \u041f\u043e\u0447\u0442\u0438 \u0433\u043e\u0442\u043e\u0432\u043e, \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0434\u043e\u043a\u0440\u0443\u0442\u0438\u043c DNS \u043d\u0430 Master`e.<\/p>\n<ul>\n<li>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 <\/li>\n<\/ul>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\/etc\/dnsmasq.conf:<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\"># Reverse DNS record for master host-record=master.habra.cloud,172.28.247.211 # Wildcard DNS for OpenShift Applications - Points to Router server=\/habra.cloud\/172.28.246.50 address=\/apps.habra.cloud\/172.28.247.211 server=\/apps.habra.cloud\/172.28.246.50 # Forward .local queries to SkyDNS server=\/local\/127.0.0.1#8053 # Forward reverse queries for service network to SkyDNS. # This is for default OpenShift SDN - change as needed. server=\/17.30.172.in-addr.arpa\/127.0.0.1#8053 # Forward .habra.cloud queries to DC server=\/habra.cloud\/172.28.246.50#53<\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  <\/p>\n<ul>\n<li>\u041f\u0440\u0430\u0432\u0438\u043c \/etc\/origin\/master\/master-config.yaml \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 dnsConfig \u0434\u043e\u043b\u0436\u043d\u043e \u0441\u0442\u0430\u0442\u044c \u0442\u0430\u043a:<\/li>\n<\/ul>\n<p>  <\/p>\n<pre><code>dnsConfig:   bindAddress: 0.0.0.0:8053<\/code><\/pre>\n<p>  <\/p>\n<ul>\n<li>\u0420\u0435\u0441\u0442\u0430\u0440\u0442\u0438\u043c dnsmasq \u0438 master-node:<\/li>\n<\/ul>\n<p>  <\/p>\n<pre><code class=\"bash\">root@master# service dnsmasq restart root@master# service origin-master restart<\/code><\/pre>\n<p>  \u0413\u043e\u0442\u043e\u0432\u043e! \u041a\u043b\u0430\u0441\u0442\u0435\u0440 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.<\/p>\n<h3>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h3>\n<p>  \u0412 \u043a\u043e\u043d\u0446\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u044d\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0447\u0430\u043b\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u043f\u0443\u0442\u0438. \u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u0432\u0441\u043f\u043b\u044b\u0432\u0430\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e \u043d\u0435\u0441\u0442\u044b\u043a\u043e\u0432\u043e\u043a \u0438 \u043d\u0435\u0434\u043e\u0440\u0430\u0431\u043e\u0442\u043e\u043a. \u041d\u0435 \u0432\u0441\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0438 \u0434\u0430\u0436\u0435 \u043d\u0435 \u0432\u0441\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b \u0438\u0437 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c. \u041f\u043e\u0434 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0437\u0430\u0434\u0430\u0447, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u044f \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u043b\u0441\u044f \u043c\u043d\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u043b\u0438\u0431\u043e \u0434\u043e\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u0433\u0440\u0443\u0431\u044b\u043c \u043d\u0430\u043f\u0438\u043b\u044c\u043d\u0438\u043a\u043e\u043c, \u043b\u0438\u0431\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0438. \u041d\u043e \u0432\u0441\u0435 \u0436\u0435, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438\u044f\u0442\u043d\u0435\u0435 \u043e\u043f\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0433\u043e\u0442\u043e\u0432\u044b\u043c\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u0430\u043c\u0438!<\/p>\n<p>  <i>\u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435.<\/i><\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041b\u0438\u0442\u0435\u0440\u0430\u0442\u0443\u0440\u0430 \u0438 \u0438\u0442\u043e\u0447\u043d\u0438\u043a\u0438<\/b><\/p>\n<div class=\"spoiler_text\"><a href=\"https:\/\/docs.openshift.org\/\">docs.openshift.org<\/a><br \/>  <a href=\"https:\/\/gist.github.com\/jlebon\/0cfcd3dcc7ac7de18a69\">gist.github.com\/jlebon\/0cfcd3dcc7ac7de18a69<\/a><br \/>  <a href=\"http:\/\/developers.redhat.com\/blog\/2015\/11\/19\/dns-your-openshift-v3-cluster\/\">developers.redhat.com\/blog\/2015\/11\/19\/dns-your-openshift-v3-cluster<\/a><br \/>  <a href=\"https:\/\/www.youtube.com\/user\/rhopenshift\">www.youtube.com\/user\/rhopenshift<\/a><br \/>  <a href=\"https:\/\/docs.docker.com\/\">docs.docker.com<\/a><br \/>  <a href=\"https:\/\/kubernetes.io\/docs\/\">kubernetes.io\/docs<\/a><\/div>\n<\/div>\n<p>  \u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442\u0441\u044f.<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:\/\/habrahabr.ru\/post\/324240\/\"> https:\/\/habrahabr.ru\/post\/324240\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00ab\u0412\u0441\u044e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u2014 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b\u00bb \u2014 \u0441 \u044d\u0442\u043e\u0439 \u0444\u0440\u0430\u0437\u044b \u043d\u0430\u0447\u0430\u043b\u043e\u0441\u044c \u043c\u043e\u0435 \u0443\u0432\u043b\u0435\u043a\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0438\u0435 \u0432 \u043c\u0438\u0440 Docker. \u041f\u043e\u043f\u044b\u0442\u043a\u0438 \u0443\u0433\u043e\u0434\u0438\u0442\u044c \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u043f\u0440\u0438\u0432\u0435\u043b\u0438 \u043a \u0432\u044b\u0431\u043e\u0440\u0443 OpenShift Origin. \u041e\u0434\u043d\u0430\u043a\u043e, \u0437\u0430\u0432\u0435\u0441\u0442\u0438 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440, \u043a\u0430\u043a \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0437\u0430\u0434\u0430\u0447\u0430 \u043d\u0435\u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u0430\u044f. \u0412\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043d\u043e\u0439 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u044f \u043f\u044b\u0442\u0430\u043b\u0441\u044f \u043d\u0430\u0439\u0442\u0438 \u0447\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u043f\u043e \u0442\u0435\u043c\u0435, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u043d\u0430 \u0425\u0430\u0431\u0440\u0435, \u0438 \u043d\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u043b, \u043a\u0430\u043a \u044d\u0442\u043e \u043d\u0438 \u0441\u0442\u0440\u0430\u043d\u043d\u043e. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0438\u0436\u0435 \u044f \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u044e \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0432\u0435\u0441\u044c \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0438 \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u044e\u0441\u044c \u0443\u0431\u0435\u0440\u0435\u0447\u044c \u0432\u0430\u0441 \u043e\u0442 \u0433\u0440\u0430\u0431\u043b\u0435\u0439, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0433\u0443\u043b\u044f\u043b.<\/p>\n<p>  \u041f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c:  <\/p>\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-283521","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/283521","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=283521"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/283521\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=283521"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=283521"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=283521"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}