{"id":293944,"date":"2019-08-28T09:01:01","date_gmt":"2019-08-28T09:01:01","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=293944"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=293944","title":{"rendered":"\u0420\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u043c \u0441\u0440\u0435\u0434\u0443 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u0430\u043c\u0438. \u0427\u0430\u0441\u0442\u044c 1 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 Kubernetes HA \u043d\u0430 bare metal"},"content":{"rendered":"\n<div class=\"post__text post__text-html js-mediator-article\">\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/aq\/dx\/l3\/aqdxl3a5akxfl3rh9b7bzc_kqji.jpeg\"><\/p>\n<p>  <\/p>\n<h4>\u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435 \u0443\u0432\u0430\u0436\u0430\u0435\u043c\u044b\u0435 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0438 \u0425\u0430\u0431\u0440\u0430!<\/h4>\n<p>  <\/p>\n<p>\u042d\u0442\u043e\u0439 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0435\u0439 \u044f \u0445\u043e\u0447\u0443 \u043d\u0430\u0447\u0430\u0442\u044c \u0446\u0438\u043a\u043b \u0441\u0442\u0430\u0442\u0435\u0439 \u043f\u0440\u043e \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u044b \u043e\u0440\u043a\u0435\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c\u0438 Kubernetes, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u0433\u043e\u0442\u043e\u0432\u0430 \u043a \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0443 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439.<br \/>  \u042f \u0445\u043e\u0447\u0443 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u043e \u0442\u043e, \u043a\u0430\u043a \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043a\u043b\u0430\u0441\u0442\u0435\u0440 Kubernetes, \u043d\u043e \u0438 \u043f\u0440\u043e \u0442\u043e, \u043a\u0430\u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u043f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438, \u043a\u0430\u043a \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u043d\u0435\u0433\u043e \u0443\u0434\u043e\u0431\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b. <\/p>\n<p>  <\/p>\n<h2>\u0414\u0430\u043d\u043d\u044b\u0439 \u0446\u0438\u043a\u043b \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u0442\u044c \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u0438\u0437 \u0447\u0435\u0442\u044b\u0440\u0435\u0445 \u0441\u0442\u0430\u0442\u0435\u0439:<\/h2>\n<p>  <\/p>\n<ol>\n<li>\u0412 \u043f\u0435\u0440\u0432\u043e\u0439 \u0438\u0437 \u043d\u0438\u0445 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u043d\u0430 \u0433\u043e\u043b\u043e\u0435 \u0436\u0435\u043b\u0435\u0437\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 kubernetes, \u043a\u0430\u043a \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u0434\u0430\u0448\u0431\u043e\u0440\u0434 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043d\u0435\u043c\u0443, \u043a\u0430\u043a \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c ingress \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440.<\/li>\n<li>\u0412\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 Ceph \u0438 \u043a\u0430\u043a \u043d\u0430\u0447\u0430\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c RBD \u0442\u043e\u043c\u0430 \u0432 \u043d\u0430\u0448\u0435\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 Kubernetes. \u0422\u0430\u043a\u0436\u0435 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0437\u0430\u0442\u0440\u043e\u043d\u0443 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0432\u0438\u0434\u044b \u0441\u0442\u043e\u0440\u0430\u0434\u0436\u0435\u0439 (storages) \u0438 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u044e local-storage. \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u043d\u0430 \u0431\u0430\u0437\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 CEPH \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 S3<\/li>\n<li>\u0412 \u0442\u0440\u0435\u0442\u044c\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u0432 \u043d\u0430\u0448\u0435\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 Kubernetes \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 MySql, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u2014 Percona XtraDB Cluster on Kubernetes. \u0418 \u0442\u0430\u043a\u0436\u0435 \u043e\u043f\u0438\u0448\u0443 \u0432\u0441\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043c\u044b \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0438\u0441\u044c, \u043a\u043e\u0433\u0434\u0430 \u0440\u0435\u0448\u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0442\u0438 \u0411\u0414 \u0432 kubernetes.<\/li>\n<li>\u0412 \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u044e\u0441\u044c \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0432\u0441\u0435 \u0432\u043c\u0435\u0441\u0442\u0435 \u0438 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u043a\u0430\u043a \u0437\u0430\u0434\u0435\u043f\u043b\u043e\u0438\u0442\u044c \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0411\u0414 \u0438 \u0442\u043e\u043c\u0430 ceph. \u0420\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c ingress \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043d\u0430\u0448\u0435\u043c\u0443 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e \u0438\u0437\u0432\u043d\u0435 \u0438 \u0441\u0435\u0440\u0432\u0438\u0441 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0437\u0430\u043a\u0430\u0437\u0430 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432 \u043e\u0442 Let&#8217;s Encrypt. \u0415\u0449\u0435 \u2014 \u043a\u0430\u043a \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u0432 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438. \u0422\u0430\u043a\u0436\u0435 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0437\u0430\u0442\u0440\u043e\u043d\u0435\u043c \u0442\u0435\u043c\u0443 RBAC \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0434\u043e \u043f\u0430\u043d\u0435\u043b\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f. \u0420\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u0432 \u0434\u0432\u0443\u0445 \u0441\u043b\u043e\u0432\u0430\u0445 \u043f\u0440\u043e Helm \u0438 \u0435\u0433\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443.<br \/>  \u0415\u0441\u043b\u0438 \u0412\u0430\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0439, \u0442\u043e \u2014 \u0434\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c !<a name=\"habracut\"><\/a><\/li>\n<\/ol>\n<p>  <\/p>\n<h2>\u0412\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435:<\/h2>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u043a\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u044b \u0434\u0430\u043d\u043d\u044b\u0435 \u0441\u0442\u0430\u0442\u044c\u0438? \u0412 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0441\u0432\u043e\u0439 \u043f\u0443\u0442\u044c \u0432 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0438 Kubernetes. \u0422\u0430\u043a\u0436\u0435 \u0434\u0430\u043d\u043d\u044b\u0439 \u0446\u0438\u043a\u043b \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043b\u0435\u0437\u0435\u043d \u0434\u043b\u044f \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u0443\u043c\u0430\u044e\u0442 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u044c \u043e\u0442 \u043c\u043e\u043d\u043e\u043b\u0438\u0442\u0430 \u043a \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u0430\u043c. \u0412\u0441\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0435 \u2014 \u044d\u0442\u043e \u043c\u043e\u0439 \u043e\u043f\u044b\u0442, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0438 \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0438\u0437 \u043c\u043e\u043d\u043e\u043b\u0438\u0442\u0430 \u0432 Kubernetes. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0447\u0442\u043e \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0447\u0430\u0441\u0442\u0438 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0439 \u0431\u0443\u0434\u0443\u0442 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b \u0438 \u043e\u043f\u044b\u0442\u043d\u044b\u043c \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0430\u043c.<\/p>\n<p>  <\/p>\n<h4>\u0427\u0442\u043e \u044f \u043d\u0435 \u0431\u0443\u0434\u0443 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u0432 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0435\u0440\u0438\u0438 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0439:<\/h4>\n<p>  <\/p>\n<ul>\n<li>\u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u044b kubernetes, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a: pod, deployment, service, ingress \u0438 \u0442\u0434. <\/li>\n<li>CNI (Container Networking Interface) \u044f \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u044e \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u043d\u043e, \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c callico \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u0440\u0443\u0433\u0438\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044e.<\/li>\n<li>\u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0441\u0431\u043e\u0440\u043a\u0438 docker \u043e\u0431\u0440\u0430\u0437\u043e\u0432.<\/li>\n<li>\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b CI\\CD. (\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0435\u0439, \u043d\u043e \u043f\u043e\u0441\u043b\u0435 \u0432\u0441\u0435\u0433\u043e \u0446\u0438\u043a\u043b\u0430)<\/li>\n<li>helm; \u043f\u0440\u043e \u043d\u0435\u0433\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0443\u0436\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043c\u043d\u043e\u0433\u043e, \u044f \u0437\u0430\u0442\u0440\u043e\u043d\u0443 \u043b\u0438\u0448\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0435\u0433\u043e \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u044f\u0446\u0438\u0438 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u043a\u043b\u0438\u0435\u043d\u0442\u0430.<\/li>\n<\/ul>\n<p>  <\/p>\n<h4>\u0427\u0442\u043e \u044f \u0445\u043e\u0447\u0443 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e:<\/h4>\n<p>  <\/p>\n<ul>\n<li>\u043f\u043e\u0448\u0430\u0433\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 Kubernetes. \u042f \u0431\u0443\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c kubeadm. \u041d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u044f \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0448\u0430\u0433 \u0437\u0430 \u0448\u0430\u0433\u043e\u043c \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u044e \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u044f\u0446\u0438\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u043d\u0430 \u0433\u043e\u043b\u043e\u0435 \u0436\u0435\u043b\u0435\u0437\u043e, \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0432\u0438\u0434\u044b \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u044f\u0446\u0438\u0438 ETCD, \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0444\u0430\u0439\u043b\u043e\u0432 \u0434\u043b\u044f kube admina. \u041f\u043e\u0441\u0442\u0430\u0440\u0430\u044e\u0441\u044c \u0440\u0430\u0437\u044a\u044f\u0441\u043d\u0438\u0442\u044c \u0432\u0441\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0438 \u0434\u043b\u044f Ingress \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u0438 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u0432 \u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u044b\u0445 \u0441\u0445\u0435\u043c\u0430\u0445 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 worknodes \u0434\u043e api \u0441\u0435\u0440\u0432\u0435\u0440\u0430.<br \/>  \u042f \u0437\u043d\u0430\u044e, \u0447\u0442\u043e \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0434\u043b\u044f \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f kubernetes \u0435\u0441\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, kubespray \u0438\u043b\u0438 \u0442\u043e\u0442 \u0436\u0435 rancher. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043a\u043e\u043c\u0443-\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0431\u043e\u043b\u0435\u0435 \u0443\u0434\u043e\u0431\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u0445. \u041d\u043e, \u044f \u0434\u0443\u043c\u0430\u044e, \u043d\u0430\u0439\u0434\u0435\u0442\u0441\u044f \u043d\u0435\u043c\u0430\u043b\u043e \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043e\u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u0445\u043e\u0442\u044f\u0442 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432\u043e\u043f\u0440\u043e\u0441 \u0431\u043e\u043b\u0435\u0435 \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u043e.<\/li>\n<li>\u0442\u0435\u0440\u043c\u0438\u043d\u043e\u043b\u043e\u0433\u0438\u044e CEPH \u0438 \u043f\u043e\u0448\u0430\u0433\u043e\u0432\u0443\u044e \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u044f\u0446\u0438\u044e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 CEPH, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0448\u0430\u0433\u043e\u0432\u0443\u044e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 ceph \u043a \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u043c\u0443 Kubernetes \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0443.<\/li>\n<li>local-storages, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0443 kubernetes, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043e\u0442\u043b\u0438\u0447\u0438\u044f \u043e\u0442 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 \u0442\u0438\u043f\u0430 hostpath \u0438 \u0442\u0434.<\/li>\n<li>kubernetes \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u0438 \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u0435 Percona XtraDB Cluster \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u044e\u0441\u044c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e \u043f\u043b\u044e\u0441\u044b \u0438 \u043c\u0438\u043d\u0443\u0441\u044b \u0442\u0430\u043a\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u043b\u0443\u0433\u043e\u0434\u043e\u0432\u043e\u0433\u043e \u043e\u043f\u044b\u0442\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u0435\u043d\u0435. \u0410 \u0442\u0430\u043a\u0436\u0435 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u0435\u043b\u044e\u0441\u044c \u043f\u043b\u0430\u043d\u0430\u043c\u0438 \u043f\u043e \u0434\u043e\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u043e\u0442 percona.<\/li>\n<\/ul>\n<p>  <\/p>\n<h2>\u041e\u0433\u043b\u0430\u0432\u043b\u0435\u043d\u0438\u0435:<\/h2>\n<p>  <\/p>\n<ol>\n<li> <a href=\"#vm\">C\u043f\u0438\u0441\u043e\u043a \u0445\u043e\u0441\u0442\u043e\u0432, \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0445\u043e\u0441\u0442\u043e\u0432, \u0432\u0435\u0440\u0441\u0438\u0438 \u041e\u0421 \u0438 \u041f\u041e<\/a><\/li>\n<li> <a href=\"#ha-image\">\u0421\u0445\u0435\u043c\u0430 HA \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 kubernetes<\/a><\/li>\n<li> <a href=\"#begin\"> \u0414\u043e \u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u0438\u043b\u0438 before you begin<\/a><\/li>\n<li> <a href=\"#create-config\">\u0417\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0444\u0430\u0439\u043b create-config.sh<\/a><\/li>\n<li> <a href=\"#kernel\">\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u044f\u0434\u0440\u0430 \u041e\u0421<\/a><\/li>\n<li> <a href=\"#kubelet\">\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u043d\u043e\u0434 \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 Kubelet, Kubectl, Kubeadm \u0438 docker <\/a><\/li>\n<li> <a href=\"#etcd\">\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 ETCD (\u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b) <\/a><\/li>\n<li> <a href=\"#master-one\">\u0417\u0430\u043f\u0443\u0441\u043a \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043c\u0430\u0441\u0442\u0435\u0440\u0430 kubernetes<\/a><\/li>\n<li> <a href=\"#callica\">\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 CNI Callico<\/a><\/li>\n<li> <a href=\"#mastes-other\">\u0417\u0430\u043f\u0443\u0441\u043a \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0438 \u0442\u0440\u0435\u0442\u044c\u0435\u0433\u043e \u043c\u0430\u0441\u0442\u0435\u0440\u0430 kubernetes<\/a><\/li>\n<li> <a href=\"#worknodes\">\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c worker \u043d\u043e\u0434 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440<\/a><\/li>\n<li> <a href=\"#haproxy\">\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c haproxy \u043d\u0430 worker \u043d\u043e\u0434\u044b \u0434\u043b\u044f HA<\/a><\/li>\n<li> <a href=\"#ingress\">\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 Ingress \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430<\/a><\/li>\n<li> <a href=\"#dashboard\">\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 Web UI (Dashboard)<\/a><\/li>\n<\/ol>\n<p>  <a name=\"vm\"><\/a>  <\/p>\n<h2>\u0421\u043f\u0438\u0441\u043e\u043a \u0438 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0445\u043e\u0441\u0442\u043e\u0432<\/h2>\n<p>  <\/p>\n<p>\u0412\u0441\u0435 \u043d\u043e\u0434\u044b \u043c\u043e\u0435\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d\u0430\u0445 \u0441 \u043f\u0440\u0435\u0434\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 Debian 9 stretch c \u044f\u0434\u0440\u043e\u043c 4.19.0-0.bpo.5-amd64. \u0414\u043b\u044f \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e Proxmox VE.<\/p>\n<p>  <\/p>\n<h4>\u0422\u0430\u0431\u043b\u0438\u0446\u0430 \u0412\u041c \u0438 \u0438\u0445 \u0422\u0422\u0425:<\/h4>\n<p>  <\/p>\n<div class=\"scrollable-table\">\n<table>\n<tr>\n<th><b>Name<\/b><\/th>\n<th><b>IP \u0430\u0434\u0440\u0435\u0441<\/b><\/th>\n<th><b>Comment<\/b><\/th>\n<th><b>CPU<\/b><\/th>\n<th><b>MEM<\/b><\/th>\n<th><b>DISK1<\/b><\/th>\n<th><b>DISK2<\/b><\/th>\n<\/tr>\n<tr>\n<td>master01<\/td>\n<td>10.73.71.25<\/td>\n<td>master node <\/td>\n<td>4vcpu<\/td>\n<td>4Gb<\/td>\n<td>HDD<\/td>\n<td>&#8212;<\/td>\n<\/tr>\n<tr>\n<td>master02<\/td>\n<td>10.73.71.26<\/td>\n<td>master node <\/td>\n<td>4vcpu<\/td>\n<td>4Gb<\/td>\n<td>HDD<\/td>\n<td>&#8212;<\/td>\n<\/tr>\n<tr>\n<td>master03<\/td>\n<td>10.73.71.27<\/td>\n<td>master node <\/td>\n<td>4vcpu<\/td>\n<td>4Gb<\/td>\n<td>HDD<\/td>\n<td>&#8212;<\/td>\n<\/tr>\n<tr>\n<td>worknode01<\/td>\n<td>10.73.75.241<\/td>\n<td>work node <\/td>\n<td>4vcpu<\/td>\n<td>4Gb<\/td>\n<td>HDD<\/td>\n<td>SSD<\/td>\n<\/tr>\n<tr>\n<td>worknode02<\/td>\n<td>10.73.75.242<\/td>\n<td>work node <\/td>\n<td>4vcpu<\/td>\n<td>4Gb<\/td>\n<td>HDD<\/td>\n<td>SSD<\/td>\n<\/tr>\n<tr>\n<td>worknode03<\/td>\n<td>10.73.75.243<\/td>\n<td>work node <\/td>\n<td>4vcpu<\/td>\n<td>4Gb<\/td>\n<td>HDD<\/td>\n<td>SSD<\/td>\n<\/tr>\n<\/table>\n<\/div>\n<p>  <\/p>\n<p>\u041d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0447\u0442\u043e \u0443 \u0412\u0430\u0441 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043c\u0430\u0448\u0438\u043d, \u043d\u043e \u0432\u0441\u0435 \u0442\u0430\u043a\u0438 \u044f \u0441\u043e\u0432\u0435\u0442\u0443\u044e \u043f\u0440\u0438\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u044f\u043c <a href=\"https:\/\/v1-14.docs.kubernetes.io\/docs\/setup\/production-environment\/tools\/kubeadm\/install-kubeadm\/#before-you-begin\">\u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/a>, \u0430 \u0434\u043b\u044f \u043c\u0430\u0441\u0442\u0435\u0440\u043e\u0432 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u0434\u043e 4\u0413\u0431. \u0417\u0430\u0431\u0435\u0433\u0430\u044f \u0432\u043f\u0435\u0440\u0435\u0434 \u0441\u043a\u0430\u0436\u0443, \u0447\u0442\u043e \u043f\u0440\u0438 \u0431\u043e\u043b\u0435\u0435 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u043e\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0435, \u044f \u043b\u043e\u0432\u0438\u043b \u0433\u043b\u044e\u043a\u0438 \u0432 \u0440\u0430\u0431\u043e\u0442\u0435 CNI Callico<br \/>  Ceph \u0442\u043e\u0436\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0436\u043e\u0440\u043b\u0438\u0432 \u043a \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0434\u0438\u0441\u043a\u043e\u0432.<br \/>  \u041d\u0430\u0448\u0438 \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u043d \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u044f\u0446\u0438\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0431\u0435\u0437 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0430 \u0433\u043e\u043b\u043e\u043c \u0436\u0435\u043b\u0435\u0437\u0435, \u043d\u043e \u044f \u0437\u043d\u0430\u044e \u043c\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432, \u0433\u0434\u0435 \u0445\u0432\u0430\u0442\u0430\u043b\u043e \u0438 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d \u0441 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0441\u043a\u0440\u043e\u043c\u043d\u044b\u043c\u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c\u0438. \u0412\u0441\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0432\u0430\u0448\u0438\u0445 \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u0435\u0439 \u0438 \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u043a.<\/p>\n<p>  <\/p>\n<h2>\u0421\u043f\u0438\u0441\u043e\u043a \u0438 \u0432\u0435\u0440\u0441\u0438\u0438 \u041f\u041e<\/h2>\n<p>  <\/p>\n<div class=\"scrollable-table\">\n<table>\n<tr>\n<th><b>Name<\/b><\/th>\n<th><b>Version<\/b><\/th>\n<\/tr>\n<tr>\n<td>Kubernetes<\/td>\n<td>1.15.1<\/td>\n<\/tr>\n<tr>\n<td>Docker<\/td>\n<td>19.3.1<\/td>\n<\/tr>\n<\/table>\n<\/div>\n<p>  <\/p>\n<p>Kubeadm, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u0432\u0435\u0440\u0441\u0438\u0438 1.14, \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c API \u0432\u0435\u0440\u0441\u0438\u0438 v1alpha3 \u0438 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u0435\u0440\u0435\u0448\u0435\u043b \u043d\u0430 API \u0432\u0435\u0440\u0441\u0438\u0438 v1beta1, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0432 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u043c \u0431\u0443\u0434\u0443\u0449\u0435\u043c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0431\u0443\u0434\u0443 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e v1beta1.<br \/>  \u0418\u0442\u0430\u043a, \u043c\u044b \u0441\u0447\u0438\u0442\u0430\u0435\u043c, \u0447\u0442\u043e \u0443 \u0412\u044b \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043b\u0438 \u043c\u0430\u0448\u0438\u043d\u044b \u0434\u043b\u044f kubernetes \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430. \u041e\u043d\u0438 \u0432\u0441\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0443 \u043f\u043e \u0441\u0435\u0442\u0438, \u0438\u043c\u0435\u044e\u0442 &#171;\u0432\u044b\u0445\u043e\u0434&#187; \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0438 \u043d\u0430 \u043d\u0438\u0445 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 &#171;\u0447\u0438\u0441\u0442\u0430\u044f&#187; \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430.<br \/>  \u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0448\u0430\u0433\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u044f \u0431\u0443\u0434\u0443 \u0443\u0442\u043e\u0447\u043d\u044f\u0442\u044c, \u043d\u0430 \u043a\u0430\u043a\u0438\u0445 \u0438\u043c\u0435\u043d\u043d\u043e \u043c\u0430\u0448\u0438\u043d\u0430\u0445 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0438\u043b\u0438 \u0431\u043b\u043e\u043a \u043a\u043e\u043c\u0430\u043d\u0434. \u0412\u0441\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0438\u0437-\u043f\u043e\u0434 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f root, \u0435\u0441\u043b\u0438 \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043e \u0438\u043d\u043e\u0433\u043e.<br \/>  \u0412\u0441\u0435 \u0444\u0430\u0439\u043b\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u043a\u0440\u0438\u043f\u0442 \u0434\u043b\u044f \u0438\u0445 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0434\u043b\u044f \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u044f \u0432 \u043c\u043e\u0435\u043c <a href=\"https:\/\/github.com\/rjeka\/kubernetes-ceph-percona.git\">github<\/a><br \/>  \u0418\u0442\u0430\u043a, \u043d\u0430\u0447\u043d\u0435\u043c.<\/p>\n<p>  <a name=\"ha-image\"><\/a>  <\/p>\n<h2>\u0421\u0445\u0435\u043c\u0430 HA \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 kubernetes<\/h2>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ch\/mx\/pg\/chmxpgzdyk0bvxwx7-6lawqfmvo.jpeg\"><br \/>  \u041f\u0440\u0438\u043c\u0435\u0440\u043d\u0430\u044f \u0441\u0445\u0435\u043c\u0430 HA \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430. \u0425\u0443\u0434\u043e\u0436\u043d\u0438\u043a \u0438\u0437 \u043c\u0435\u043d\u044f \u0442\u0430\u043a \u0441\u0435\u0431\u0435, \u0435\u0441\u043b\u0438 \u0447\u0435\u0441\u0442\u043d\u043e, \u043d\u043e \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u044e\u0441\u044c \u043e\u0431\u044a\u044f\u0441\u043d\u0438\u0442\u044c \u0432 \u0434\u0432\u0443\u0445 \u0441\u043b\u043e\u0432\u0430\u0445 \u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u043d\u043e, \u043e\u0441\u043e\u0431\u043e \u043d\u0435 \u0443\u0433\u043b\u0443\u0431\u043b\u044f\u044f\u0441\u044c \u0432 \u0442\u0435\u043e\u0440\u0438\u044e.<br \/>  \u0418\u0442\u0430\u043a, \u043d\u0430\u0448 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u0442\u044c \u0438\u0437 \u0442\u0440\u0435\u0445 master \u043d\u043e\u0434 \u0438 \u0442\u0440\u0435\u0445 worker \u043d\u043e\u0434. \u041d\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 master \u043d\u043e\u0434\u0435 kubernetes \u0443 \u043d\u0430\u0441 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c etcd (\u043d\u0430 \u0441\u0445\u0435\u043c\u0435 \u0437\u0435\u043b\u0435\u043d\u044b\u0435 \u0441\u0442\u0440\u0435\u043b\u043e\u0447\u043a\u0438) \u0438 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0435 \u0447\u0430\u0441\u0442\u0438 kubernetes; \u043d\u0430\u0437\u043e\u0432\u0435\u043c \u0438\u0445 \u043e\u0431\u043e\u0431\u0449\u0435\u043d\u043d\u043e \u2014 kubeapi.<br \/>  \u0427\u0435\u0440\u0435\u0437 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 etcd master \u043d\u043e\u0434\u044b \u043e\u0431\u043c\u0435\u043d\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 kubernetes. \u042d\u0442\u0438 \u0436\u0435 \u0430\u0434\u0440\u0435\u0441\u0430 \u044f \u0443\u043a\u0430\u0436\u0443 \u043a\u0430\u043a \u0442\u043e\u0447\u043a\u0438 \u0432\u0445\u043e\u0434\u0430 ingress \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u0434\u043b\u044f \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u0442\u0440\u0430\u0444\u0438\u043a\u0430 (\u043d\u0430 \u0441\u0445\u0435\u043c\u0435 \u043a\u0440\u0430\u0441\u043d\u044b\u0435 \u0441\u0442\u0440\u0435\u043b\u043e\u0447\u043a\u0438)<br \/>  \u041d\u0430 worker \u043d\u043e\u0434\u0430\u0445 \u0443 \u043d\u0430\u0441 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 kubelet, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0441 api \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c kubernetes \u0447\u0435\u0440\u0435\u0437 haproxy \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u043c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 worker \u043d\u043e\u0434\u0435. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u0434\u0440\u0435\u0441\u0430 api \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0434\u043b\u044f kubelet \u044f \u0431\u0443\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u0445\u043e\u0441\u0442 127.0.0.1:6443, \u0430 haproxy \u043f\u043e roundrobin \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u043a\u0438\u0434\u044b\u0432\u0430\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043f\u043e \u0442\u0440\u0435\u043c master \u043d\u043e\u0434\u0430\u043c, \u0442\u0430\u043a\u0436\u0435 \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c master \u043d\u043e\u0434. \u0414\u0430\u043d\u043d\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043d\u0430\u043c \u0441\u043e\u0437\u0434\u0430\u0442\u044c HA, \u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u044b\u0445\u043e\u0434\u0430 \u0438\u0437 \u0441\u0442\u0440\u043e\u044f \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 master \u043d\u043e\u0434, worker \u043d\u043e\u0434\u044b \u0431\u0443\u0434\u0443\u0442 \u0441\u043f\u043e\u043a\u043e\u0439\u043d\u043e \u043f\u043e\u0441\u044b\u043b\u0430\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043d\u0430 \u0434\u0432\u0435 \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u0445\u0441\u044f \u0432 \u0436\u0438\u0432\u044b\u0445 master \u043d\u043e\u0434\u044b.<\/p>\n<p>  <a name=\"begin\"><\/a>  <\/p>\n<h2>\u041f\u0435\u0440\u0435\u0434 \u043d\u0430\u0447\u0430\u043b\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u044b<\/h2>\n<p>  <\/p>\n<p>\u041f\u0435\u0440\u0435\u0434 \u043d\u0430\u0447\u0430\u043b\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0430 \u043a\u0430\u0436\u0434\u0443\u044e \u043d\u043e\u0434\u0443 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043c \u043f\u0430\u043a\u0435\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u044f\u0442\u0441\u044f \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">apt-get update &amp;&amp; apt-get install -y curl apt-transport-https git<\/code><\/pre>\n<p>  <\/p>\n<p>\u041d\u0430 master \u043d\u043e\u0434\u044b \u0441\u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0441 \u0448\u0430\u0431\u043b\u043e\u043d\u0430\u043c\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u043e\u0432<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">sudo -i git clone https:\/\/github.com\/rjeka\/kubernetes-ceph-percona.git<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c, \u0447\u0442\u043e ip \u0430\u0434\u0440\u0435\u0441 \u0445\u043e\u0441\u0442\u043e\u0432 \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0430\u0445 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0442\u043e\u043c\u0443, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u0441\u043b\u0443\u0448\u0430\u0442\u044c API \u0441\u0435\u0440\u0432\u0435\u0440 kubernetes<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">hostname &amp;&amp; hostname -i master01 10.73.71.25<\/code><\/pre>\n<p>  <\/p>\n<p>\u0438 \u0442\u0430\u043a \u0434\u043b\u044f \u0432\u0441\u0435\u0445 master \u043d\u043e\u0434.<\/p>\n<p>  <\/p>\n<p>\u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u0435 SWAP, \u0438\u043d\u0430\u0447\u0435 kubeadm \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0434\u0430\u0432\u0430\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0443<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">[ERROR Swap]: running with swap on is not supported. Please disable swap<\/code><\/pre>\n<p>  <\/p>\n<p>\u041e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043c\u043e\u0436\u043d\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 <\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">swapoff -a<\/code><\/pre>\n<p>  <\/p>\n<p>\u041d\u0435 \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u0437\u0430\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u0444\u0430\u0439\u043b\u0435 \/etc\/fstab<\/p>\n<p>  <a name=\"create-config\"><\/a>  <\/p>\n<h2>\u0417\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0444\u0430\u0439\u043b create-config.sh<\/h2>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u043e\u0432, \u043d\u0443\u0436\u043d\u044b\u0445 \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 kubernetes, \u044f \u043d\u0430\u043a\u0438\u0434\u0430\u043b \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0441\u043a\u0440\u0438\u043f\u0442\u0438\u043a create-config.sh. \u0412\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0432 \u043d\u0435\u043c \u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e 8 \u0441\u0442\u0440\u043e\u0447\u0435\u043a. \u0423\u043a\u0430\u0437\u0430\u0442\u044c IP \u0430\u0434\u0440\u0435\u0441\u0430 \u0438 hostname \u0441\u0432\u043e\u0438\u0445 \u043c\u0430\u0441\u0442\u0435\u0440\u043e\u0432. \u0410 \u0442\u0430\u043a\u0436\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u044c etcd tocken, \u043c\u043e\u0436\u0435\u0442\u0435 \u0435\u0433\u043e \u043d\u0435 \u043c\u0435\u043d\u044f\u0442\u044c. \u042f \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u043d\u0438\u0436\u0435 \u0442\u0443 \u0447\u0430\u0441\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f.<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">#!\/bin\/bash  ####################################### # all masters settings below must be same #######################################  # master01 ip address export K8SHA_IP1=10.73.71.25   # master02 ip address export K8SHA_IP2=10.73.71.26  # master03 ip address export K8SHA_IP3=10.73.71.27  # master01 hostname export K8SHA_HOSTNAME1=master01  # master02 hostname export K8SHA_HOSTNAME2=master02  # master03 hostname export K8SHA_HOSTNAME3=master03  #etcd tocken: export ETCD_TOKEN=9489bf67bdfe1b3ae077d6fd9e7efefd  #etcd version export ETCD_VERSION=\"v3.3.10\" <\/code><\/pre>\n<p>  <a name=\"kernel\"><\/a>  <\/p>\n<h2>\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u044f\u0434\u0440\u0430 \u041e\u0421<\/h2>\n<p>  <\/p>\n<p>\u0414\u0430\u043d\u043d\u044b\u0439 \u0448\u0430\u0433 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c, \u0442\u0430\u043a \u043a\u0430\u043a \u044f\u0434\u0440\u043e \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u043c \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u0438\u0437 back \u043f\u043e\u0440\u0442\u043e\u0432, \u0438 \u0434\u0435\u043b\u0430\u0435\u0442\u0435 \u0412\u044b \u044d\u0442\u043e \u043d\u0430 \u0441\u0432\u043e\u0439 \u0441\u0442\u0440\u0430\u0445 \u0438 \u0440\u0438\u0441\u043a. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0412\u044b \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u0441\u0442\u043e\u043b\u043a\u043d\u0435\u0442\u0435\u0441\u044c \u0441 \u0434\u0430\u043d\u043d\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439, \u0430 \u0435\u0441\u043b\u0438 \u0438 \u0441\u0442\u043e\u043b\u043a\u043d\u0435\u0442\u0435\u0441\u044c, \u0442\u043e \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u044f\u0434\u0440\u043e \u043c\u043e\u0436\u043d\u043e \u0438 \u043f\u043e\u0441\u043b\u0435 \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u044f kubernetes. \u0412 \u043e\u0431\u0449\u0435\u043c, \u0440\u0435\u0448\u0430\u0442\u044c \u0412\u0430\u043c.<br \/>  \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u044f\u0434\u0440\u0430 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0441\u0442\u0430\u0440\u043e\u0433\u043e \u0431\u0430\u0433\u0430 docker, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u044f\u0434\u0440\u0435 linux \u0432\u0435\u0440\u0441\u0438\u0438 4.18. \u0411\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043f\u0440\u043e \u044d\u0442\u043e\u0442 \u0431\u0430\u0433 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c <a href=\"https:\/\/github.com\/kubernetes\/kubernetes\/issues\/64743\">\u0432\u043e\u0442 \u0437\u0434\u0435\u0441\u044c<\/a>. \u0412\u044b\u0440\u0430\u0436\u0430\u043b\u0441\u044f \u0431\u0430\u0433 \u0432 \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0437\u0430\u0432\u0438\u0441\u0430\u043d\u0438\u0438 \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u043d\u0430 \u043d\u043e\u0434\u0430\u0445 kubernetes c \u043e\u0448\u0438\u0431\u043a\u043e\u0439:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">waiting for eth0 to become free. Usage count = 1<\/code><\/pre>\n<p>  <\/p>\n<p>\u0423 \u043c\u0435\u043d\u044f \u043f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u041e\u0421 \u0431\u044b\u043b\u043e \u044f\u0434\u0440\u043e \u0432\u0435\u0440\u0441\u0438\u0438 4.9 <\/p>\n<p>  <\/p>\n<pre><code class=\"bash\">uname -a Linux master01 4.9.0-7-amd64 #1 SMP Debian 4.9.110-3+deb9u2 (2018-08-13) x86_64 GNU\/Linux<\/code><\/pre>\n<p>  <\/p>\n<p>\u041d\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u0434\u043b\u044f kubernetes \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c<br \/>  \u0428\u0430\u0433 \u21161<br \/>  \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c back ports \u0432 source list<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">echo deb http:\/\/ftp.debian.org\/debian stretch-backports main &gt; \/etc\/apt\/sources.list apt-get update apt-cache policy linux-compiler-gcc-6-x86<\/code><\/pre>\n<p>  <\/p>\n<p>\u0428\u0430\u0433 \u21162<br \/>  \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u0430\u043a\u0435\u0442\u043e\u0432<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">apt install -y -t stretch-backports linux-image-amd64 linux-headers-amd64<\/code><\/pre>\n<p>  <\/p>\n<p>\u0428\u0430\u0433 \u21163<br \/>  \u041f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">reboot<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0447\u0442\u043e \u0432\u0441\u0435 \u041e\u041a<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">uname -a Linux master01 4.19.0-0.bpo.5-amd64 #1 SMP Debian 4.19.37-4~bpo9+1 (2019-06-19) x86_64 GNU\/Linux <\/code><\/pre>\n<p>  <a name=\"kubelet\"><\/a>  <\/p>\n<h2> \u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u043d\u043e\u0434 \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 Kubelet, Kubectl, Kubeadm \u0438 docker<\/h2>\n<p>  <\/p>\n<h4>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 Kubelet, Kubectl, Kubeadm<\/h4>\n<p>  <\/p>\n<p>\u0421\u0442\u0430\u0432\u0438\u043c \u043d\u0430 \u0432\u0441\u0435 \u043d\u043e\u0434\u044b \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430, \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e <a href=\"https:\/\/kubernetes.io\/docs\/setup\/production-environment\/tools\/kubeadm\/install-kubeadm\/#\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 kubernetes <\/a><\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">apt-get update &amp;&amp; apt-get install -y apt-transport-https curl curl -s https:\/\/packages.cloud.google.com\/apt\/doc\/apt-key.gpg | apt-key add - cat &lt;&lt;EOF &gt;\/etc\/apt\/sources.list.d\/kubernetes.list deb https:\/\/apt.kubernetes.io\/ kubernetes-xenial main EOF apt-get update apt-get install -y kubelet kubeadm kubectl apt-mark hold kubelet kubeadm kubectl<\/code><\/pre>\n<p>  <\/p>\n<h4>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 Docker<\/h4>\n<p>  <\/p>\n<p>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c docker \u043f\u043e <a href=\"https:\/\/docs.docker.com\/install\/linux\/docker-ce\/debian\/\">\u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0438\u0437 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<br \/>  <\/a><\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">apt-get remove docker docker-engine docker.io containerd runc apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"plaintext\">curl -fsSL https:\/\/download.docker.com\/linux\/debian\/gpg | apt-key add - apt-key fingerprint 0EBFCD88<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"plaintext\">add-apt-repository \\    \"deb [arch=amd64] https:\/\/download.docker.com\/linux\/debian \\    $(lsb_release -cs) \\    stable\"<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"plaintext\">apt-get update apt-get install docker-ce docker-ce-cli containerd.io<\/code><\/pre>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430  \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 Kubelet, Kubectl, Kubeadm \u0438 docker c \u043f\u043e\u043c\u043e\u0449\u044c\u044e ansible<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"plaintext\">git clone https:\/\/github.com\/rjeka\/kubernetes-ceph-percona.git cd kubernetes-ceph-percona\/playbooks vim masters.ini <\/code><\/pre>\n<p>  <\/p>\n<p>\u0412 \u0433\u0440\u0443\u043f\u043f\u0435 masters \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c ip \u043c\u0430\u0441\u0442\u0435\u0440\u043e\u0432.<br \/>  \u0412 \u0433\u0440\u0443\u043f\u043f\u0435 workers \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c ip \u0440\u0430\u0431\u043e\u0447\u0438\u0445 \u043d\u043e\u0434.<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">#\u0415\u0441\u043b\u0438 sudo c \u043f\u0430\u0440\u043e\u043b\u0435\u043c ansible-playbook -i hosts.ini kubelet.yaml -K ansible-playbook -i hosts.ini docker.yaml -K #\u0415\u0441\u043b\u0438 sudo \u0431\u0435\u0437\u043f\u0430\u0440\u043e\u043b\u044c\u043d\u044b\u0439  ansible-playbook -i hosts.ini kubelet.yaml ansible-playbook -i hosts.ini docker.yaml<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0412\u044b \u043f\u043e \u043a\u0430\u043a\u0438\u043c \u043b\u0438\u0431\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0430\u043c \u043d\u0435 \u0445\u043e\u0442\u0438\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c docker, \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u044b\u0435 CRI. \u041f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043e\u0431 \u044d\u0442\u043e\u043c \u043c\u043e\u0436\u043d\u043e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 <a href=\"https:\/\/kubernetes.io\/docs\/setup\/production-environment\/container-runtimes\/\">\u0442\u0443\u0442<\/a>, \u043d\u043e \u044d\u0442\u0430 \u0442\u0435\u043c\u0430 \u0432\u044b\u0445\u043e\u0434\u0438\u0442 \u0437\u0430 \u0440\u0430\u043c\u043a\u0438 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438.<\/p>\n<p>  <a name=\"etcd\"><\/a>  <\/p>\n<h2> \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 ETCD<\/h2>\n<p>  <\/p>\n<p>\u041d\u0435 \u0431\u0443\u0434\u0443 \u0441\u0438\u043b\u044c\u043d\u043e \u0443\u0433\u043b\u0443\u0431\u043b\u044f\u0442\u044c\u0441\u044f \u0432 \u0442\u0435\u043e\u0440\u0438\u044e, \u0432 \u0434\u0432\u0443\u0445 \u0441\u043b\u043e\u0432\u0430\u0445: etcd \u2014 \u044d\u0442\u043e \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0442\u0438\u043f\u0430 \u00ab\u043a\u043b\u044e\u0447-\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u00bb c \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c. etcd \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043d\u0430 GO \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 kubernetes \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u043a\u0430\u043a \u0431\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430. \u0414\u043b\u044f \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0433\u043e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0432 <a href=\"https:\/\/kubernetes.io\/docs\/tasks\/administer-cluster\/configure-upgrade-etcd\/#starting-kubernetes-api-server\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 kubernetes<\/a>.<br \/>  etcd \u043c\u043e\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u043c\u043d\u043e\u0433\u0438\u043c\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438. \u041c\u043e\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c, \u043a\u0430\u043a \u0434\u0435\u043c\u043e\u043d\u0430, \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0432 docker \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u0445, \u043c\u043e\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0434\u0430\u0436\u0435 \u043a\u0430\u043a \u043f\u043e\u0434\u044b \u043a\u0443\u0431\u0435\u0440\u043d\u0435\u0442\u0435\u0441\u0430. \u041c\u043e\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0440\u0443\u043a\u0430\u043c\u0438, \u0430 \u043c\u043e\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e kubeadm (\u044f \u0434\u0430\u043d\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043d\u0435 \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b). \u041c\u043e\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u043d\u0430 \u043c\u0430\u0448\u0438\u043d\u044b \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0438\u043b\u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430.<br \/>  \u042f \u0431\u0443\u0434\u0443 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c etcd \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e \u043d\u0430 master \u043d\u043e\u0434\u044b \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c, \u043a\u0430\u043a \u0434\u0435\u043c\u043e\u043d, \u0447\u0435\u0440\u0435\u0437 systemd, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u044e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u0432 \u0434\u043e\u043a\u0435\u0440\u0435. \u042f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e etcd \u0431\u0435\u0437 TLS, \u0435\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0443\u0436\u0435\u043d TLS \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435\u0441\u044c \u043a \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0441\u0430\u043c\u043e\u0433\u043e etcd \u0438\u043b\u0438<a href=\"https:\/\/v1-13.docs.kubernetes.io\/docs\/setup\/independent\/setup-ha-etcd-with-kubeadm\/\"> kubernetes <\/a><br \/>  \u0422\u0430\u043a\u0436\u0435 \u0432 \u043c\u043e\u0435\u043c github \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043b\u043e\u0436\u0435\u043d ansible-playbook \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 etcd \u0441 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u043c \u0447\u0435\u0440\u0435\u0437 systemd.<\/p>\n<p>  <\/p>\n<h4>\u0412\u0430\u0440\u0438\u0430\u043d\u0442 \u21161<br \/>  \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e, \u0437\u0430\u043f\u0443\u0441\u043a \u0447\u0435\u0440\u0435\u0437 systemd<\/h4>\n<p>  <\/p>\n<p>\u041d\u0430 \u0432\u0441\u0435\u0445 \u043c\u0430\u0441\u0442\u0435\u0440\u0430\u0445: (\u043d\u0430 \u0440\u0430\u0431\u043e\u0447\u0438\u0445 \u043d\u043e\u0434\u0430\u0445 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u044d\u0442\u043e\u0442 \u0448\u0430\u0433 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e)<br \/>  \u0428\u0430\u0433 \u21161<br \/>  \u0421\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c \u0438 \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0435\u043c \u0430\u0440\u0445\u0438\u0432 \u0441 etcd:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">mkdir archives cd archives export etcdVersion=v3.3.10 wget https:\/\/github.com\/coreos\/etcd\/releases\/download\/$etcdVersion\/etcd-$etcdVersion-linux-amd64.tar.gz tar -xvf etcd-$etcdVersion-linux-amd64.tar.gz -C \/usr\/local\/bin\/ --strip-components=1<\/code><\/pre>\n<p>  <\/p>\n<p>\u0428\u0430\u0433 \u21162<br \/>  \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043a\u043e\u043d\u0444\u0438\u0433 \u0444\u0430\u0439\u043b \u0434\u043b\u044f ETCD<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">cd .. .\/create-config.sh etcd<\/code><\/pre>\n<p>  <\/p>\n<p>\u0421\u043a\u0440\u0438\u043f\u0442 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043d\u0430 \u0432\u0445\u043e\u0434 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 etcd, \u0438 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 \u043a\u043e\u043d\u0444\u0438\u0433 \u0444\u0430\u0439\u043b \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 etcd. \u041f\u043e\u0441\u043b\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u043a\u043e\u043d\u0444\u0438\u0433 \u0444\u0430\u0439\u043b \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 etcd.<br \/>  \u0414\u043b\u044f \u0432\u0441\u0435\u0445 \u0434\u0440\u0443\u0433\u0438\u0445 \u043a\u043e\u043d\u0444\u0438\u0433\u043e\u0432, \u0441\u043a\u0440\u0438\u043f\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043e \u0442\u043e\u043c\u0443 \u0436\u0435 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0443. \u041f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043d\u0430 \u0432\u0445\u043e\u0434 \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438 \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u043a\u043e\u043d\u0444\u0438\u0433 \u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435. <\/p>\n<p>  <\/p>\n<p>\u0428\u0430\u0433 \u21163<br \/>  \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c etcd \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0435\u0433\u043e \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">systemctl start etcd<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u0434\u0435\u043c\u043e\u043d\u0430<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">systemctl status etcd \u25cf etcd.service - etcd    Loaded: loaded (\/etc\/systemd\/system\/etcd.service; disabled; vendor preset: enabled)    Active: active (running) since Sun 2019-07-07 02:34:28 MSK; 4min 46s ago      Docs: https:\/\/github.com\/coreos\/etcd  Main PID: 7471 (etcd)     Tasks: 14 (limit: 4915)    CGroup: \/system.slice\/etcd.service            \u2514\u25007471 \/usr\/local\/bin\/etcd --name master01 --data-dir \/var\/lib\/etcd --listen-client-urls http:\/\/0.0.0.0:2379,http:\/\/0.0.0.0:4001 --advertise-client-urls http:\/\/10.73.71.25:2379,http:\/\/10.73.71.  Jul 07 02:34:28 master01 etcd[7471]: b11e73358a31b109 [logterm: 1, index: 3, vote: 0] cast MsgVote for f67dd9aaa8a44ab9 [logterm: 2, index: 5] at term 554 Jul 07 02:34:28 master01 etcd[7471]: raft.node: b11e73358a31b109 elected leader f67dd9aaa8a44ab9 at term 554 Jul 07 02:34:28 master01 etcd[7471]: published {Name:master01 ClientURLs:[http:\/\/10.73.71.25:2379 http:\/\/10.73.71.25:4001]} to cluster d0979b2e7159c1e6 Jul 07 02:34:28 master01 etcd[7471]: ready to serve client requests Jul 07 02:34:28 master01 etcd[7471]: serving insecure client requests on [::]:4001, this is strongly discouraged! Jul 07 02:34:28 master01 systemd[1]: Started etcd. Jul 07 02:34:28 master01 etcd[7471]: ready to serve client requests Jul 07 02:34:28 master01 etcd[7471]: serving insecure client requests on [::]:2379, this is strongly discouraged! Jul 07 02:34:28 master01 etcd[7471]: set the initial cluster version to 3.3 Jul 07 02:34:28 master01 etcd[7471]: enabled capabilities for version 3.3 lines 1-19<\/code><\/pre>\n<p>  <\/p>\n<p>\u0418 \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u0441\u0430\u043c\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">etcdctl cluster-health member 61db137992290fc is healthy: got healthy result from http:\/\/10.73.71.27:2379 member b11e73358a31b109 is healthy: got healthy result from http:\/\/10.73.71.25:2379 member f67dd9aaa8a44ab9 is healthy: got healthy result from http:\/\/10.73.71.26:2379 cluster is healthy  etcdctl member list 61db137992290fc: name=master03 peerURLs=http:\/\/10.73.71.27:2380 clientURLs=http:\/\/10.73.71.27:2379,http:\/\/10.73.71.27:4001 isLeader=false b11e73358a31b109: name=master01 peerURLs=http:\/\/10.73.71.25:2380 clientURLs=http:\/\/10.73.71.25:2379,http:\/\/10.73.71.25:4001 isLeader=false f67dd9aaa8a44ab9: name=master02 peerURLs=http:\/\/10.73.71.26:2380 clientURLs=http:\/\/10.73.71.26:2379,http:\/\/10.73.71.26:4001 isLeader=true<\/code><\/pre>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 etcd \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e c \u043f\u043e\u043c\u043e\u0449\u044c\u044e ansible, \u0437\u0430\u043f\u0443\u0441\u043a \u0447\u0435\u0440\u0435\u0437 systemd<\/b><\/p>\n<div class=\"spoiler_text\">\n<p>\u0421 github \u043a\u043b\u043e\u043d\u0438\u0440\u0443\u0435\u043c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0441 \u043a\u043e\u0434\u043e\u043c \u043d\u0430 \u043c\u0430\u0448\u0438\u043d\u0443, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432\u044b \u0431\u0443\u0434\u0435\u0442\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043f\u043b\u0435\u0439\u0431\u0443\u043a. \u0414\u0430\u043d\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0438\u043c\u0435\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f ssh \u043f\u043e \u043a\u043b\u044e\u0447\u0443 \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0430 \u043d\u0430\u0448\u0435\u0433\u043e \u0431\u0443\u0434\u0443\u0449\u0435\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430.<\/p>\n<p>  <\/p>\n<pre><code class=\"bash\">git clone https:\/\/github.com\/rjeka\/kubernetes-ceph-percona.git cd kubernetes-ceph-percona\/playbooks vim masters.ini <\/code><\/pre>\n<p>  <\/p>\n<p>\u0412 \u0433\u0440\u0443\u043f\u043f\u0435 masters \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c ip \u043c\u0430\u0441\u0442\u0435\u0440\u043e\u0432.<br \/>  etcd_version \u2014 \u0432\u0435\u0440\u0441\u0438\u044f etcd. \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043c\u043e\u0436\u043d\u043e \u043d\u0430 <a href=\"https:\/\/github.com\/etcd-io\/etcd\/releases\">\u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043a\u0435 etcd \u0432 github<\/a>. \u041d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u044c\u0438 \u0431\u044b\u043b\u0430 \u0432\u0435\u0440\u0441\u0438\u044f v3.3.13 \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e v3.3.10.<br \/>  etcdToken \u2014 \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u0436\u0435, \u0438\u043b\u0438 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0439.<br \/>  \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043f\u043b\u0435\u0439\u0431\u0443\u043a \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439<\/p>\n<p>  <\/p>\n<pre><code class=\"bash\">#\u0415\u0441\u043b\u0438 sudo c \u043f\u0430\u0440\u043e\u043b\u0435\u043c ansible-playbook -i hosts.ini -l masters etcd.yaml -K BECOME password: &lt;sudo \u043f\u0430\u0440\u043e\u043b\u044c&gt; #\u0415\u0441\u043b\u0438 sudo \u0431\u0435\u0437\u043f\u0430\u0440\u043e\u043b\u044c\u043d\u044b\u0439 ansible-playbook -i hosts.ini -l masters etcd.yaml<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c etcd \u0432 \u0434\u043e\u043a\u0435\u0440\u0435, \u0442\u043e \u043f\u043e\u0434 \u0441\u043f\u043e\u0439\u043b\u0435\u0440\u043e\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f. <\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 etcd  c \u043f\u043e\u043c\u043e\u0449\u044c\u044e docker-compose, \u0437\u0430\u043f\u0443\u0441\u043a \u0432 \u0434\u043e\u043a\u0435\u0440<\/b><\/p>\n<div class=\"spoiler_text\">\n<p>\u0414\u0430\u043d\u043d\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043d\u0430 \u0432\u0441\u0435\u0445 \u043c\u0430\u0441\u0442\u0435\u0440 \u043d\u043e\u0434\u0430\u0445 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430.<br \/>  \u0421 github \u043a\u043b\u043e\u043d\u0438\u0440\u0443\u0435\u043c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0441 \u043a\u043e\u0434\u043e\u043c<\/p>\n<p>  <\/p>\n<pre><code class=\"bash\">git clone https:\/\/github.com\/rjeka\/kubernetes-ceph-percona.git cd kubernetes-ceph-percona<\/code><\/pre>\n<p>  <\/p>\n<p>etcd_version \u2014 \u0432\u0435\u0440\u0441\u0438\u044f etcd. \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043c\u043e\u0436\u043d\u043e \u043d\u0430 <a href=\"https:\/\/github.com\/etcd-io\/etcd\/releases\">\u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043a\u0435 etcd \u0432 github<\/a>. \u041d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u044c\u0438 \u0431\u044b\u043b\u0430 \u0432\u0435\u0440\u0441\u0438\u044f v3.3.13 \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e v3.3.10.<br \/>  etcdToken \u2014 \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u0436\u0435, \u0438\u043b\u0438 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0439.<\/p>\n<p>  <\/p>\n<p>\u0421\u0442\u0430\u0432\u0438\u043c docker-compose<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">apt-get install -y docker-compose<\/code><\/pre>\n<p>  <\/p>\n<p>\u0413\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u043a\u043e\u043d\u0444\u0438\u0433<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">.\/create-config.sh docker<\/code><\/pre>\n<p>  <\/p>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 etcd \u0432 \u0434\u043e\u043a\u0435\u0440\u0435<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">docker-compose --file etcd-docker\/docker-compose.yaml up -d<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0447\u0442\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u043f\u043e\u0434\u043d\u044f\u043b\u0438\u0441\u044c<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">docker ps<\/code><\/pre>\n<p>  <\/p>\n<p>\u0418 \u0441\u0442\u0430\u0442\u0443\u0441 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 etcd<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">root@master01:~\/kubernetes-ceph-percona# docker exec -ti etcd etcdctl cluster-health member 61db137992290fc is healthy: got healthy result from http:\/\/10.73.71.27:2379 member b11e73358a31b109 is healthy: got healthy result from http:\/\/10.73.71.25:2379 member f67dd9aaa8a44ab9 is healthy: got healthy result from http:\/\/10.73.71.26:2379  cluster is healthy root@master01:~\/kubernetes-ceph-percona# docker exec -ti etcd etcdctl member list 61db137992290fc: name=etcd3 peerURLs=http:\/\/10.73.71.27:2380 clientURLs=http:\/\/10.73.71.27:2379,http:\/\/10.73.71.27:4001 isLeader=false b11e73358a31b109: name=etcd1 peerURLs=http:\/\/10.73.71.25:2380 clientURLs=http:\/\/10.73.71.25:2379,http:\/\/10.73.71.25:4001 isLeader=true f67dd9aaa8a44ab9: name=etcd2 peerURLs=http:\/\/10.73.71.26:2380 clientURLs=http:\/\/10.73.71.26:2379,http:\/\/10.73.71.26:4001 isLeader=false<\/code><\/pre>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0447\u0442\u043e \u0442\u043e \u043f\u043e\u0448\u043b\u043e \u043d\u0435 \u0442\u0430\u043a \u0442\u043e <\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">docker logs etcd<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <a name=\"master-one\"><\/a>  <\/p>\n<h2>\u0417\u0430\u043f\u0443\u0441\u043a \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043c\u0430\u0441\u0442\u0435\u0440\u0430 kubernetes<\/h2>\n<p>  <\/p>\n<p>\u041f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433 \u0434\u043b\u044f kubeadmin <\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">.\/create-config.sh kubeadm<\/code><\/pre>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0420\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u043c \u043a\u043e\u043d\u0444\u0438\u0433 \u0434\u043b\u044f kubeadm<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"plaintext\">apiVersion: kubeadm.k8s.io\/v1beta1 kind: InitConfiguration localAPIEndpoint:   advertiseAddress: 10.73.71.25 #\u0410\u0434\u0440\u0435\u0441 \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0441\u043b\u0443\u0448\u0430\u0435\u0442 API-\u0441\u0435\u0440\u0432\u0435\u0440 --- apiVersion: kubeadm.k8s.io\/v1beta1 kind: ClusterConfiguration kubernetesVersion: stable #\u0412\u0435\u0440\u0441\u0438\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c apiServer: #\u0421\u043f\u0438\u0441\u043e\u043a \u0445\u043e\u0441\u0442\u043e\u0432 \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u0445 kubeadm \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b   certSANs:   - 127.0.0.1   - 10.73.71.25   - 10.73.71.26   - 10.73.71.27 controlPlaneEndpoint: 10.73.71.25 #\u0430\u0434\u0440\u0435\u0441 \u043c\u0430\u0441\u0442\u0435\u0440\u0430 \u0438\u043b\u0438 \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 etcd: #\u0430\u0434\u0440\u0435\u0441\u0430 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 etc   external:     endpoints:     - http:\/\/10.73.71.25:2379      - http:\/\/10.73.71.26:2379     - http:\/\/10.73.71.27:2379 networking:   podSubnet: 192.168.0.0\/16 # \u043f\u043e\u0434\u0441\u0435\u0442\u044c \u0434\u043b\u044f \u043f\u043e\u0434\u043e\u0432, \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e CNI \u043e\u043d\u0430 \u0441\u0432\u043e\u044f.<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043f\u0440\u043e \u043f\u043e\u0434\u0441\u0435\u0442\u0438 CNI \u043c\u043e\u0436\u043d\u043e \u0432 <a href=\"https:\/\/kubernetes.io\/docs\/setup\/production-environment\/tools\/kubeadm\/create-cluster-kubeadm\/#pod-network\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 kubernetes<\/a><br \/>  \u042d\u0442\u043e \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u043a\u043e\u043d\u0444\u0438\u0433. \u0414\u043b\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0441 \u0442\u0440\u0435\u043c\u044f \u043c\u0430\u0441\u0442\u0435\u0440\u0430\u043c\u0438 \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0435\u0433\u043e \u043f\u043e\u0434 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0441\u0432\u043e\u0435\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0412\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c 2 \u043c\u0430\u0441\u0442\u0435\u0440\u0430, \u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u043a\u0430\u0436\u0438\u0442\u0435 \u0432 certSANs \u0434\u0432\u0430 \u0430\u0434\u0440\u0435\u0441\u0430.<br \/>  \u0412\u0441\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0430 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 <a href=\"https:\/\/godoc.org\/k8s.io\/kubernetes\/cmd\/kubeadm\/app\/apis\/kubeadm\/v1beta1\">\u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0438 API kubeadm<\/a>.<\/p>\n<\/div>\n<\/div>\n<p>  <\/p>\n<p>\u0418\u043d\u0438\u0446\u0438\u0438\u0440\u0443\u0435\u043c \u043f\u0435\u0440\u0432\u044b\u0439 \u043c\u0430\u0441\u0442\u0435\u0440<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">kubeadm init  --config=kubeadmin\/kubeadm-init.yaml<\/code><\/pre>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 kubeadm \u043e\u0442\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0431\u0435\u0437 \u043e\u0448\u0438\u0431\u043e\u043a, \u0442\u043e \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0432\u044b\u0432\u043e\u0434:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">You can now join any number of control-plane nodes by copying certificate authorities and service account keys on each node and then running the following as root:    kubeadm join 10.73.71.25:6443 --token ivwoap.259retezqf34amx8 \\     --discovery-token-ca-cert-hash sha256:b5c93e32457c8e6478782ff62e8ef77acf72738dda59cd603cdf4821abe12ca3 \\     --control-plane  Then you can join any number of worker nodes by running the following on each as root:  kubeadm join 10.73.71.25:6443 --token ivwoap.259retezqf34amx8 \\     --discovery-token-ca-cert-hash sha256:b5c93e32457c8e6478782ff62e8ef77acf72738dda59cd603cdf4821abe12ca3<\/code><\/pre>\n<p>  <a name=\"callica\"><\/a>  <\/p>\n<h2>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 CNI Calico<\/h2>\n<p>  <\/p>\n<p>\u041f\u0440\u0438\u0448\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u0435\u0442\u044c, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430\u0448\u0438 \u043f\u043e\u0434\u044b. \u042f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e calico, \u0435\u0435 \u0438 \u0431\u0443\u0434\u0435\u043c \u0441\u0442\u0430\u0432\u0438\u0442\u044c.<br \/>  \u0410 \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043c \u0434\u043e\u0441\u0442\u0443\u043f \u0434\u043b\u044f kubelet. \u0412\u0441\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043d\u0430 master01<br \/>  \u0415\u0441\u043b\u0438 \u0432\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442\u0435 \u0438\u0437-\u043f\u043e\u0434 root<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">export KUBECONFIG=\/etc\/kubernetes\/admin.conf<\/code><\/pre>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0438\u0437-\u043f\u043e\u0434 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">mkdir -p $HOME\/.kube sudo cp -i \/etc\/kubernetes\/admin.conf $HOME\/.kube\/config sudo chown $(id -u):$(id -g) $HOME\/.kube\/config<\/code><\/pre>\n<p>  <\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u043c \u0441\u043e \u0441\u0432\u043e\u0435\u0433\u043e \u043d\u043e\u0443\u0442\u0431\u0443\u043a\u0430 \u0438\u043b\u0438 \u043b\u044e\u0431\u043e\u0439 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0441\u043a\u043e\u043f\u0438\u0440\u0443\u0439\u0442\u0435 \u0444\u0430\u0439\u043b \/etc\/kubernetes\/admin.conf \u043d\u0430 \u0441\u0432\u043e\u0439 \u043d\u043e\u0443\u0442\u0431\u0443\u043a \u0438\u043b\u0438 \u043b\u044e\u0431\u0443\u044e \u0434\u0440\u0443\u0433\u0443\u044e \u043c\u0430\u0448\u0438\u043d\u0443 \u0432 $HOME\/.kube\/config<\/p>\n<p>  <\/p>\n<p>\u0421\u0442\u0430\u0432\u0438\u043c CNI <a href=\"https:\/\/kubernetes.io\/docs\/setup\/production-environment\/tools\/kubeadm\/create-cluster-kubeadm\/#pod-network\">\u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 kubernetes<br \/>  <\/a><\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">kubectl apply -f https:\/\/docs.projectcalico.org\/v3.8\/manifests\/calico.yaml<\/code><\/pre>\n<p>  <\/p>\n<p>\u0416\u0434\u0435\u043c, \u043f\u043e\u043a\u0430 \u0432\u0441\u0435 \u043f\u043e\u0434\u044b \u043f\u043e\u0434\u043d\u0438\u043c\u0443\u0442\u0441\u044f <\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">watch -n1 kubectl get pods -A NAMESPACE     NAME                                       READY   STATUS    RESTARTS   AGE kube-system   calico-kube-controllers-59f54d6bbc-psr2z   1\/1     Running   0          96s kube-system   calico-node-hm49z                          1\/1     Running   0          96s kube-system   coredns-5c98db65d4-svcx9                   1\/1     Running   0          77m kube-system   coredns-5c98db65d4-zdlb8                   1\/1     Running   0          77m kube-system   kube-apiserver-master01                    1\/1     Running   0          76m kube-system   kube-controller-manager-master01           1\/1     Running   0          77m kube-system   kube-proxy-nkdqn                           1\/1     Running   0          77m kube-system   kube-scheduler-master01                    1\/1     Running   0          77m<\/code><\/pre>\n<p>  <a name=\"mastes-other\"><\/a>  <\/p>\n<h2>\u0417\u0430\u043f\u0443\u0441\u043a \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0438 \u0442\u0440\u0435\u0442\u044c\u0435\u0433\u043e \u043c\u0430\u0441\u0442\u0435\u0440\u0430 kubernetes<\/h2>\n<p>  <\/p>\n<p>\u041f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c, \u043a\u0430\u043a \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c master02 \u0438 master03, \u043d\u0443\u0436\u043d\u043e \u0441 master01 \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043b kubeadm \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430. \u042f \u0431\u0443\u0434\u0443 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 scp<br \/>  \u041d\u0430 master01<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">export master02=10.73.71.26 export master03=10.73.71.27 scp -r \/etc\/kubernetes\/pki $master02:\/etc\/kubernetes\/  scp -r \/etc\/kubernetes\/pki $master03:\/etc\/kubernetes\/<\/code><\/pre>\n<p>  <\/p>\n<p>\u041d\u0430 master02 \u0438 master03<br \/>  \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043a\u043e\u043d\u0444\u0438\u0433 \u0434\u043b\u044f kubeadm<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">.\/create-config.sh kubeadm<\/code><\/pre>\n<p>  <\/p>\n<p>\u0418 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 master02 \u0438 master03<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">kubeadm init  --config=kubeadmin\/kubeadm-init.yaml<\/code><\/pre>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0413\u043b\u044e\u043a\u0438 \u043f\u0440\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430\u0445 !!!!<\/b><\/p>\n<div class=\"spoiler_text\">\n<p>\u0412 \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u0435\u043d\u0435 \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e kubernetes v1.13.5 \u0438 calico v3.3. \u0418 \u0443 \u043c\u0435\u043d\u044f \u0442\u0430\u043a\u0438\u0445 \u0433\u043b\u044e\u043a\u043e\u0432 \u043d\u0435 \u0431\u044b\u043b\u043e.<br \/>  \u041d\u043e \u043f\u0440\u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0435 \u0441\u0442\u0430\u0442\u044c\u0438 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0432\u0435\u0440\u0441\u0438\u0438 stable (\u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u044c\u0438 \u044d\u0442\u043e \u0431\u044b\u043b\u0430 v1.15.1 kubernetes \u0438 \u0432\u0435\u0440\u0441\u0438\u044f 3.8 callico) \u044f \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0441\u044f \u0441 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u044b\u0440\u0430\u0436\u0430\u043b\u0430\u0441\u044c \u0432 \u043e\u0448\u0438\u0431\u043a\u0438 \u0441\u0442\u0430\u0440\u0442\u0430 CNI<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">root@master01:~\/kubernetes-ceph-percona# kubectl get pods  -A -w NAMESPACE     NAME                                       READY   STATUS              RESTARTS   AGE kube-system   calico-kube-controllers-658558ddf8-t6gfs   0\/1     ContainerCreating   0          11s kube-system   calico-node-7td8g                          1\/1     Running             0          11s kube-system   calico-node-dthg5                          0\/1     CrashLoopBackOff    1          11s kube-system   calico-node-tvhkq                          0\/1     CrashLoopBackOff    1          11s<\/code><\/pre>\n<p>  <\/p>\n<p>\u042d\u0442\u043e \u0433\u043b\u044e\u043a calico daemon set, \u0432 \u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u043a\u043e\u0433\u0434\u0430 \u0443 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432<br \/>  \u041d\u0430 githab \u0435\u0441\u0442\u044c issue \u043f\u043e \u0434\u0430\u043d\u043d\u043e\u043c\u0443 \u0433\u043b\u044e\u043a\u0443 <a href=\"https:\/\/github.com\/projectcalico\/calico\/issues\/2720\">https:\/\/github.com\/projectcalico\/calico\/issues\/2720<\/a><br \/>  \u0420\u0435\u0448\u0430\u0435\u0442\u0441\u044f \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c daemon set calico-node \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0432 env \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 IP_AUTODETECTION_METHOD<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">kubectl edit -n kube-system ds calico-node<\/code><\/pre>\n<p>  <\/p>\n<p>\u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 IP_AUTODETECTION_METHOD \u0441 \u0438\u043c\u0435\u043d\u0435\u043c \u0412\u0430\u0448\u0435\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043c\u0430\u0441\u0442\u0435\u0440; \u0432 \u043c\u043e\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e ens19<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">- name: IP_AUTODETECTION_METHOD   value: ens19<\/code><\/pre>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/xe\/pq\/7h\/xepq7hbpjwhgowfk0hkc6-ryw8a.png\"><br \/>  \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u0447\u0442\u043e \u0432\u0441\u0435 \u043d\u043e\u0434\u044b \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u0430\u043b\u0438 \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\"># kubectl get nodes NAME       STATUS   ROLES    AGE   VERSION master01   Ready    master   28m   v1.15.1 master02   Ready    master   26m   v1.15.1 master03   Ready    master   18m   v1.15.1<\/code><\/pre>\n<p>  <\/p>\n<p>\u0418 \u0447\u0442\u043e \u0436\u0438\u0432\u0430 calica<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\"># kubectl get pods -A -o wide | grep calico kube-system   calico-kube-controllers-59f54d6bbc-5lxgn   1\/1     Running   0          27m kube-system   calico-node-fngpz                          1\/1     Running   1          24m kube-system   calico-node-gk7rh                          1\/1     Running   0          8m55s kube-system   calico-node-w4xtt                          1\/1     Running   0          25m<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <a name=\"worknodes\"><\/a>  <\/p>\n<h2>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c worker \u043d\u043e\u0434\u044b \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440<\/h2>\n<p>  <\/p>\n<p>\u041d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0443 \u043d\u0430\u0441 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u043b\u0430\u0441\u0442\u0435\u0440, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u044b \u0442\u0440\u0438 master \u043d\u043e\u0434\u044b. \u041d\u043e master \u043d\u043e\u0434\u044b \u2014 \u044d\u0442\u043e \u043c\u0430\u0448\u0438\u043d\u044b, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 api, scheduler \u0438 \u043f\u0440\u043e\u0447\u0438\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 kubernetes. \u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043c\u044b \u043c\u043e\u0433\u043b\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u043f\u043e\u0434\u044b, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u044b \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0435 worker \u043d\u043e\u0434\u044b.<br \/>  \u0415\u0441\u043b\u0438 \u0412\u044b \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u044b \u0432 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u0445, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043f\u043e\u0434\u044b \u0438 \u043d\u0430 master \u043d\u043e\u0434\u0430\u0445.\u041d\u043e \u044f \u043b\u0438\u0447\u043d\u043e \u043d\u0435 \u0441\u043e\u0432\u0435\u0442\u0443\u044e \u0442\u0430\u043a \u0434\u0435\u043b\u0430\u0442\u044c. <\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0417\u0430\u043f\u0443\u0441\u043a \u043f\u043e\u0434\u043e\u0432 \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u043d\u043e\u0434\u0430\u0445<\/b><\/p>\n<div class=\"spoiler_text\">\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u043a \u043f\u043e\u0434\u043e\u0432 \u043d\u0430 master \u043d\u043e\u0434\u0430\u0445, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u043d\u0430 \u043b\u044e\u0431\u043e\u043c \u0438\u0437 \u043c\u0430\u0441\u0442\u0435\u0440\u043e\u0432<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">kubectl taint nodes --all node-role.kubernetes.io\/master-<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <\/p>\n<p>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043d\u0430 worker \u043d\u043e\u0434\u044b kubelet, kubeadm, kubectl \u0438 \u0434\u043e\u043a\u0435\u0440 \u043a\u0430\u043a \u043d\u0430 master \u043d\u043e\u0434\u0430\u0445<\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 kubelet, kubeadm, kubectl \u0438 \u0434\u043e\u043a\u0435\u0440<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"plaintext\">apt-get update &amp;&amp; apt-get install -y apt-transport-https curl curl -s https:\/\/packages.cloud.google.com\/apt\/doc\/apt-key.gpg | apt-key add - cat &lt;&lt;EOF &gt;\/etc\/apt\/sources.list.d\/kubernetes.list deb https:\/\/apt.kubernetes.io\/ kubernetes-xenial main EOF apt-get update apt-get install -y kubelet kubeadm kubectl apt-mark hold kubelet kubeadm kubectl<\/code><\/pre>\n<p>  <\/p>\n<h4>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 Docker<\/h4>\n<p>  <\/p>\n<p>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c docker \u043f\u043e <a href=\"https:\/\/docs.docker.com\/install\/linux\/docker-ce\/debian\/\">\u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0438\u0437 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<br \/>  <\/a><\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">apt-get remove docker docker-engine docker.io containerd runc apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"plaintext\">curl -fsSL https:\/\/download.docker.com\/linux\/debian\/gpg | apt-key add - apt-key fingerprint 0EBFCD88<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"plaintext\">add-apt-repository \\    \"deb [arch=amd64] https:\/\/download.docker.com\/linux\/debian \\    $(lsb_release -cs) \\    stable\"<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"plaintext\">apt-get update apt-get install docker-ce docker-ce-cli containerd.io<\/code><\/pre>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430  \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 Kubelet, Kubectl, Kubeadm \u0438 docker c \u043f\u043e\u043c\u043e\u0449\u044c\u044e ansible<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"plaintext\">git clone https:\/\/github.com\/rjeka\/kubernetes-ceph-percona.git cd kubernetes-ceph-percona\/playbooks vim masters.ini <\/code><\/pre>\n<p>  <\/p>\n<p>\u0412 \u0433\u0440\u0443\u043f\u043f\u0435 masters \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c ip \u043c\u0430\u0441\u0442\u0435\u0440\u043e\u0432.<br \/>  \u0412 \u0433\u0440\u0443\u043f\u043f\u0435 workers \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c ip \u0440\u0430\u0431\u043e\u0447\u0438\u0445 \u043d\u043e\u0434.<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">#\u0415\u0441\u043b\u0438 sudo c \u043f\u0430\u0440\u043e\u043b\u0435\u043c ansible-playbook -i hosts.ini kubelet.yaml -K ansible-playbook -i hosts.ini docker.yaml -K #\u0415\u0441\u043b\u0438 sudo \u0431\u0435\u0437\u043f\u0430\u0440\u043e\u043b\u044c\u043d\u044b\u0439  ansible-playbook -i hosts.ini kubelet.yaml ansible-playbook -i hosts.ini docker.yaml<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p>  <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0440\u0430 \u0432\u0440\u0435\u043c\u044f \u0432\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043a \u0442\u043e\u0439 \u0441\u0442\u0440\u043e\u0447\u043a\u0435, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043d\u0430\u043c \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043b kubeadm \u043f\u0440\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u043c\u0430\u0441\u0442\u0435\u0440 \u043d\u043e\u0434\u044b.<br \/>  \u0423 \u043c\u0435\u043d\u044f \u043e\u043d\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a. <\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">kubeadm join 10.73.71.25:6443 --token ivwoap.259retezqf34amx8 \\     --discovery-token-ca-cert-hash sha256:b5c93e32457c8e6478782ff62e8ef77acf72738dda59cd603cdf4821abe12ca3<\/code><\/pre>\n<p>  <\/p>\n<p>\u041d\u0443\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 worker \u043d\u043e\u0434\u0435.<br \/>  \u0415\u0441\u043b\u0438 \u0412\u044b \u043d\u0435 \u0437\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u0442\u043e\u043a\u0435\u043d, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">kubeadm token create --print-join-command --ttl=0<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a kubeadm \u043e\u0442\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u0412\u0430\u0448\u0430 \u043d\u043e\u0432\u0430\u044f \u043d\u043e\u0434\u0430 \u0432\u0432\u0435\u0434\u0435\u043d\u0430 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0438 \u0433\u043e\u0442\u043e\u0432\u0430 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">This node has joined the cluster: * Certificate signing request was sent to apiserver and a response was received. * The Kubelet was informed of the new secure connection details.  Run 'kubectl get nodes' on the control-plane to see this node join the cluster.<\/code><\/pre>\n<p>  <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 <\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">root@master01:~# kubectl get nodes NAME         STATUS   ROLES    AGE     VERSION master01     Ready    master   10d     v1.15.1 master02     Ready    master   10d     v1.15.1 master03     Ready    master   10d     v1.15.1 worknode01   Ready    &lt;none&gt;   5m44s   v1.15.1 worknode02   Ready    &lt;none&gt;   59s     v1.15.1 worknode03   Ready    &lt;none&gt;   51s     v1.15.1<\/code><\/pre>\n<p>  <a name=\"haproxy\"><\/a>  <\/p>\n<h2>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c haproxy \u043d\u0430 worknodes<\/h2>\n<p>  <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u0438\u043c\u0435\u0435\u043c \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0441 \u0442\u0440\u0435\u043c\u044f master \u043d\u043e\u0434\u0430\u043c\u0438 \u0438 \u0442\u0440\u0435\u043c\u044f worker \u043d\u043e\u0434\u0430\u043c\u0438.<br \/>  \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u043d\u0430\u0448\u0438 worker \u043d\u043e\u0434\u044b \u043d\u0435 \u0438\u043c\u0435\u044e\u0442 HA \u0440\u0435\u0436\u0438\u043c\u0430.<br \/>  \u0415\u0441\u043b\u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u043a\u043e\u043d\u0444\u0438\u0433 \u0444\u0430\u0439\u043b kubelet, \u0442\u043e \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u043d\u0430\u0448\u0438 worker \u043d\u043e\u0434\u044b \u043e\u0431\u0440\u0430\u0449\u0430\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043a \u043e\u0434\u043d\u043e\u0439 master \u043d\u043e\u0434\u0435 \u0438\u0437 \u0442\u0440\u0435\u0445. <\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">root@worknode01:~# cat \/etc\/kubernetes\/kubelet.conf | grep server:     server: https:\/\/10.73.71.27:6443<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412 \u043c\u043e\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e master03. \u041f\u0440\u0438 \u0434\u0430\u043d\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0430\u0434\u0435\u043d\u0438\u044f master03, worker \u043d\u043e\u0434\u0430 \u043f\u043e\u0442\u0435\u0440\u044f\u0435\u0442 \u0441\u0432\u044f\u0437\u044c \u0441 API \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430. \u0427\u0442\u043e\u0431\u044b \u043d\u0430\u0448 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0441\u0442\u0430\u043b \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e HA, \u043c\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u0432\u043e\u0440\u043a\u0435\u0440\u043e\u0432 Load Balancer (Haproxy), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e round robin \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u043a\u0438\u0434\u044b\u0432\u0430\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043d\u0430 \u0442\u0440\u0438 master \u043d\u043e\u0434\u044b, \u0430 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0430\u0445 kubelet \u043d\u0430 worker \u043d\u043e\u0434\u0430\u0445 \u043c\u044b \u043f\u043e\u043c\u0435\u043d\u044f\u0435\u043c \u0430\u0434\u0440\u0435\u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043d\u0430 127.0.0.1:6443<br \/>  \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c HAProxy \u043d\u0430 \u043a\u0430\u0436\u0434\u0443\u044e worker \u043d\u043e\u0434\u0443.<br \/>  <a href=\"https:\/\/haproxy.debian.net\/\">\u0415\u0441\u0442\u044c \u043d\u0435\u043f\u043b\u043e\u0445\u0430\u044f \u0448\u043f\u0430\u0440\u0433\u0430\u043b\u043a\u0430 \u043f\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435<\/a><\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">curl https:\/\/haproxy.debian.net\/bernat.debian.org.gpg | \\       apt-key add - echo deb http:\/\/haproxy.debian.net stretch-backports-2.0 main | \\       tee \/etc\/apt\/sources.list.d\/haproxy.list apt-get update apt-get install haproxy=2.0.\\*<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a HAproxy, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u043a\u043e\u043d\u0444\u0438\u0433.<br \/>  \u0415\u0441\u043b\u0438 \u043d\u0430 worker \u043d\u043e\u0434\u0430\u0445 \u043d\u0435\u0442 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u0441 \u043a\u043e\u043d\u0444\u0438\u0433 \u0444\u0430\u0439\u043b\u0430\u043c\u0438, \u0442\u043e \u043a\u043b\u043e\u043d\u0438\u0440\u0443\u0435\u043c \u0435\u0433\u043e<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">git clone https:\/\/github.com\/rjeka\/kubernetes-ceph-percona.git cd kubernetes-ceph-percona\/<\/code><\/pre>\n<p>  <\/p>\n<p>\u0418 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u043a\u0440\u0438\u043f\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u0430 \u0441 \u0444\u043b\u0430\u0433\u043e\u043c haproxy<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">.\/create-config.sh haproxy<\/code><\/pre>\n<p>  <\/p>\n<p>\u0421\u043a\u0440\u0438\u043f\u0442 \u0441\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0443\u0435\u0442 \u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442 haproxy.<br \/>  \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c, \u0447\u0442\u043e haproxy \u0441\u0442\u0430\u043b \u0441\u043b\u0443\u0448\u0430\u0442\u044c \u043f\u043e\u0440\u0442 6443.<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">root@worknode01:~\/kubernetes-ceph-percona# netstat -alpn | grep 6443 tcp        0      0 127.0.0.1:6443          0.0.0.0:*               LISTEN      30675\/haproxy tcp        0      0 10.73.75.241:6443       0.0.0.0:*               LISTEN      30675\/haproxy<\/code><\/pre>\n<p>  <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c kubelet, \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u043e\u0431\u0440\u0430\u0449\u0430\u043b\u0441\u044f \u043d\u0430 localhost \u0432\u043c\u0435\u0441\u0442\u043e master \u043d\u043e\u0434\u044b. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u043e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 server \u0432 \u0444\u0430\u0439\u043b\u0430\u0445 \/etc\/kubernetes\/kubelet.conf \u0438 \/etc\/kubernetes\/bootstrap-kubelet.conf \u043d\u0430 \u0432\u0441\u0435\u0445 worker \u043d\u043e\u0434\u0430\u0445.<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">vim  \/etc\/kubernetes\/kubelet.conf vim nano \/etc\/kubernetes\/bootstrap-kubelet.conf<\/code><\/pre>\n<p>  <\/p>\n<p>\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 server \u0434\u043e\u043b\u0436\u043d\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u0439 \u0432\u0438\u0434:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">server: https:\/\/127.0.0.1.6443<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0432\u043d\u0435\u0441\u0435\u043d\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441\u043b\u0443\u0436\u0431\u044b kubelet \u0438 docker <\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">systemctl restart kubelet &amp;&amp; systemctl restart docker<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c, \u0447\u0442\u043e \u0432\u0441\u0435 \u043d\u043e\u0434\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0438\u0441\u043f\u0440\u0430\u0432\u043d\u043e<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">kubectl get nodes NAME         STATUS   ROLES    AGE     VERSION master01     Ready    master   29m     v1.15.1 master02     Ready    master   27m     v1.15.1 master03     Ready    master   26m     v1.15.1 worknode01   Ready    &lt;none&gt;   25m     v1.15.1 worknode02   Ready    &lt;none&gt;   3m15s   v1.15.1 worknode03   Ready    &lt;none&gt;   3m16s   v1.15.1<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u043e\u043a\u0430 \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u043d\u0435\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 HA. \u041d\u043e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 kubelet \u043d\u0430 \u043f\u0435\u0440\u0432\u043e\u0439 master \u043d\u043e\u0434\u0435 \u0438 \u0443\u0431\u0435\u0434\u0438\u0442\u0441\u044f, \u0447\u0442\u043e \u043d\u0430\u0448 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u043e\u0441\u0442\u0430\u043b\u0441\u044f \u0434\u0435\u0435\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u044b\u043c.<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">systemctl stop kubelet &amp;&amp; systemctl stop docker<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0441\u043e \u0432\u0442\u043e\u0440\u043e\u0439 master \u043d\u043e\u0434\u044b<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">root@master02:~# kubectl get nodes NAME         STATUS     ROLES    AGE   VERSION master01     NotReady   master   15h   v1.15.1 master02     Ready      master   15h   v1.15.1 master03     Ready      master   15h   v1.15.1 worknode01   Ready      &lt;none&gt;   15h   v1.15.1 worknode02   Ready      &lt;none&gt;   15h   v1.15.1 worknode03   Ready      &lt;none&gt;   15h   v1.15.1<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412\u0441\u0435 \u043d\u043e\u0434\u044b \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0438\u0440\u0443\u044e\u0442 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e, \u043a\u0440\u043e\u043c\u0435 \u0442\u043e\u0439, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u044b \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438 \u0441\u043b\u0443\u0436\u0431\u044b.<br \/>  \u041d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0435\u043c \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0441\u043b\u0443\u0436\u0431\u044b kubernetes \u043d\u0430 \u043f\u0435\u0440\u0432\u043e\u0439 master \u043d\u043e\u0434\u0435<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">systemctl start kubelet &amp;&amp; systemctl start docker<\/code><\/pre>\n<p>  <a name=\"ingress\"><\/a>  <\/p>\n<h2>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 Ingress \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430<\/h2>\n<p>  <\/p>\n<p>Ingress \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u2014 \u044d\u0442\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 Kubernetes, c \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u0434\u043e \u043d\u0430\u0448\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0441\u043d\u0430\u0440\u0443\u0436\u0438. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0435\u0441\u0442\u044c \u0432 <a href=\"https:\/\/kubernetes.io\/docs\/concepts\/services-networking\/ingress-controllers\/\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 Kuberbnetes<\/a>. Ingress \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0435\u0440\u043e\u0432 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e\u0435 \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e, \u044f \u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0441\u044c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u043c \u043e\u0442 Nginx. \u041f\u0440\u043e \u0435\u0433\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u044f \u0438 \u0431\u0443\u0434\u0443 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c. \u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u043f\u043e \u0440\u0430\u0431\u043e\u0442\u0435, \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 Ingress \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u043e\u0442 Nginx \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043d\u0430 <a href=\"https:\/\/kubernetes.github.io\/ingress-nginx\/\">\u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u0441\u0430\u0439\u0442\u0435 <\/a><\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c \u043a \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435, \u0432\u0441\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0441 master01.<br \/>  \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0441\u0430\u043c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">kubectl apply -f https:\/\/raw.githubusercontent.com\/kubernetes\/ingress-nginx\/master\/deploy\/static\/mandatory.yaml<\/code><\/pre>\n<p>  <\/p>\n<p>\u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u2014 \u0441\u0435\u0440\u0432\u0438\u0441, \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0438\u043d\u0433\u0440\u0435\u0441\u0441<br \/>  \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043c \u043a\u043e\u043d\u0444\u0438\u0433<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">.\/create-config.sh ingress<\/code><\/pre>\n<p>  <\/p>\n<p>\u0418 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043c \u0435\u0433\u043e \u0432 \u043d\u0430\u0448 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 <\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">kubectl apply -f ingress\/service-nodeport.yaml<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c, \u0447\u0442\u043e \u043d\u0430\u0448 Ingress \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 \u043d\u0443\u0436\u043d\u044b\u0445 \u0430\u0434\u0440\u0435\u0441\u0430\u0445 \u0438 \u0441\u043b\u0443\u0448\u0430\u0435\u0442 \u043d\u0443\u0436\u043d\u044b\u0435 \u043f\u043e\u0440\u0442\u044b <\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\"># kubectl get svc -n ingress-nginx NAME            TYPE       CLUSTER-IP    EXTERNAL-IP                           PORT(S)                      AGE ingress-nginx   NodePort   10.99.35.95   10.73.71.25,10.73.71.26,10.73.71.27   80:31669\/TCP,443:31604\/TCP   10m<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"plaintext\"> kubectl describe svc -n ingress-nginx ingress-nginx Name:                     ingress-nginx Namespace:                ingress-nginx Labels:                   app.kubernetes.io\/name=ingress-nginx                           app.kubernetes.io\/part-of=ingress-nginx Annotations:              kubectl.kubernetes.io\/last-applied-configuration:                             {\"apiVersion\":\"v1\",\"kind\":\"Service\",\"metadata\":{\"annotations\":{},\"labels\":{\"app.kubernetes.io\/name\":\"ingress-nginx\",\"app.kubernetes.io\/par... Selector:                 app.kubernetes.io\/name=ingress-nginx,app.kubernetes.io\/part-of=ingress-nginx Type:                     NodePort IP:                       10.99.35.95 External IPs:             10.73.71.25,10.73.71.26,10.73.71.27 Port:                     http  80\/TCP TargetPort:               80\/TCP NodePort:                 http  31669\/TCP Endpoints:                192.168.142.129:80 Port:                     https  443\/TCP TargetPort:               443\/TCP NodePort:                 https  31604\/TCP Endpoints:                192.168.142.129:443 Session Affinity:         None External Traffic Policy:  Cluster Events:                   &lt;none&gt;<\/code><\/pre>\n<p>  <a name=\"dashboard\"><\/a>  <\/p>\n<h2>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 Web UI (Dashboard)<\/h2>\n<p>  <\/p>\n<p>\u0423 Kubernetes \u0435\u0441\u0442\u044c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 Web UI, \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u043d\u043e\u0433\u0434\u0430 \u0443\u0434\u043e\u0431\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u0433\u043b\u044f\u043d\u0443\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0438\u043b\u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0435\u0433\u043e \u0447\u0430\u0441\u0442\u0435\u0439. \u042f \u0432 \u0441\u0432\u043e\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u0435 \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e daschboard \u0434\u043b\u044f \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e\u0439 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0438 \u0434\u0435\u043f\u043b\u043e\u044f \u0438\u043b\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0447\u0430\u0441\u0442\u0435\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430.<br \/>  \u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 <a href=\"https:\/\/kubernetes.io\/docs\/tasks\/access-application-cluster\/web-ui-dashboard\/\">\u0441\u0430\u0439\u0442\u0435 kubernetes<\/a><br \/>  \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430. \u042f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e, 2.0 \u043f\u043e\u043a\u0430 \u0447\u0442\u043e \u043d\u0435 \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b.<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">#\u0421\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f kubectl apply -f https:\/\/raw.githubusercontent.com\/kubernetes\/dashboard\/v1.10.1\/src\/deploy\/recommended\/kubernetes-dashboard.yaml #\u0412\u0435\u0440\u0441\u0438\u044f 2.0 kubectl apply -f https:\/\/raw.githubusercontent.com\/kubernetes\/dashboard\/v2.0.0-beta1\/aio\/deploy\/recommended.yaml<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043c\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438 \u043f\u0430\u043d\u0435\u043b\u044c \u0432 \u043d\u0430\u0448 \u043a\u043b\u0430\u0441\u0442\u0435\u0440, \u043f\u0430\u043d\u0435\u043b\u044c \u0441\u0442\u0430\u043b\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">http:\/\/localhost:8001\/api\/v1\/namespaces\/kubernetes-dashboard\/services\/https:kubernetes-dashboard:\/proxy\/.<\/code><\/pre>\n<p>  <\/p>\n<p>\u041d\u043e \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043d\u0430 \u043d\u0435\u0435 \u043f\u043e\u043f\u0430\u0441\u0442\u044c, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b \u043f\u0440\u043e\u0431\u0440\u043e\u0441\u0438\u0442\u044c \u043f\u043e\u0440\u0442\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e kubectl proxy. \u0414\u043b\u044f \u043c\u0435\u043d\u044f \u044d\u0442\u0430 \u0441\u0445\u0435\u043c\u0430 \u043e\u0447\u0435\u043d\u044c \u043d\u0435 \u0443\u0434\u043e\u0431\u043d\u0430\u044f. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0438\u0437\u043c\u0435\u043d\u044e service \u043f\u0430\u043d\u0435\u043b\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f, \u0434\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b dashboard \u0441\u0442\u0430\u043b \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043d\u0430 \u0430\u0434\u0440\u0435\u0441\u0435 \u043b\u044e\u0431\u043e\u0439 \u043d\u043e\u0434\u044b \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u043d\u0430 \u043f\u043e\u0440\u0442\u0443 30443. \u0415\u0441\u0442\u044c \u0435\u0449\u0435 \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u0434\u043e \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0447\u0435\u0440\u0435\u0437 ingress. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u044f \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u044e \u044d\u0442\u043e\u0442 \u0441\u043f\u043e\u0441\u043e\u0431 \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f\u0445.<br \/>  \u0414\u043b\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u0434\u0435\u043f\u043b\u043e\u0439 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u0430<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">kubectl apply -f dashboard\/service-nodeport.yaml<\/code><\/pre>\n<p>  <\/p>\n<p>\u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0441\u043e\u0437\u0434\u0430\u0442\u044c admin \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 token \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0443 \u0447\u0435\u0440\u0435\u0437 \u0434\u0430\u0448\u0431\u043e\u0440\u0434<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">kubectl apply -f dashboard\/rbac.yaml kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043b\u043e\u0433\u0438\u043d\u0438\u0442\u0441\u044f \u0432 \u043f\u0430\u043d\u0435\u043b\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 <a href=\"https:\/\/10.73.71.25:30443\">https:\/\/10.73.71.25:30443<\/a><br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/p7\/zu\/8q\/p7zu8qv47mwdsmdydtvyo7gs_y4.png\"><br \/>  \u0413\u043b\u0430\u0432\u043d\u044b\u0439 \u044d\u043a\u0440\u0430\u043d dashboard<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/h2\/ks\/jq\/h2ksjq_7egqatf4ulnl0zkwqvqk.png\"><\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u0437\u0434\u0440\u0430\u0432\u043b\u044f\u044e! \u0415\u0441\u043b\u0438 \u0412\u044b \u0434\u043e\u0448\u043b\u0438 \u0434\u043e \u044d\u0442\u043e\u0433\u043e \u0448\u0430\u0433\u0430, \u0442\u043e \u0443 \u0412\u0430\u0441 \u0435\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 HA \u043a\u043b\u0430\u0441\u0442\u0435\u0440 kubernetes, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0433\u043e\u0442\u043e\u0432 \u0434\u043b\u044f \u0434\u0435\u043f\u043b\u043e\u044f \u0412\u0430\u0448\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439.<br \/>  Kubernetes \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u043e\u0441\u0442\u044f\u043a\u043e\u043c \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0439 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f. \u041f\u0440\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u043d\u0438\u0445 \u044f \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u044e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f\u0445.<br \/>  \u041d\u0430 \u0432\u0441\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u044e\u0441\u044c \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445, \u043d\u0430 GitHub, \u0438\u043b\u0438 \u0432 \u043b\u044e\u0431\u044b\u0445 \u0441\u043e\u0446\u0441\u0435\u0442\u044f\u0445, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0445 \u0432 \u043c\u043e\u0435\u043c \u043f\u0440\u043e\u0444\u0438\u043b\u0435.<br \/>  C \u0443\u0432\u0430\u0436\u0435\u043d\u0438\u0435\u043c, \u0415\u0432\u0433\u0435\u043d\u0438\u0439 \u0420\u043e\u0434\u0438\u043e\u043d\u043e\u0432.<\/p>\n<\/div>\n<p>               <script class=\"js-mediator-script\">!function(e){function t(t,n){if(!(n in e)){for(var r,a=e.document,i=a.scripts,o=i.length;o--;)if(-1!==i[o].src.indexOf(t)){r=i[o];break}if(!r){r=a.createElement(\"script\"),r.type=\"text\/javascript\",r.async=!0,r.defer=!0,r.src=t,r.charset=\"UTF-8\";var d=function(){var e=a.getElementsByTagName(\"script\")[0];e.parentNode.insertBefore(r,e)};\"[object Opera]\"==e.opera?a.addEventListener?a.addEventListener(\"DOMContentLoaded\",d,!1):e.attachEvent(\"onload\",d):d()}}}t(\"\/\/mediator.mail.ru\/script\/2820404\/\",\"_mediator\")}(window);<\/script>     <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\/462473\/\"> https:\/\/habr.com\/ru\/post\/462473\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html js-mediator-article\">\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/aq\/dx\/l3\/aqdxl3a5akxfl3rh9b7bzc_kqji.jpeg\"><\/p>\n<p>  <\/p>\n<h4>\u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435 \u0443\u0432\u0430\u0436\u0430\u0435\u043c\u044b\u0435 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0438 \u0425\u0430\u0431\u0440\u0430!<\/h4>\n<p>  <\/p>\n<p>\u042d\u0442\u043e\u0439 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0435\u0439 \u044f \u0445\u043e\u0447\u0443 \u043d\u0430\u0447\u0430\u0442\u044c \u0446\u0438\u043a\u043b \u0441\u0442\u0430\u0442\u0435\u0439 \u043f\u0440\u043e \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u044b \u043e\u0440\u043a\u0435\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c\u0438 Kubernetes, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u0433\u043e\u0442\u043e\u0432\u0430 \u043a \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0443 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439.<br \/>  \u042f \u0445\u043e\u0447\u0443 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u043e \u0442\u043e, \u043a\u0430\u043a \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043a\u043b\u0430\u0441\u0442\u0435\u0440 Kubernetes, \u043d\u043e \u0438 \u043f\u0440\u043e \u0442\u043e, \u043a\u0430\u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u043f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438, \u043a\u0430\u043a \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u043d\u0435\u0433\u043e \u0443\u0434\u043e\u0431\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b. <\/p>\n<p>  <\/p>\n<h2>\u0414\u0430\u043d\u043d\u044b\u0439 \u0446\u0438\u043a\u043b \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u0442\u044c \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u0438\u0437 \u0447\u0435\u0442\u044b\u0440\u0435\u0445 \u0441\u0442\u0430\u0442\u0435\u0439:<\/h2>\n<p>  <\/p>\n<ol>\n<li>\u0412 \u043f\u0435\u0440\u0432\u043e\u0439 \u0438\u0437 \u043d\u0438\u0445 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u043d\u0430 \u0433\u043e\u043b\u043e\u0435 \u0436\u0435\u043b\u0435\u0437\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 kubernetes, \u043a\u0430\u043a \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u0434\u0430\u0448\u0431\u043e\u0440\u0434 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043d\u0435\u043c\u0443, \u043a\u0430\u043a \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c ingress \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440.<\/li>\n<li>\u0412\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 Ceph \u0438 \u043a\u0430\u043a \u043d\u0430\u0447\u0430\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c RBD \u0442\u043e\u043c\u0430 \u0432 \u043d\u0430\u0448\u0435\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 Kubernetes. \u0422\u0430\u043a\u0436\u0435 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0437\u0430\u0442\u0440\u043e\u043d\u0443 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0432\u0438\u0434\u044b \u0441\u0442\u043e\u0440\u0430\u0434\u0436\u0435\u0439 (storages) \u0438 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u044e local-storage. \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u043d\u0430 \u0431\u0430\u0437\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 CEPH \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 S3<\/li>\n<li>\u0412 \u0442\u0440\u0435\u0442\u044c\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u0432 \u043d\u0430\u0448\u0435\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 Kubernetes \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 MySql, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u2014 Percona XtraDB Cluster on Kubernetes. \u0418 \u0442\u0430\u043a\u0436\u0435 \u043e\u043f\u0438\u0448\u0443 \u0432\u0441\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043c\u044b \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0438\u0441\u044c, \u043a\u043e\u0433\u0434\u0430 \u0440\u0435\u0448\u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0442\u0438 \u0411\u0414 \u0432 kubernetes.<\/li>\n<li>\u0412 \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u044e\u0441\u044c \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0432\u0441\u0435 \u0432\u043c\u0435\u0441\u0442\u0435 \u0438 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u043a\u0430\u043a \u0437\u0430\u0434\u0435\u043f\u043b\u043e\u0438\u0442\u044c \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0411\u0414 \u0438 \u0442\u043e\u043c\u0430 ceph. \u0420\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c ingress \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043d\u0430\u0448\u0435\u043c\u0443 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e \u0438\u0437\u0432\u043d\u0435 \u0438 \u0441\u0435\u0440\u0432\u0438\u0441 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0437\u0430\u043a\u0430\u0437\u0430 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432 \u043e\u0442 Let&#8217;s Encrypt. \u0415\u0449\u0435 \u2014 \u043a\u0430\u043a \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u0432 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438. \u0422\u0430\u043a\u0436\u0435 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0437\u0430\u0442\u0440\u043e\u043d\u0435\u043c \u0442\u0435\u043c\u0443 RBAC \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0434\u043e \u043f\u0430\u043d\u0435\u043b\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f. \u0420\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u0432 \u0434\u0432\u0443\u0445 \u0441\u043b\u043e\u0432\u0430\u0445 \u043f\u0440\u043e Helm \u0438 \u0435\u0433\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443.<br \/>  \u0415\u0441\u043b\u0438 \u0412\u0430\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0439, \u0442\u043e \u2014 \u0434\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c !<br \/>\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-293944","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/293944","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=293944"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/293944\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=293944"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=293944"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=293944"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}