{"id":379586,"date":"2024-06-25T03:04:51","date_gmt":"2024-06-25T03:04:51","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=379586"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=379586","title":{"rendered":"<span>\u0423\u0447\u0438\u043c\u0441\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 Kubernetes \u0447\u0435\u0440\u0435\u0437 \u0437\u0430\u043f\u0443\u0441\u043a \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442!\u00a0\u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u041f\u0430\u0432\u0435\u043b \u0410\u0433\u0430\u043b\u0435\u0446\u043a\u0438\u0439, \u044f \u0432\u0435\u0434\u0443\u0449\u0438\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u044e\u043d\u0438\u0442\u0430 Platform as a Service \u0432 \u0410\u0432\u0438\u0442\u043e. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u043d\u0430\u0443\u0447\u0438\u043c\u0441\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0438 \u043e\u0442\u043b\u0430\u0436\u0438\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432 Kubernetes \u0438 \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u043c\u0441\u044f \u0441 \u0434\u0432\u0443\u043c\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438: \u0443\u0442\u0438\u043b\u0438\u0442\u043e\u0439 kubectl \u0438 \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u044b\u043c \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u043e\u043c k9s.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/fd5\/68d\/fac\/fd568dfac227261e68c85cb74e632c87.jpg\" width=\"780\" height=\"440\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/fd5\/68d\/fac\/fd568dfac227261e68c85cb74e632c87.jpg\" data-blurred=\"true\"\/><\/figure>\n<h2>\u0417\u0430\u0434\u0430\u0447\u0430: \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0434\u0432\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432 Kubernetes<\/h2>\n<p>\u041c\u044b \u043f\u043e\u043f\u044b\u0442\u0430\u0435\u043c\u0441\u044f \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0432 Kubernetes \u0434\u0432\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0434\u0440\u0443\u0433 \u0441 \u0434\u0440\u0443\u0433\u043e\u043c \u0447\u0435\u0440\u0435\u0437 \u0432\u044b\u0437\u043e\u0432\u044b API.\u00a0<\/p>\n<p><strong>\u041f\u0435\u0440\u0432\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u2014 app1<\/strong> \u2014 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0444\u0440\u0430\u0437\u043e\u0439 <code>Hello World<\/code>\u00a0 \u0438 \u0442\u0435\u043a\u0443\u0449\u0438\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u0412\u0440\u0435\u043c\u044f app1 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0438\u0437 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f app2. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043e\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043a app2 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e env-\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <code>APP2_URL<\/code> \u2014 \u0432 \u043d\u0435\u0439 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u043d \u0430\u0434\u0440\u0435\u0441 \u043a\u043e \u0432\u0442\u043e\u0440\u043e\u043c\u0443 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e.<\/p>\n<pre><code class=\"go\">func main() { app2URL, ok := os.LookupEnv(\"APP2_URL\") if !ok { slog.Error(\"missing APP2_URL\") os.Exit(1) }  getTimeURL := fmt.Sprintf(\"%s\/time\", app2URL) http.HandleFunc(\"\/hello\", func(w http.ResponseWriter, r *http.Request) { slog.Info(\"Received request to \/hello endpoint\") app2Resp, err := http.DefaultClient.Get(getTimeURL)  if erp != nil { w.WriteHeader(http.StatusInternalServerError) fmt.Fprintf(w, \"App2 (%) is not available: %v\", getTimeURL, err) return } defer app2Resp.Body.Close() respTime, _ := io.ReadAll(app2Resp.Body) w.WriteHeader(http.StatusOK) fmt.Fprintf(w, \"Hello World at %\",, string(respTime)) }) slog.Info(\"Starting server on port 8890\") err := http.ListenAndServe(\":8890\", nil) if err != nil { slog.Error(\"Application 1 finished with an error\", \"error\", err) } }<\/code><\/pre>\n<p><strong>\u0412\u0442\u043e\u0440\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u2014 app2<\/strong> \u2014 \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0432 \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u0432\u044b\u0437\u043e\u0432 \u0441\u0432\u043e\u0435\u0433\u043e API\/time.\u00a0<\/p>\n<p>\u0412\u043e\u0442 \u043a\u043e\u0434 app2:\u00a0<\/p>\n<pre><code class=\"go\">func main() { http.HandleFunc(\"\/time\", func(w http.ResponseWriter, r *http.Request) { slog.Info(\"Received request to \/time endpoint\") w.WriteHeader(http.StatusOK) fmt.Fprint(w, time.Now().String()) })  slog.Info(\"Starting server 2 on port 8891\")  err := http.ListenAndServe(\":8891\", nil) if err != nil { slog.Error(\"Application 2 finished with an error\", \"error\", err) } }<\/code><\/pre>\n<h2>\u041f\u0440\u043e\u0431\u0443\u0435\u043c \u0437\u0430\u0434\u0435\u043f\u043b\u043e\u0438\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440<\/h2>\n<p>\u041d\u0430\u043c \u043d\u0430\u0434\u043e \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 Dockerfiles:\u00a0<\/p>\n<p><strong>\u0414\u043b\u044f \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f:<\/strong><\/p>\n<pre><code class=\"bash\">FROM golang:1.21-alpine  COPY . \/app  WORKDIR \/app  RUN ls -la . &amp;&amp; \\     go install . &amp;&amp; \\     which kubeapp1  ENTRYPOINT [\"\/go\/bin\/kubeapp1\"]<\/code><\/pre>\n<p><strong>\u0414\u043b\u044f \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f:<\/strong><\/p>\n<pre><code class=\"bash\">FROM golang:1.21-alpine  COPY . \/app  WORKDIR \/app  RUN ls -la . &amp;&amp; \\     go install . &amp;&amp; \\     which kubeapp2  ENTRYPOINT [\"\/go\/bin\/kubeapp2\"]<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0441\u043e\u0431\u0435\u0440\u0451\u043c \u0438\u0445 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b <code>docker build<\/code>:<\/p>\n<pre><code class=\"bash\"># \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 app1:  $ docker build -t kubeapp1 .  # \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 app2:  $ docker build -t kubeapp2 .<\/code><\/pre>\n<p>\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0432 \u043d\u0430\u0448\u0435\u0439 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 <a href=\"https:\/\/habr.com\/ru\/companies\/avito\/articles\/799689\/\">\u0441\u0442\u0430\u0442\u044c\u0435<\/a> \u043e \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 Kubernetes.<\/p>\n<p>\u0423\u0431\u0435\u0434\u0438\u043c\u0441\u044f, \u0447\u0442\u043e \u043e\u043d\u0438 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0432 \u043d\u0430\u0448\u0435\u043c docker-\u0445\u043e\u0441\u0442\u0435, \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 <code>docker images<\/code>, \u043e\u043d\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0432 Docker.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/3a7\/a2a\/76e\/3a7a2a76edbef6914cb114adc39fb436.png\" alt=\"\u0412 \u0434\u043e\u043a\u0435\u0440\u0435 \u043b\u0435\u0436\u0430\u0442 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u043e\u0431\u043e\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439: kuberapp2 \u0438 kubeapp1\" title=\"\u0412 \u0434\u043e\u043a\u0435\u0440\u0435 \u043b\u0435\u0436\u0430\u0442 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u043e\u0431\u043e\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439: kuberapp2 \u0438 kubeapp1\" width=\"1600\" height=\"477\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3a7\/a2a\/76e\/3a7a2a76edbef6914cb114adc39fb436.png\"\/><\/p>\n<div><figcaption>\u0412 \u0434\u043e\u043a\u0435\u0440\u0435 \u043b\u0435\u0436\u0430\u0442 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u043e\u0431\u043e\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439: kuberapp2 \u0438 kubeapp1<\/figcaption><\/div>\n<\/figure>\n<p>\u0417\u0430\u0434\u0435\u043f\u043b\u043e\u0438\u043c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440. \u041d\u0438\u0436\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u044b <code>deployments.yaml<\/code> \u0434\u043b\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u043d\u043e \u0432\u043d\u0435\u0441\u0435\u043d\u044b \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438. \u041f\u043e\u0437\u0436\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0438\u0445 \u0443\u0441\u0442\u0440\u0430\u043d\u0438\u0442\u044c.<\/p>\n<p><strong>\u0414\u043b\u044f app1:<\/strong><\/p>\n<pre><code class=\"go\">apiVersion: v1 kind: Namespace metadata:   name: app1 --- apiVersion: apps\/v1 kind: Deployment metadata:   name: kubeapp1   namespace: app1   labels:     app: kubeapp1 spec:   selector:     matchLabels:       app: kubeapp1   replicas: 10   strategy:     type: RollingUpdate   template:     metadata:       namespace: app1       labels:         app: kubeapp1     spec:       containers:         - name: app           image: kubeapp1           imagePullPolicy: Never           ports:             - containerPort: 8890<\/code><\/pre>\n<p><strong>\u0414\u043b\u044f app2:<\/strong><\/p>\n<pre><code class=\"go\">apiVersion: v1 kind: Namespace metadata:   name: app2 --- apiVersion: apps\/v1 kind: Deployment metadata:   name: kubeapp2   namespace: app2   labels:     app: kubeapp2 spec:   selector:     matchLabels:       app: kubeapp2   replicas: 18   strategy:     type: RollingUpdate   template:     metadata:       namespace: app2       labels:         app: kubeapp2     spec:       containers:         - name: app           image: kubeapp22           imagePullPolicy: Never           ports:             - containerPort: 8891 <\/code><\/pre>\n<ol>\n<li>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043c \u0434\u0435\u043f\u043b\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 <code>kubectl apply<\/code>:<\/p>\n<\/li>\n<\/ol>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/72e\/57f\/677\/72e57f67742938a3e52cc02b2c0e52d4.png\" alt=\"\u0414\u0435\u043f\u043b\u043e\u0438\u043c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\" title=\"\u0414\u0435\u043f\u043b\u043e\u0438\u043c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\" width=\"1218\" height=\"316\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/72e\/57f\/677\/72e57f67742938a3e52cc02b2c0e52d4.png\"\/><\/p>\n<div><figcaption>\u0414\u0435\u043f\u043b\u043e\u0438\u043c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440<\/figcaption><\/div>\n<\/figure>\n<ol start=\"2\">\n<li>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043b\u0438 \u043f\u0435\u0440\u0432\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u043e\u0434\u043e\u0432 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b <code>kubectl get pods -n app1<\/code>:<\/p>\n<\/li>\n<\/ol>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/8e6\/d7d\/c0c\/8e6d7dc0c96c0996daf20d04930221a9.png\" alt=\"\u0412\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u043f\u043e\u0434\u044b \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u044b, \u043d\u043e \u0432\u0438\u0441\u044f\u0442 \u0432 \u0441\u0442\u0430\u0442\u0443\u0441\u0435 Error\" title=\"\u0412\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u043f\u043e\u0434\u044b \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u044b, \u043d\u043e \u0432\u0438\u0441\u044f\u0442 \u0432 \u0441\u0442\u0430\u0442\u0443\u0441\u0435 Error\" width=\"1426\" height=\"740\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8e6\/d7d\/c0c\/8e6d7dc0c96c0996daf20d04930221a9.png\"\/><\/p>\n<div><figcaption>\u0412\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u043f\u043e\u0434\u044b \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u044b, \u043d\u043e \u0432\u0438\u0441\u044f\u0442 \u0432 \u0441\u0442\u0430\u0442\u0443\u0441\u0435 Error<\/figcaption><\/div>\n<\/figure>\n<h2>\u0412\u044b\u044f\u0441\u043d\u044f\u0435\u043c, \u043f\u043e\u0447\u0435\u043c\u0443 \u043f\u043e\u0434\u044b \u0432\u0438\u0441\u044f\u0442 \u0432 \u043e\u0448\u0438\u0431\u043a\u0435<\/h2>\n<p><strong>\u041e\u0448\u0438\u0431\u043a\u0430 \u0432 app1<\/strong><\/p>\n<ol>\n<li>\n<p>\u0412\u044b\u044f\u0441\u043d\u0438\u043c \u043f\u0440\u0438\u0447\u0438\u043d\u0443 \u043e\u0448\u0438\u0431\u043a\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b\u00a0<code>kubectl describe -n app1 pod\/kubeapp1-5fcd8b8d9f-brwhh<\/code>,\u00a0\u0433\u0434\u0435 <code>kubeapp1-5fcd8b8d9f-brwhh<\/code> \u2014 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u0434\u0430.<\/p>\n<\/li>\n<\/ol>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/723\/143\/299\/723143299679845dbc0d2bda782c8dbb.png\" alt=\"\u041a\u043e\u043c\u0430\u043d\u0434\u0430 describe \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0432\u0441\u0435 \u0438\u0432\u0435\u043d\u0442\u044b \u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0430\u0445\" title=\"\u041a\u043e\u043c\u0430\u043d\u0434\u0430 describe \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0432\u0441\u0435 \u0438\u0432\u0435\u043d\u0442\u044b \u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0430\u0445\" width=\"1600\" height=\"297\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/723\/143\/299\/723143299679845dbc0d2bda782c8dbb.png\"\/><\/p>\n<div><figcaption>\u041a\u043e\u043c\u0430\u043d\u0434\u0430 describe \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0432\u0441\u0435 \u0438\u0432\u0435\u043d\u0442\u044b \u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0430\u0445<\/figcaption><\/div>\n<\/figure>\n<p>\u0417\u0434\u0435\u0441\u044c \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0438 \u0442\u0443\u0442 \u0436\u0435 \u043f\u0430\u0434\u0430\u0435\u0442. \u041d\u0430 \u044d\u0442\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 <code>Back-off restarting failed container app in pod...<\/code><\/p>\n<ol start=\"2\">\n<li>\n<p>\u041d\u0430\u0439\u0434\u0451\u043c \u043f\u0440\u0438\u0447\u0438\u043d\u0443 \u043f\u0430\u0434\u0435\u043d\u0438\u044f \u0432 \u043b\u043e\u0433\u0430\u0445. \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b <code>kubectl logs -n app1 pod\/kubeapp1-5fcd8b8d9f-brwhh<\/code><\/p>\n<\/li>\n<\/ol>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/8d0\/9fe\/32f\/8d09fe32f9995ba038a93caae8f8b0ad.png\" width=\"1340\" height=\"110\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8d0\/9fe\/32f\/8d09fe32f9995ba038a93caae8f8b0ad.png\"\/><\/figure>\n<p>\u041a\u0430\u043a \u043c\u044b \u0432\u0438\u0434\u0438\u043c, \u043e\u0448\u0438\u0431\u043a\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043c\u044b \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043b\u0438 env-\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e <code>APP2_URL<\/code>.<\/p>\n<p><strong>\u041e\u0448\u0438\u0431\u043a\u0430 \u0432 app2<\/strong><\/p>\n<ol>\n<li>\n<p>\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u043f\u043e\u0434\u044b \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 <code>kubectl get pods -n app2. <\/code>\u0412\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u0432 app2 \u0442\u043e\u0436\u0435 \u043f\u043b\u043e\u0445\u043e, \u043d\u043e \u0443 \u0435\u0433\u043e \u043f\u043e\u0434\u043e\u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u0430\u0442\u0443\u0441 \u2014 <code>ErrImageNeverPull<\/code>. <\/p>\n<\/li>\n<\/ol>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/dd1\/e76\/493\/dd1e76493ca4d67ce91e4c8b654e220d.png\" alt=\"\u041f\u043e\u0434\u044b app2\" title=\"\u041f\u043e\u0434\u044b app2\" width=\"1600\" height=\"1009\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/dd1\/e76\/493\/dd1e76493ca4d67ce91e4c8b654e220d.png\"\/><\/p>\n<div><figcaption>\u041f\u043e\u0434\u044b app2<\/figcaption><\/div>\n<\/figure>\n<ol>\n<li>\n<p>\u0412\u044b\u044f\u0441\u043d\u0438\u043c \u043f\u0440\u0438\u0447\u0438\u043d\u0443 \u0442\u0430\u043a\u043e\u0433\u043e \u0441\u0442\u0430\u0442\u0443\u0441\u0430\u00a0 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b\u00a0<code>kubectl describe -n app1 pod\/kubeapp1-5fcd8b8d9f-brwhh<\/code><\/p>\n<\/li>\n<\/ol>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/a60\/080\/db3\/a60080db347c2e27c581f9b6a705934c.png\" alt=\"\u041a\u043e\u043c\u0430\u043d\u0434\u0430 describe \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0432\u0441\u0435 \u0438\u0432\u0435\u043d\u0442\u044b \u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0430\u0445\" title=\"\u041a\u043e\u043c\u0430\u043d\u0434\u0430 describe \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0432\u0441\u0435 \u0438\u0432\u0435\u043d\u0442\u044b \u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0430\u0445\" width=\"1600\" height=\"172\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a60\/080\/db3\/a60080db347c2e27c581f9b6a705934c.png\"\/><\/p>\n<div><figcaption>\u041a\u043e\u043c\u0430\u043d\u0434\u0430 describe \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0432\u0441\u0435 \u0438\u0432\u0435\u043d\u0442\u044b \u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0430\u0445<\/figcaption><\/div>\n<\/figure>\n<p>\u041e\u0448\u0438\u0431\u043a\u0430 \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0441\u043f\u0443\u043b\u043b\u0438\u0442\u044c \u043f\u043e\u0434 <code>kubeapp22<\/code>. \u0422\u0430\u043a \u0438 \u0435\u0441\u0442\u044c: \u043d\u0430\u0448 \u043e\u0431\u0440\u0430\u0437 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <code>kubeapp2<\/code>.\u00a0 \u041e\u0448\u0438\u0431\u043a\u0430 \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442, \u0447\u0442\u043e \u043e\u0431\u0440\u0430\u0437 \u0441 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c <code>kubeapp22<\/code> \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0438 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u043a\u0430\u0447\u0435\u043d \u0438\u0437 registry. <\/p>\n<p>\u042d\u0442\u043e \u0438\u0437-\u0437\u0430 \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u0435 \u2014 \u0432\u043c\u0435\u0441\u0442\u043e <code>kubeapp22<\/code> \u043d\u0430\u0434\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c <code>kubeapp2<\/code>.<\/p>\n<h2>\u0427\u0438\u043d\u0438\u043c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443: \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u043e\u0448\u0438\u0431\u043a\u0443 \u0432 app2<\/h2>\n<p>\u0412 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 \u0441\u0442\u043e\u0438\u043b\u043e \u0431\u044b \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u0430 \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u0432 Kubernetes, \u043d\u043e \u0432 \u0446\u0435\u043b\u044f\u0445 \u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043a\u0438 \u043c\u044b \u043f\u043e\u043f\u0440\u0430\u0432\u0438\u043c \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e \u043f\u0440\u044f\u043c\u043e \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u043a\u0443\u0431\u0430.\u00a0<\/p>\n<p>\u041f\u043e\u0434\u044b \u043d\u0435 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u0435\u0434\u0438\u043d\u0438\u0446\u0430\u043c\u0438 \u2014 \u043e\u043d\u0438 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u044b \u0432 \u0434\u0435\u043f\u043b\u043e\u0439\u043c\u0435\u043d\u0442, \u0438 \u0438\u043c\u0435\u043d\u043d\u043e \u0432 \u043d\u0451\u043c \u043d\u0435\u0432\u0435\u0440\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043e\u0431\u0440\u0430\u0437\u0430. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u044d\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c c \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b\u00a0<code>kubectl get deployments -n app2<\/code><\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c59\/1bc\/d90\/c591bcd90bebae3f8b67dfbc8405b3fb.png\" width=\"1154\" height=\"160\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c59\/1bc\/d90\/c591bcd90bebae3f8b67dfbc8405b3fb.png\"\/><\/figure>\n<p>\u0422\u0430\u043a \u0438 \u0435\u0441\u0442\u044c. \u0414\u0435\u043f\u043b\u043e\u0439\u043c\u0435\u043d\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442, \u043d\u043e \u043d\u0438 \u043e\u0434\u043d\u0430 \u0438\u0437 \u043e\u043f\u0440\u043e\u0448\u0435\u043d\u043d\u044b\u0445 18 \u0440\u0435\u043f\u043b\u0438\u043a \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0427\u0442\u043e\u0431\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043f\u043e\u043b\u043d\u044b\u0439 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442 \u0440\u0435\u0441\u0443\u0440\u0441\u0430, \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0444\u043b\u0430\u0433 <code>-o yaml<\/code>.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/37f\/795\/901\/37f7959012a600a6dfdd5156c53b0728.png\" alt=\"\u041f\u043e\u043b\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u0430 \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438. \u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043e\u0431\u0440\u0430\u0437\u0430\" title=\"\u041f\u043e\u043b\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u0430 \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438. \u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043e\u0431\u0440\u0430\u0437\u0430\" width=\"1380\" height=\"1160\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/37f\/795\/901\/37f7959012a600a6dfdd5156c53b0728.png\"\/><\/p>\n<div><figcaption>\u041f\u043e\u043b\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u0430 \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438. \u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043e\u0431\u0440\u0430\u0437\u0430<\/figcaption><\/div>\n<\/figure>\n<p>\u041a\u0430\u043a \u043c\u044b \u0432\u0438\u0434\u0438\u043c, \u0432 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u0435 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043e\u0431\u0440\u0430\u0437\u0430. \u041e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b <code>kubectl edit -n app2 deployment\/kubeapp2<\/code><\/p>\n<p>\u041e\u043d\u0430 \u043e\u0442\u043a\u0440\u043e\u0435\u0442 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u043c \u043d\u0430\u0434\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 kubeapp22 \u043d\u0430 kubeapp2 \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435. \u0422\u0430\u043a\u043e\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u043e \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 Kubernetes.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0441\u0442\u0430\u0442\u0443\u0441\u044b \u043f\u043e\u0434\u043e\u0432 \u0435\u0449\u0435 \u0440\u0430\u0437:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/78e\/3cc\/12c\/78e3cc12c698bd7055100fc273b83a5d.png\" alt=\"\u0412\u0441\u0435 \u043f\u043e\u0434\u044b \u0432 \u0441\u0442\u0430\u0442\u0443\u0441\u0435 Running\" title=\"\u0412\u0441\u0435 \u043f\u043e\u0434\u044b \u0432 \u0441\u0442\u0430\u0442\u0443\u0441\u0435 Running\" width=\"1392\" height=\"1054\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/78e\/3cc\/12c\/78e3cc12c698bd7055100fc273b83a5d.png\"\/><\/p>\n<div><figcaption>\u0412\u0441\u0435 \u043f\u043e\u0434\u044b \u0432 \u0441\u0442\u0430\u0442\u0443\u0441\u0435 Running<\/figcaption><\/div>\n<\/figure>\n<p>\u0412\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u0432\u0441\u0435 \u043f\u043e\u0434\u044b \u0442\u0435\u043f\u0435\u0440\u044c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0438\u0441\u044c \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442.<\/p>\n<h2>\u0427\u0438\u043d\u0438\u043c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443: \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u043e\u0448\u0438\u0431\u043a\u0443 \u0432 app1<\/h2>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0432\u0435\u0440\u043d\u0451\u043c\u0441\u044f \u043a \u043d\u0430\u0448\u0435\u043c\u0443 \u043f\u0435\u0440\u0432\u043e\u043c\u0443 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e. \u041e\u043d\u043e \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043c\u044b \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043b\u0438 \u0430\u0434\u0440\u0435\u0441 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432 env-\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439. \u0427\u0442\u043e\u0431\u044b \u044d\u0442\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c, \u043d\u0443\u0436\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u043a\u0430\u043a\u043e\u0439 \u0431\u0443\u0434\u0435\u0442 \u0430\u0434\u0440\u0435\u0441.\u00a0<\/p>\n<p>\u041f\u043e\u043a\u0430 \u0430\u0434\u0440\u0435\u0441 \u043d\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d: \u043c\u044b \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u0430, \u0447\u0442\u043e\u0431\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a\u043e \u0432\u0442\u043e\u0440\u043e\u043c\u0443 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e. \u041d\u0443\u0436\u043d\u044b\u0439 \u043d\u0430\u043c \u0442\u0438\u043f \u0440\u0435\u0441\u0443\u0440\u0441\u0430 \u2014 \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441, \u0438\u043b\u0438 \u0441\u043e\u043a\u0440\u0430\u0449\u0451\u043d\u043d\u043e svc.\u00a0<\/p>\n<p>\u0420\u0435\u0441\u0443\u0440\u0441 svc \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u043e\u0435 \u0432 Kubernetes, \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u043f\u043e \u0442\u0430\u043a\u0438\u043c-\u0442\u043e \u0430\u0434\u0440\u0435\u0441\u0430\u043c. \u041c\u044b \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b\u0438 \u0442\u0430\u043a\u043e\u0439 \u0442\u0438\u043f \u0440\u0435\u0441\u0443\u0440\u0441\u0430 \u0432 <a href=\"https:\/\/www.youtube.com\/watch?v=V2gxVJgHq4M&amp;t=0s\"><u>\u044d\u0442\u043e\u043c \u0432\u0438\u0434\u0435\u043e<\/u><\/a>, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043d\u0435\u043c\u0443 \u0441\u043d\u0430\u0440\u0443\u0436\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430.<\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0440\u0435\u0441\u0443\u0440\u0441 \u0441\u0435\u0440\u0432\u0438\u0441, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 app1 \u043c\u043e\u0433\u043b\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e app1. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 <code>kubectl expose -n app2 deployment\/kubeapp2<\/code><\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/0d3\/64d\/341\/0d364d3415630c1f4c407f8ef23ad55d.png\" width=\"1290\" height=\"106\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/0d3\/64d\/341\/0d364d3415630c1f4c407f8ef23ad55d.png\"\/><\/figure>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0441\u0435\u0440\u0432\u0438\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d. \u0412\u044b\u044f\u0441\u043d\u0438\u043c, \u043f\u043e \u043a\u0430\u043a\u043e\u043c\u0443 \u0430\u0434\u0440\u0435\u0441\u0443, \u2014 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b <code>kubectl get -n app2 svc<\/code> <\/p>\n<p>\u041c\u044b \u0432\u0438\u0434\u0438\u043c IP-\u0430\u0434\u0440\u0435\u0441 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430, \u043d\u043e \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043d\u0435\u0433\u043e \u043d\u0435 \u0441\u0442\u043e\u0438\u0442 \u2014 \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f. \u0412\u043d\u0443\u0442\u0440\u0438 \u043d\u0430\u0448\u0435\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 DNS. \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u043b\u044e\u0431\u043e\u0439 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043f\u043e DNS-\u0430\u0434\u0440\u0435\u0441\u0443.<\/p>\n<h2>\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0443 DNS \u0432 app2<\/h2>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ea8\/4b9\/e8b\/ea84b9e8bb465515ff13285c4406fc1a.png\" alt=\"\u0421\u043c\u043e\u0442\u0440\u0438\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u043e\u0434\u043e\u0432 \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u0441\u044f \u043a \u043f\u0435\u0440\u0432\u043e\u043c\u0443\" title=\"\u0421\u043c\u043e\u0442\u0440\u0438\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u043e\u0434\u043e\u0432 \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u0441\u044f \u043a \u043f\u0435\u0440\u0432\u043e\u043c\u0443\" width=\"1600\" height=\"1014\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ea8\/4b9\/e8b\/ea84b9e8bb465515ff13285c4406fc1a.png\"\/><\/p>\n<div><figcaption>\u0421\u043c\u043e\u0442\u0440\u0438\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u043e\u0434\u043e\u0432 \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u0441\u044f \u043a \u043f\u0435\u0440\u0432\u043e\u043c\u0443<\/figcaption><\/div>\n<\/figure>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c, \u0447\u0442\u043e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 DNS-\u0430\u0434\u0440\u0435\u0441 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c\u0441\u044f \u043a \u043f\u043e\u043a\u0430 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0435\u043c\u0443 \u0432 \u043d\u0430\u0448\u0435\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e app2. \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u043e\u0434\u043e\u0432 \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c\u0441\u044f \u043a \u043e\u0434\u043d\u043e\u043c\u0443 \u0438\u0437 \u043d\u0438\u0445 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b <code>kubectl exec -n\u00a0 app2 pod\/kubeapp2-64486b645f-gqklp -it -- sh<\/code><\/p>\n<p>\u0424\u043b\u0430\u0433 <code>-it \u2013 sh<\/code> \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442 \u0432\u043d\u0443\u0442\u0440\u0438 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b \u0438 \u0441\u0434\u0435\u043b\u0430\u0435\u0442 \u0435\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c \u0432 \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u043c \u0440\u0435\u0436\u0438\u043c\u0435.\u00a0<\/p>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a \u043d\u0430\u0448 \u043e\u0431\u0440\u0430\u0437 \u043e\u0441\u043d\u043e\u0432\u0430\u043d \u043d\u0430 Alpine, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0432 \u043d\u0435\u0433\u043e curl \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b <code>apk add curl.<\/code><\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c\u0441\u044f \u043a \u0441\u0435\u0440\u0432\u0438\u0441\u0443 \u043f\u043e \u0435\u0433\u043e \u0438\u043c\u0435\u043d\u0438 kubeapp2. \u0412 \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u0440\u0435\u043c\u044f \u2014 \u043a\u0430\u043a \u0438 \u043c\u044b \u043e\u0436\u0438\u0434\u0430\u0435\u043c \u043e\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f app2.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c46\/715\/98e\/c4671598e6cbfa08ec9c4c12c6d63156.png\" width=\"1488\" height=\"106\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c46\/715\/98e\/c4671598e6cbfa08ec9c4c12c6d63156.png\"\/><\/figure>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 app1 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0434\u0440\u0443\u0433\u043e\u043c \u043d\u0435\u0439\u043c\u0441\u043f\u0435\u0439\u0441\u0435 \u0438 \u0441\u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a app2 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e \u043f\u043e\u043b\u043d\u043e\u043c\u0443 \u0438\u043c\u0435\u043d\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435\u043c \u043d\u0435\u0439\u043c\u0441\u043f\u0435\u0439\u0441\u0430. \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u043e\u043b\u043d\u043e\u0435 \u0438\u043c\u044f \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a: <code>kubeapp2.app2.svc.cluster.local.<\/code><\/p>\n<p>\u041f\u043e\u043b\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u043c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e APP2_URL, \u043e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0432 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442. \u0412 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u044d\u0442\u043e \u0447\u0435\u0440\u0435\u0437 \u0434\u0440\u0443\u0433\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u2014 \u0443\u0442\u0438\u043b\u0438\u0442\u0443 k9s.<\/p>\n<h2>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c k9s<\/h2>\n<p>k9s \u2014 \u044d\u0442\u043e CLI-\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043b\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u043c\u0438 Kubernetes \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043b\u0435\u0433\u043a\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c\u0438, \u043f\u043e\u0434\u0430\u043c\u0438, \u0441\u043b\u0443\u0436\u0431\u0430\u043c\u0438 \u0438 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438 Kubernetes.<\/p>\n<p>K9s \u043e\u0431\u044b\u0447\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044b\u0445 \u043d\u0430 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u0445 Kubernetes, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0434\u043b\u044f \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0432 \u0446\u0435\u043b\u043e\u043c.\u00a0<\/p>\n<ol>\n<li>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c k9s: <\/p>\n<\/li>\n<\/ol>\n<pre><code class=\"go\">brew install k9s<\/code><\/pre>\n<ol start=\"2\">\n<li>\n<p>\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u043c k9s:<\/p>\n<\/li>\n<\/ol>\n<pre><code class=\"go\">k9s<\/code><\/pre>\n<p>\u0412\u043d\u0443\u0442\u0440\u0438 k9s \u2014 \u0434\u0430\u0448\u0431\u043e\u0440\u0434, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0432\u0438\u0434\u043d\u044b \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430: \u043f\u043e\u0434\u044b, \u043d\u0435\u0439\u043c\u0441\u043f\u0435\u0439\u0441\u044b, \u0441\u0435\u0440\u0432\u0438\u0441\u044b, \u0434\u0435\u043f\u043b\u043e\u0439\u043c\u0435\u043d\u0442\u044b.\u00a0<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/4b1\/c6e\/f20\/4b1c6ef207e7001a467912d8b467643b.png\" alt=\"\u0414\u0430\u0448\u0431\u043e\u0440\u0434 k9s\" title=\"\u0414\u0430\u0448\u0431\u043e\u0440\u0434 k9s\" width=\"1600\" height=\"551\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4b1\/c6e\/f20\/4b1c6ef207e7001a467912d8b467643b.png\"\/><\/p>\n<div><figcaption>\u0414\u0430\u0448\u0431\u043e\u0440\u0434 k9s<\/figcaption><\/div>\n<\/figure>\n<h3>\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c deployment \u0432 k9s<\/h3>\n<p>\u041d\u0430\u0448\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u2014 \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 env-\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 APP2_URL \u043d\u0430 \u043f\u043e\u043b\u043d\u044b\u0439 DNS-\u0430\u0434\u0440\u0435\u0441 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430.<\/p>\n<ol>\n<li>\n<p>\u041f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u0432 \u043d\u0443\u0436\u043d\u044b\u0439 \u043d\u0435\u0439\u043c\u0441\u043f\u0435\u0439\u0441.<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u0436\u043c\u0435\u043c \u043a\u043b\u0430\u0432\u0438\u0448\u0443 <code>:<\/code>.<\/p>\n<\/li>\n<li>\n<p>\u0412\u0432\u0435\u0434\u0451\u043c \u0432 \u043f\u043e\u044f\u0432\u0438\u0432\u0448\u0435\u0439\u0441\u044f \u0441\u0442\u0440\u043e\u043a\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 namespace.<\/p>\n<\/li>\n<\/ol>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/dc7\/688\/d4c\/dc7688d4c208aff87513a918d507b0ce.png\" alt=\"\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u0438\u0434\u0438\u043c \u0432\u0441\u0435 \u043d\u0435\u0439\u043c\u0441\u043f\u0435\u0439\u0441\u044b \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\" title=\"\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u0438\u0434\u0438\u043c \u0432\u0441\u0435 \u043d\u0435\u0439\u043c\u0441\u043f\u0435\u0439\u0441\u044b \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\" width=\"1600\" height=\"230\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/dc7\/688\/d4c\/dc7688d4c208aff87513a918d507b0ce.png\"\/><\/p>\n<div><figcaption>\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u0438\u0434\u0438\u043c \u0432\u0441\u0435 \u043d\u0435\u0439\u043c\u0441\u043f\u0435\u0439\u0441\u044b \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430<\/figcaption><\/div>\n<\/figure>\n<ol start=\"4\">\n<li>\n<p>\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Enter \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0439 \u043d\u0435\u0439\u043c\u0441\u043f\u0435\u0439\u0441 \u2014 \u043d\u0430\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0435\u043d app1. \u0412\u043d\u0443\u0442\u0440\u0438 \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u043e\u0434\u043e\u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f: <\/p>\n<\/li>\n<\/ol>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/319\/f9d\/35c\/319f9d35c8c52ff38a2fb66e3e4e5b53.png\" width=\"1600\" height=\"362\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/319\/f9d\/35c\/319f9d35c8c52ff38a2fb66e3e4e5b53.png\"\/><\/figure>\n<ol start=\"5\">\n<li>\n<p>\u0427\u0442\u043e\u0431\u044b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c deployment \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f , \u043d\u0443\u0436\u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u043d\u0430\u0436\u0430\u0442\u044c \u043d\u0430 <code>:<\/code> \u0438 \u0432\u0432\u0435\u0441\u0442\u0438 deployments. \u0423 \u043d\u0430\u0441 \u043e\u0434\u0438\u043d \u0434\u0435\u043f\u043b\u043e\u0439\u043c\u0435\u043d\u0442 \u0432 \u044d\u0442\u043e\u043c \u043d\u0435\u0439\u043c\u0441\u043f\u0435\u0439\u0441\u0435 \u2014 <code>kubeapp1<\/code>.<\/p>\n<\/li>\n<li>\n<p>\u041e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c deployment \u043c\u043e\u0436\u043d\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043b\u0430\u0432\u0438\u0448\u0438 <code>e<\/code>. \u0414\u043e\u0431\u0430\u0432\u0438\u043c env-\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e <code>APP2_URL<\/code><\/p>\n<\/li>\n<\/ol>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/04d\/855\/40f\/04d85540f414dc1a4ebe5e70f9fdfde1.png\" alt=\"\u0414\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u0432 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442 env-\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e APP2_URL \u0441 \u043f\u043e\u043b\u043d\u044b\u043c DNS-\u0430\u0434\u0440\u0435\u0441\u043e\u043c app2\" title=\"\u0414\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u0432 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442 env-\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e APP2_URL \u0441 \u043f\u043e\u043b\u043d\u044b\u043c DNS-\u0430\u0434\u0440\u0435\u0441\u043e\u043c app2\" width=\"1488\" height=\"1318\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/04d\/855\/40f\/04d85540f414dc1a4ebe5e70f9fdfde1.png\"\/><\/p>\n<div><figcaption>\u0414\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u0432 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442 env-\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e APP2_URL \u0441 \u043f\u043e\u043b\u043d\u044b\u043c DNS-\u0430\u0434\u0440\u0435\u0441\u043e\u043c app2<\/figcaption><\/div>\n<\/figure>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0432\u0441\u0435 \u0432\u043d\u0435\u0441\u0451\u043d\u043d\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u0441\u044f \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 Kubernetes, \u043a\u0430\u043a \u0438 \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0441 kubeapp1.<\/p>\n<h2>\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u043e\u0441\u043b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439<\/h2>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0412 k9s \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043d\u0430\u0436\u0430\u0442\u044c \u043d\u0430 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0434\u0435\u043f\u043b\u043e\u0439\u043c\u0435\u043d\u0442\u0430.\u00a0<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/922\/e91\/14f\/922e9114f54091cf140fb7a07a6e0b56.png\" width=\"1600\" height=\"297\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/922\/e91\/14f\/922e9114f54091cf140fb7a07a6e0b56.png\"\/><\/figure>\n<p>\u041a\u0430\u043a \u043c\u044b \u0432\u0438\u0434\u0438\u043c, \u0432\u0441\u0435 \u043e\u0431\u0440\u0430\u0437\u044b \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 Running \u2014 \u0432\u0441\u0451 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043e.<\/p>\n<p>\u0417\u0430\u0439\u0434\u0451\u043c \u0432 \u043e\u0434\u0438\u043d \u0438\u0437 \u043f\u043e\u0434\u043e\u0432 \u0438 \u0432\u044b\u0437\u043e\u0432\u0435\u043c \u043e\u0442\u0442\u0443\u0434\u0430 app2. \u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043f\u0430\u0441\u0442\u044c \u0432 Shell, \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0436\u0430\u0442\u044c \u043a\u043b\u0430\u0432\u0438\u0448\u0443 <code>S<\/code> \u043d\u0430 \u043f\u043e\u0434\u0435.\u00a0<\/p>\n<p>\u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0432\u044b\u0437\u0432\u0430\u0442\u044c <code>\/time<\/code> \u0443 app2:<\/p>\n<pre><code class=\"go\">curl http:\/\/kubeapp2.app2.svc.cluster.local:8891\/time<\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e31\/29b\/d70\/e3129bd704b20d441e3400da5e7323d7.png\" alt=\"\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0438 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0442\u0435\u043a\u0443\u0449\u0438\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c\" title=\"\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0438 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0442\u0435\u043a\u0443\u0449\u0438\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c\" width=\"1512\" height=\"132\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e31\/29b\/d70\/e3129bd704b20d441e3400da5e7323d7.png\"\/><\/p>\n<div><figcaption>\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0438 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0442\u0435\u043a\u0443\u0449\u0438\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c<\/figcaption><\/div>\n<\/figure>\n<h2>\u0412\u044b\u0437\u044b\u0432\u0430\u0435\u043c API app1 \u0441\u043d\u0430\u0440\u0443\u0436\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430<\/h2>\n<p>\u0412 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u0432\u044b\u0448\u0435 \u043c\u044b \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b\u0438 \u0432\u044b\u0437\u0432\u0430\u0442\u044c <code>\/time<\/code> \u0443 app2 \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430. \u0410 \u0447\u0442\u043e \u0431\u0443\u0434\u0435\u0442, \u0435\u0441\u043b\u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435, \u043d\u043e \u0441\u043d\u0430\u0440\u0443\u0436\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430?\u00a0<\/p>\n<p>\u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 app1 \u043d\u0430\u0440\u0443\u0436\u0443. \u041d\u0435 \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u0432\u044b\u0439\u0442\u0438 \u0438\u0437 k9s \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Ctrl+D \u0438 Ctrl+C.<\/p>\n<pre><code class=\"go\">kubectl expose --type=NodePort -n app1 deployment\/kubeapp1  service\/kubeapp1 exposed<\/code><\/pre>\n<p><code>--type=NodePort<\/code> \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0435\u0440\u0432\u0438\u0441\u0443 \u0441\u043d\u0430\u0440\u0443\u0436\u0438.<\/p>\n<p>\u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u043f\u043e\u0440\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b\u043b \u043f\u0440\u0438\u0441\u0432\u043e\u0435\u043d \u043d\u0430\u0448\u0435\u043c\u0443 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e \u0441\u043d\u0430\u0440\u0443\u0436\u0438. \u0410 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0443\u0437\u043d\u0430\u0435\u043c \u044d\u0442\u043e\u0442 \u043f\u043e\u0440\u0442, \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0432 \u043d\u0435\u0439\u043c\u0441\u043f\u0435\u0439\u0441\u0435 app1.<\/p>\n<pre><code class=\"go\">kubectl get svc -n app1<\/code><\/pre>\n<p>\u041a\u0430\u043a \u0432\u0438\u0434\u043d\u043e \u043d\u0430 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0435 \u043d\u0438\u0436\u0435, \u043f\u0440\u0438\u0441\u0432\u043e\u0435\u043d\u043d\u044b\u0439 \u043f\u043e\u0440\u0442 \u2014 30136. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u043d\u0435\u0433\u043e. \u0423\u0437\u043d\u0430\u0442\u044c IP \u043c\u0430\u0448\u0438\u043d\u044b \u043c\u043e\u0436\u043d\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b colima status.<\/p>\n<pre><code class=\"go\">curl 192.168.106:2:30136\/hello<\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/010\/2a4\/df1\/0102a4df10e870a5be5ac01741b30e1b.png\" width=\"1600\" height=\"766\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/010\/2a4\/df1\/0102a4df10e870a5be5ac01741b30e1b.png\"\/><\/figure>\n<ol>\n<li>\n<p>\u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c, \u0447\u0442\u043e \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0435\u0440\u0432\u0438\u0441\u0443 \u0441\u043d\u0430\u0440\u0443\u0436\u0438.<\/p>\n<\/li>\n<li>\n<p>\u0423\u0437\u043d\u0430\u0451\u043c \u043f\u0440\u0438\u0441\u0432\u043e\u0435\u043d\u043d\u044b\u0439 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e \u043f\u043e\u0440\u0442.<\/p>\n<\/li>\n<li>\n<p>\u0423\u0437\u043d\u0430\u0451\u043c IP \u043c\u0430\u0448\u0438\u043d\u044b.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u043e\u0431\u0443\u0435\u043c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441 \u0441\u043d\u0430\u0440\u0443\u0436\u0438.<\/p>\n<\/li>\n<\/ol>\n<p>\u041a\u0430\u043a \u0432\u044b \u0432\u0438\u0434\u0438\u0442\u0435, API \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u043e\u0442\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0438 \u043f\u0440\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0435 \u0441\u043d\u0430\u0440\u0443\u0436\u0438.<\/p>\n<h2>\u041a\u043e\u043c\u0430\u043d\u0434\u044b \u0438 \u0433\u043e\u0440\u044f\u0447\u0438\u0435 \u043a\u043b\u0430\u0432\u0438\u0448\u0438<\/h2>\n<p>\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0438\u0437\u0443\u0447\u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043c\u0430\u043d\u0434 <code>kubectl<\/code> \u0438 \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u043b\u0438\u0441\u044c \u0441 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u043c k9s, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u043c \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u0432 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435.\u00a0<\/p>\n<p><strong>\u041a\u043e\u043c\u0430\u043d\u0434\u044b kubectl<\/strong><\/p>\n<ul>\n<li>\n<p><code>kubectl apply -f &lt;\u0444\u0430\u0439\u043b><\/code> \u2014 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u043a \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0443 \u0438\u0437 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0438\u043b\u0438 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430. \u041a\u043e\u043c\u0430\u043d\u0434\u0430 \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u0438\u043b\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435.<\/p>\n<\/li>\n<li>\n<p><code>kubectl get pods<\/code> \u2014 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 \u043f\u043e\u0434\u043e\u0432 \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 \u0438\u043c\u0435\u043d. \u041c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0444\u043b\u0430\u0433\u0438 \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u043f\u043e\u0434\u043e\u0432 \u0432\u043e \u0432\u0441\u0435\u0445 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430\u0445 \u0438\u043c\u0435\u043d \u0438\u043b\u0438 \u0441 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u043c\u0438 \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u044f\u043c\u0438.<\/p>\n<\/li>\n<li>\n<p><code>kubectl describe &lt;\u0440\u0435\u0441\u0443\u0440\u0441> &lt;\u0438\u043c\u044f><\/code> \u2014 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u043c \u0440\u0435\u0441\u0443\u0440\u0441\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043e \u043f\u043e\u0434\u0435, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435, \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0432\u0430\u0436\u043d\u044b\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f.<\/p>\n<\/li>\n<li>\n<p><code>kubectl logs &lt;\u0438\u043c\u044f \u043f\u043e\u0434\u0430><\/code> \u2014 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043b\u043e\u0433\u0438 \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u0430. \u042d\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0438 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439.<\/p>\n<\/li>\n<li>\n<p><code>kubectl get deployments<\/code> \u2014 \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 \u0434\u0435\u043f\u043b\u043e\u0439\u043c\u0435\u043d\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442 \u043f\u043e\u0434\u0430\u043c\u0438.\u00a0<\/p>\n<\/li>\n<li>\n<p><code>kubectl edit &lt;\u0440\u0435\u0441\u0443\u0440\u0441> &lt;\u0438\u043c\u044f><\/code> \u2014 \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u0432\u043d\u043e\u0441\u0438\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e \u0440\u0435\u0441\u0443\u0440\u0441\u0430 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0438\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438.<\/p>\n<\/li>\n<li>\n<p><code>kubectl expose<\/code> \u2014 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 (svc), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043f\u043e\u0434\u0430\u043c \u0447\u0435\u0440\u0435\u0437 \u0441\u0435\u0442\u044c.<\/p>\n<\/li>\n<li>\n<p><code>kubectl get svc<\/code> \u2014 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u0438\u043b\u0438 \u043d\u0435\u0439\u043c\u0441\u043f\u0435\u0439\u0441\u0435 .<\/p>\n<\/li>\n<li>\n<p><code>kubectl exec -it &lt;\u0438\u043c\u044f \u043f\u043e\u043b\u044f> -- &lt;\u043a\u043e\u043c\u0430\u043d\u0434\u0430><\/code> \u2014 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u0432 \u043f\u043e\u0434\u0435. \u041e\u043f\u0446\u0438\u044f -it \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u043c \u0447\u0435\u0440\u0435\u0437 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u0438\u0437\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430.<\/p>\n<\/li>\n<\/ul>\n<p><strong>\u0413\u043e\u0440\u044f\u0447\u0438\u0435 \u043a\u043b\u0430\u0432\u0438\u0448\u0438 \u0432 k9s<\/strong><\/p>\n<ul>\n<li>\n<p><code>:<\/code> \u2014 \u0432\u0432\u0435\u0441\u0442\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f.<\/p>\n<\/li>\n<li>\n<p><code>s<\/code> \u2014 \u043f\u043e\u043f\u0430\u0441\u0442\u044c \u0432 Shell \u043d\u0430 \u043f\u043e\u0434\u0435.<\/p>\n<\/li>\n<li>\n<p><code>e<\/code> \u2013 \u043e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u0441\u0443\u0440\u0441<\/p>\n<\/li>\n<li>\n<p>Ctrl+D, Ctrl+C \u2014 \u0432\u044b\u0439\u0442\u0438 \u0438\u0437 k9s.\u00a0<\/p>\n<\/li>\n<\/ul>\n<h3>\u041f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438<\/h3>\n<ul>\n<li>\n<p><a href=\"https:\/\/www.youtube.com\/watch?v=V2gxVJgHq4M&amp;t=0s\"><u>\u041b\u043e\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 kubernetes | avito.code<\/u><\/a>.<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.youtube.com\/watch?v=V9xQFyHII5o\"><u>Kubernetes: \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b kubectl, k9s | avito.code<\/u><\/a>.<\/p>\n<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/820953\/\"> https:\/\/habr.com\/ru\/articles\/820953\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442!\u00a0\u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u041f\u0430\u0432\u0435\u043b \u0410\u0433\u0430\u043b\u0435\u0446\u043a\u0438\u0439, \u044f \u0432\u0435\u0434\u0443\u0449\u0438\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u044e\u043d\u0438\u0442\u0430 Platform as a Service \u0432 \u0410\u0432\u0438\u0442\u043e. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u043d\u0430\u0443\u0447\u0438\u043c\u0441\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0438 \u043e\u0442\u043b\u0430\u0436\u0438\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432 Kubernetes \u0438 \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u043c\u0441\u044f \u0441 \u0434\u0432\u0443\u043c\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438: \u0443\u0442\u0438\u043b\u0438\u0442\u043e\u0439 kubectl \u0438 \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u044b\u043c \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u043e\u043c k9s.<\/p>\n<figure class=\"full-width\"><\/figure>\n<h2>\u0417\u0430\u0434\u0430\u0447\u0430: \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0434\u0432\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432 Kubernetes<\/h2>\n<p>\u041c\u044b \u043f\u043e\u043f\u044b\u0442\u0430\u0435\u043c\u0441\u044f \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0432 Kubernetes \u0434\u0432\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0434\u0440\u0443\u0433 \u0441 \u0434\u0440\u0443\u0433\u043e\u043c \u0447\u0435\u0440\u0435\u0437 \u0432\u044b\u0437\u043e\u0432\u044b API.\u00a0<\/p>\n<p><strong>\u041f\u0435\u0440\u0432\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u2014 app1<\/strong> \u2014 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0444\u0440\u0430\u0437\u043e\u0439 <code>Hello World<\/code>\u00a0 \u0438 \u0442\u0435\u043a\u0443\u0449\u0438\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u0412\u0440\u0435\u043c\u044f app1 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0438\u0437 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f app2. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043e\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043a app2 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e env-\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <code>APP2_URL<\/code> \u2014 \u0432 \u043d\u0435\u0439 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u043d \u0430\u0434\u0440\u0435\u0441 \u043a\u043e \u0432\u0442\u043e\u0440\u043e\u043c\u0443 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e.<\/p>\n<pre><code class=\"go\">func main() { app2URL, ok := os.LookupEnv(\"APP2_URL\") if !ok { slog.Error(\"missing APP2_URL\") os.Exit(1) }  getTimeURL := fmt.Sprintf(\"%s\/time\", app2URL) http.HandleFunc(\"\/hello\", func(w http.ResponseWriter, r *http.Request) { slog.Info(\"Received request to \/hello endpoint\") app2Resp, err := http.DefaultClient.Get(getTimeURL)  if erp != nil { w.WriteHeader(http.StatusInternalServerError) fmt.Fprintf(w, \"App2 (%) is not available: %v\", getTimeURL, err) return } defer app2Resp.Body.Close() respTime, _ := io.ReadAll(app2Resp.Body) w.WriteHeader(http.StatusOK) fmt.Fprintf(w, \"Hello World at %\",, string(respTime)) }) slog.Info(\"Starting server on port 8890\") err := http.ListenAndServe(\":8890\", nil) if err != nil { slog.Error(\"Application 1 finished with an error\", \"error\", err) } }<\/code><\/pre>\n<p><strong>\u0412\u0442\u043e\u0440\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u2014 app2<\/strong> \u2014 \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0432 \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u0432\u044b\u0437\u043e\u0432 \u0441\u0432\u043e\u0435\u0433\u043e API\/time.\u00a0<\/p>\n<p>\u0412\u043e\u0442 \u043a\u043e\u0434 app2:\u00a0<\/p>\n<pre><code class=\"go\">func main() { http.HandleFunc(\"\/time\", func(w http.ResponseWriter, r *http.Request) { slog.Info(\"Received request to \/time endpoint\") w.WriteHeader(http.StatusOK) fmt.Fprint(w, time.Now().String()) })  slog.Info(\"Starting server 2 on port 8891\")  err := http.ListenAndServe(\":8891\", nil) if err != nil { slog.Error(\"Application 2 finished with an error\", \"error\", err) } }<\/code><\/pre>\n<h2>\u041f\u0440\u043e\u0431\u0443\u0435\u043c \u0437\u0430\u0434\u0435\u043f\u043b\u043e\u0438\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440<\/h2>\n<p>\u041d\u0430\u043c \u043d\u0430\u0434\u043e \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 Dockerfiles:\u00a0<\/p>\n<p><strong>\u0414\u043b\u044f \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f:<\/strong><\/p>\n<pre><code class=\"bash\">FROM golang:1.21-alpine  COPY . \/app  WORKDIR \/app  RUN ls -la . &amp;&amp; \\     go install . &amp;&amp; \\     which kubeapp1  ENTRYPOINT [\"\/go\/bin\/kubeapp1\"]<\/code><\/pre>\n<p><strong>\u0414\u043b\u044f \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f:<\/strong><\/p>\n<pre><code class=\"bash\">FROM golang:1.21-alpine  COPY . \/app  WORKDIR \/app  RUN ls -la . &amp;&amp; \\     go install . &amp;&amp; \\     which kubeapp2  ENTRYPOINT [\"\/go\/bin\/kubeapp2\"]<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0441\u043e\u0431\u0435\u0440\u0451\u043c \u0438\u0445 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b <code>docker build<\/code>:<\/p>\n<pre><code class=\"bash\"># \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 app1:  $ docker build -t kubeapp1 .  # \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 app2:  $ docker build -t kubeapp2 .<\/code><\/pre>\n<p>\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0432 \u043d\u0430\u0448\u0435\u0439 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 <a href=\"https:\/\/habr.com\/ru\/companies\/avito\/articles\/799689\/\">\u0441\u0442\u0430\u0442\u044c\u0435<\/a> \u043e \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 Kubernetes.<\/p>\n<p>\u0423\u0431\u0435\u0434\u0438\u043c\u0441\u044f, \u0447\u0442\u043e \u043e\u043d\u0438 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0432 \u043d\u0430\u0448\u0435\u043c docker-\u0445\u043e\u0441\u0442\u0435, \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 <code>docker images<\/code>, \u043e\u043d\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0432 Docker.<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u0412 \u0434\u043e\u043a\u0435\u0440\u0435 \u043b\u0435\u0436\u0430\u0442 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u043e\u0431\u043e\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439: kuberapp2 \u0438 kubeapp1<\/figcaption><\/div>\n<\/figure>\n<p>\u0417\u0430\u0434\u0435\u043f\u043b\u043e\u0438\u043c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440. \u041d\u0438\u0436\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u044b <code>deployments.yaml<\/code> \u0434\u043b\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u043d\u043e \u0432\u043d\u0435\u0441\u0435\u043d\u044b \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438. \u041f\u043e\u0437\u0436\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0438\u0445 \u0443\u0441\u0442\u0440\u0430\u043d\u0438\u0442\u044c.<\/p>\n<p><strong>\u0414\u043b\u044f app1:<\/strong><\/p>\n<pre><code class=\"go\">apiVersion: v1 kind: Namespace metadata:   name: app1 --- apiVersion: apps\/v1 kind: Deployment metadata:   name: kubeapp1   namespace: app1   labels:     app: kubeapp1 spec:   selector:     matchLabels:       app: kubeapp1   replicas: 10   strategy:     type: RollingUpdate   template:     metadata:       namespace: app1       labels:         app: kubeapp1     spec:       containers:         - name: app           image: kubeapp1           imagePullPolicy: Never           ports:             - containerPort: 8890<\/code><\/pre>\n<p><strong>\u0414\u043b\u044f app2:<\/strong><\/p>\n<pre><code class=\"go\">apiVersion: v1 kind: Namespace metadata:   name: app2 --- apiVersion: apps\/v1 kind: Deployment metadata:   name: kubeapp2   namespace: app2   labels:     app: kubeapp2 spec:   selector:     matchLabels:       app: kubeapp2   replicas: 18   strategy:     type: RollingUpdate   template:     metadata:       namespace: app2       labels:         app: kubeapp2     spec:       containers:         - name: app           image: kubeapp22           imagePullPolicy: Never           ports:             - containerPort: 8891 <\/code><\/pre>\n<ol>\n<li>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043c \u0434\u0435\u043f\u043b\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 <code>kubectl apply<\/code>:<\/p>\n<\/li>\n<\/ol>\n<figure class=\"full-width\">\n<div><figcaption>\u0414\u0435\u043f\u043b\u043e\u0438\u043c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440<\/figcaption><\/div>\n<\/figure>\n<ol start=\"2\">\n<li>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043b\u0438 \u043f\u0435\u0440\u0432\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u043e\u0434\u043e\u0432 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b <code>kubectl get pods -n app1<\/code>:<\/p>\n<\/li>\n<\/ol>\n<figure class=\"full-width\">\n<div><figcaption>\u0412\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u043f\u043e\u0434\u044b \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u044b, \u043d\u043e \u0432\u0438\u0441\u044f\u0442 \u0432 \u0441\u0442\u0430\u0442\u0443\u0441\u0435 Error<\/figcaption><\/div>\n<\/figure>\n<h2>\u0412\u044b\u044f\u0441\u043d\u044f\u0435\u043c, \u043f\u043e\u0447\u0435\u043c\u0443 \u043f\u043e\u0434\u044b \u0432\u0438\u0441\u044f\u0442 \u0432 \u043e\u0448\u0438\u0431\u043a\u0435<\/h2>\n<p><strong>\u041e\u0448\u0438\u0431\u043a\u0430 \u0432 app1<\/strong><\/p>\n<ol>\n<li>\n<p>\u0412\u044b\u044f\u0441\u043d\u0438\u043c \u043f\u0440\u0438\u0447\u0438\u043d\u0443 \u043e\u0448\u0438\u0431\u043a\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b\u00a0<code>kubectl describe -n app1 pod\/kubeapp1-5fcd8b8d9f-brwhh<\/code>,\u00a0\u0433\u0434\u0435 <code>kubeapp1-5fcd8b8d9f-brwhh<\/code> \u2014 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u0434\u0430.<\/p>\n<\/li>\n<\/ol>\n<figure class=\"full-width\">\n<div><figcaption>\u041a\u043e\u043c\u0430\u043d\u0434\u0430 describe \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0432\u0441\u0435 \u0438\u0432\u0435\u043d\u0442\u044b \u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0430\u0445<\/figcaption><\/div>\n<\/figure>\n<p>\u0417\u0434\u0435\u0441\u044c \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0438 \u0442\u0443\u0442 \u0436\u0435 \u043f\u0430\u0434\u0430\u0435\u0442. \u041d\u0430 \u044d\u0442\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 <code>Back-off restarting failed container app in pod...<\/code><\/p>\n<ol start=\"2\">\n<li>\n<p>\u041d\u0430\u0439\u0434\u0451\u043c \u043f\u0440\u0438\u0447\u0438\u043d\u0443 \u043f\u0430\u0434\u0435\u043d\u0438\u044f \u0432 \u043b\u043e\u0433\u0430\u0445. \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b <code>kubectl logs -n app1 pod\/kubeapp1-5fcd8b8d9f-brwhh<\/code><\/p>\n<\/li>\n<\/ol>\n<figure class=\"full-width\"><\/figure>\n<p>\u041a\u0430\u043a \u043c\u044b \u0432\u0438\u0434\u0438\u043c, \u043e\u0448\u0438\u0431\u043a\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043c\u044b \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043b\u0438 env-\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e <code>APP2_URL<\/code>.<\/p>\n<p><strong>\u041e\u0448\u0438\u0431\u043a\u0430 \u0432 app2<\/strong><\/p>\n<ol>\n<li>\n<p>\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u043f\u043e\u0434\u044b \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 <code>kubectl get pods -n app2. <\/code>\u0412\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u0432 app2 \u0442\u043e\u0436\u0435 \u043f\u043b\u043e\u0445\u043e, \u043d\u043e \u0443 \u0435\u0433\u043e \u043f\u043e\u0434\u043e\u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u0430\u0442\u0443\u0441 \u2014 <code>ErrImageNeverPull<\/code>. <\/p>\n<\/li>\n<\/ol>\n<figure class=\"full-width\">\n<div><figcaption>\u041f\u043e\u0434\u044b app2<\/figcaption><\/div>\n<\/figure>\n<ol>\n<li>\n<p>\u0412\u044b\u044f\u0441\u043d\u0438\u043c \u043f\u0440\u0438\u0447\u0438\u043d\u0443 \u0442\u0430\u043a\u043e\u0433\u043e \u0441\u0442\u0430\u0442\u0443\u0441\u0430\u00a0 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b\u00a0<code>kubectl describe -n app1 pod\/kubeapp1-5fcd8b8d9f-brwhh<\/code><\/p>\n<\/li>\n<\/ol>\n<figure class=\"full-width\">\n<div><figcaption>\u041a\u043e\u043c\u0430\u043d\u0434\u0430 describe \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0432\u0441\u0435 \u0438\u0432\u0435\u043d\u0442\u044b \u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0430\u0445<\/figcaption><\/div>\n<\/figure>\n<p>\u041e\u0448\u0438\u0431\u043a\u0430 \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0441\u043f\u0443\u043b\u043b\u0438\u0442\u044c \u043f\u043e\u0434 <code>kubeapp22<\/code>. \u0422\u0430\u043a \u0438 \u0435\u0441\u0442\u044c: \u043d\u0430\u0448 \u043e\u0431\u0440\u0430\u0437 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <code>kubeapp2<\/code>.\u00a0 \u041e\u0448\u0438\u0431\u043a\u0430 \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442, \u0447\u0442\u043e \u043e\u0431\u0440\u0430\u0437 \u0441 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c <code>kubeapp22<\/code> \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0438 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u043a\u0430\u0447\u0435\u043d \u0438\u0437 registry. <\/p>\n<p>\u042d\u0442\u043e \u0438\u0437-\u0437\u0430 \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u0435 \u2014 \u0432\u043c\u0435\u0441\u0442\u043e <code>kubeapp22<\/code> \u043d\u0430\u0434\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c <code>kubeapp2<\/code>.<\/p>\n<h2>\u0427\u0438\u043d\u0438\u043c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443: \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u043e\u0448\u0438\u0431\u043a\u0443 \u0432 app2<\/h2>\n<p>\u0412 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 \u0441\u0442\u043e\u0438\u043b\u043e \u0431\u044b \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u0430 \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u0432 Kubernetes, \u043d\u043e \u0432 \u0446\u0435\u043b\u044f\u0445 \u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043a\u0438 \u043c\u044b \u043f\u043e\u043f\u0440\u0430\u0432\u0438\u043c \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e \u043f\u0440\u044f\u043c\u043e \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u043a\u0443\u0431\u0430.\u00a0<\/p>\n<p>\u041f\u043e\u0434\u044b \u043d\u0435 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u0435\u0434\u0438\u043d\u0438\u0446\u0430\u043c\u0438 \u2014 \u043e\u043d\u0438 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u044b \u0432 \u0434\u0435\u043f\u043b\u043e\u0439\u043c\u0435\u043d\u0442, \u0438 \u0438\u043c\u0435\u043d\u043d\u043e \u0432 \u043d\u0451\u043c \u043d\u0435\u0432\u0435\u0440\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043e\u0431\u0440\u0430\u0437\u0430. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u044d\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c c \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b\u00a0<code>kubectl get deployments -n app2<\/code><\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u0422\u0430\u043a \u0438 \u0435\u0441\u0442\u044c. \u0414\u0435\u043f\u043b\u043e\u0439\u043c\u0435\u043d\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442, \u043d\u043e \u043d\u0438 \u043e\u0434\u043d\u0430 \u0438\u0437 \u043e\u043f\u0440\u043e\u0448\u0435\u043d\u043d\u044b\u0445 18 \u0440\u0435\u043f\u043b\u0438\u043a \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0427\u0442\u043e\u0431\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043f\u043e\u043b\u043d\u044b\u0439 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442 \u0440\u0435\u0441\u0443\u0440\u0441\u0430, \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0444\u043b\u0430\u0433 <code>-o yaml<\/code>.<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u041f\u043e\u043b\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u0430 \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438. \u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043e\u0431\u0440\u0430\u0437\u0430<\/figcaption><\/div>\n<\/figure>\n<p>\u041a\u0430\u043a \u043c\u044b \u0432\u0438\u0434\u0438\u043c, \u0432 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u0435 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043e\u0431\u0440\u0430\u0437\u0430. \u041e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b <code>kubectl edit -n app2 deployment\/kubeapp2<\/code><\/p>\n<p>\u041e\u043d\u0430 \u043e\u0442\u043a\u0440\u043e\u0435\u0442 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u043c \u043d\u0430\u0434\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 kubeapp22 \u043d\u0430 kubeapp2 \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435. \u0422\u0430\u043a\u043e\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u043e \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 Kubernetes.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0441\u0442\u0430\u0442\u0443\u0441\u044b \u043f\u043e\u0434\u043e\u0432 \u0435\u0449\u0435 \u0440\u0430\u0437:<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u0412\u0441\u0435 \u043f\u043e\u0434\u044b \u0432 \u0441\u0442\u0430\u0442\u0443\u0441\u0435 Running<\/figcaption><\/div>\n<\/figure>\n<p>\u0412\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u0432\u0441\u0435 \u043f\u043e\u0434\u044b \u0442\u0435\u043f\u0435\u0440\u044c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0438\u0441\u044c \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442.<\/p>\n<h2>\u0427\u0438\u043d\u0438\u043c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443: \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u043e\u0448\u0438\u0431\u043a\u0443 \u0432 app1<\/h2>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0432\u0435\u0440\u043d\u0451\u043c\u0441\u044f \u043a \u043d\u0430\u0448\u0435\u043c\u0443 \u043f\u0435\u0440\u0432\u043e\u043c\u0443 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e. \u041e\u043d\u043e \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043c\u044b \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043b\u0438 \u0430\u0434\u0440\u0435\u0441 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432 env-\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439. \u0427\u0442\u043e\u0431\u044b \u044d\u0442\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c, \u043d\u0443\u0436\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u043a\u0430\u043a\u043e\u0439 \u0431\u0443\u0434\u0435\u0442 \u0430\u0434\u0440\u0435\u0441.\u00a0<\/p>\n<p>\u041f\u043e\u043a\u0430 \u0430\u0434\u0440\u0435\u0441 \u043d\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d: \u043c\u044b \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u0430, \u0447\u0442\u043e\u0431\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a\u043e \u0432\u0442\u043e\u0440\u043e\u043c\u0443 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e. \u041d\u0443\u0436\u043d\u044b\u0439 \u043d\u0430\u043c \u0442\u0438\u043f \u0440\u0435\u0441\u0443\u0440\u0441\u0430 \u2014 \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441, \u0438\u043b\u0438 \u0441\u043e\u043a\u0440\u0430\u0449\u0451\u043d\u043d\u043e svc.\u00a0<\/p>\n<p>\u0420\u0435\u0441\u0443\u0440\u0441 svc \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u043e\u0435 \u0432 Kubernetes, \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u043f\u043e \u0442\u0430\u043a\u0438\u043c-\u0442\u043e \u0430\u0434\u0440\u0435\u0441\u0430\u043c. \u041c\u044b \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b\u0438 \u0442\u0430\u043a\u043e\u0439 \u0442\u0438\u043f \u0440\u0435\u0441\u0443\u0440\u0441\u0430 \u0432 <a href=\"https:\/\/www.youtube.com\/watch?v=V2gxVJgHq4M&amp;t=0s\"><u>\u044d\u0442\u043e\u043c \u0432\u0438\u0434\u0435\u043e<\/u><\/a>, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043d\u0435\u043c\u0443 \u0441\u043d\u0430\u0440\u0443\u0436\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430.<\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0440\u0435\u0441\u0443\u0440\u0441 \u0441\u0435\u0440\u0432\u0438\u0441, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 app1 \u043c\u043e\u0433\u043b\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e app1. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 <code>kubectl expose -n app2 deployment\/kubeapp2<\/code><\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0441\u0435\u0440\u0432\u0438\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d. \u0412\u044b\u044f\u0441\u043d\u0438\u043c, \u043f\u043e \u043a\u0430\u043a\u043e\u043c\u0443 \u0430\u0434\u0440\u0435\u0441\u0443, \u2014 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b <code>kubectl get -n app2 svc<\/code> <\/p>\n<p>\u041c\u044b \u0432\u0438\u0434\u0438\u043c IP-\u0430\u0434\u0440\u0435\u0441 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430, \u043d\u043e \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043d\u0435\u0433\u043e \u043d\u0435 \u0441\u0442\u043e\u0438\u0442 \u2014 \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f. \u0412\u043d\u0443\u0442\u0440\u0438 \u043d\u0430\u0448\u0435\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 DNS. \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u043b\u044e\u0431\u043e\u0439 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043f\u043e DNS-\u0430\u0434\u0440\u0435\u0441\u0443.<\/p>\n<h2>\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0443 DNS \u0432 app2<\/h2>\n<figure class=\"full-width\">\n<div><figcaption>\u0421\u043c\u043e\u0442\u0440\u0438\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u043e\u0434\u043e\u0432 \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u0441\u044f \u043a \u043f\u0435\u0440\u0432\u043e\u043c\u0443<\/figcaption><\/div>\n<\/figure>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c, \u0447\u0442\u043e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 DNS-\u0430\u0434\u0440\u0435\u0441 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c\u0441\u044f \u043a \u043f\u043e\u043a\u0430 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0435\u043c\u0443 \u0432 \u043d\u0430\u0448\u0435\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e app2. \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u043e\u0434\u043e\u0432 \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c\u0441\u044f \u043a \u043e\u0434\u043d\u043e\u043c\u0443 \u0438\u0437 \u043d\u0438\u0445 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b <code>kubectl exec -n\u00a0 app2 pod\/kubeapp2-64486b645f-gqklp -it -- sh<\/code><\/p>\n<p>\u0424\u043b\u0430\u0433 <code>-it \u2013 sh<\/code> \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442 \u0432\u043d\u0443\u0442\u0440\u0438 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b \u0438 \u0441\u0434\u0435\u043b\u0430\u0435\u0442 \u0435\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c \u0432 \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u043c \u0440\u0435\u0436\u0438\u043c\u0435.\u00a0<\/p>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a \u043d\u0430\u0448 \u043e\u0431\u0440\u0430\u0437 \u043e\u0441\u043d\u043e\u0432\u0430\u043d \u043d\u0430 Alpine, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0432 \u043d\u0435\u0433\u043e curl \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b <code>apk add curl.<\/code><\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c\u0441\u044f \u043a \u0441\u0435\u0440\u0432\u0438\u0441\u0443 \u043f\u043e \u0435\u0433\u043e \u0438\u043c\u0435\u043d\u0438 kubeapp2. \u0412 \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u0440\u0435\u043c\u044f \u2014 \u043a\u0430\u043a \u0438 \u043c\u044b \u043e\u0436\u0438\u0434\u0430\u0435\u043c \u043e\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f app2.<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 app1 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0434\u0440\u0443\u0433\u043e\u043c \u043d\u0435\u0439\u043c\u0441\u043f\u0435\u0439\u0441\u0435 \u0438 \u0441\u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a app2 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e \u043f\u043e\u043b\u043d\u043e\u043c\u0443 \u0438\u043c\u0435\u043d\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435\u043c \u043d\u0435\u0439\u043c\u0441\u043f\u0435\u0439\u0441\u0430. \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u043e\u043b\u043d\u043e\u0435 \u0438\u043c\u044f \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a: <code>kubeapp2.app2.svc.cluster.local.<\/code><\/p>\n<p>\u041f\u043e\u043b\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u043c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e APP2_URL, \u043e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0432 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442. \u0412 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u044d\u0442\u043e \u0447\u0435\u0440\u0435\u0437 \u0434\u0440\u0443\u0433\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u2014 \u0443\u0442\u0438\u043b\u0438\u0442\u0443 k9s.<\/p>\n<h2>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c k9s<\/h2>\n<p>k9s \u2014 \u044d\u0442\u043e CLI-\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043b\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u043c\u0438 Kubernetes \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043b\u0435\u0433\u043a\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c\u0438, \u043f\u043e\u0434\u0430\u043c\u0438, \u0441\u043b\u0443\u0436\u0431\u0430\u043c\u0438 \u0438 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438 Kubernetes.<\/p>\n<p>K9s \u043e\u0431\u044b\u0447\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044b\u0445 \u043d\u0430 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u0445 Kubernetes, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0434\u043b\u044f \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0432 \u0446\u0435\u043b\u043e\u043c.\u00a0<\/p>\n<ol>\n<li>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c k9s: <\/p>\n<\/li>\n<\/ol>\n<pre><code class=\"go\">brew install k9s<\/code><\/pre>\n<ol start=\"2\">\n<li>\n<p>\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u043c k9s:<\/p>\n<\/li>\n<\/ol>\n<pre><code class=\"go\">k9s<\/code><\/pre>\n<p>\u0412\u043d\u0443\u0442\u0440\u0438 k9s \u2014 \u0434\u0430\u0448\u0431\u043e\u0440\u0434, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0432\u0438\u0434\u043d\u044b \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430: \u043f\u043e\u0434\u044b, \u043d\u0435\u0439\u043c\u0441\u043f\u0435\u0439\u0441\u044b, \u0441\u0435\u0440\u0432\u0438\u0441\u044b, \u0434\u0435\u043f\u043b\u043e\u0439\u043c\u0435\u043d\u0442\u044b.\u00a0<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u0414\u0430\u0448\u0431\u043e\u0440\u0434 k9s<\/figcaption><\/div>\n<\/figure>\n<h3>\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c deployment \u0432 k9s<\/h3>\n<p>\u041d\u0430\u0448\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u2014 \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 env-\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 APP2_URL \u043d\u0430 \u043f\u043e\u043b\u043d\u044b\u0439 DNS-\u0430\u0434\u0440\u0435\u0441 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430.<\/p>\n<ol>\n<li>\n<p>\u041f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u0432 \u043d\u0443\u0436\u043d\u044b\u0439 \u043d\u0435\u0439\u043c\u0441\u043f\u0435\u0439\u0441.<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u0436\u043c\u0435\u043c \u043a\u043b\u0430\u0432\u0438\u0448\u0443 <code>:<\/code>.<\/p>\n<\/li>\n<li>\n<p>\u0412\u0432\u0435\u0434\u0451\u043c \u0432 \u043f\u043e\u044f\u0432\u0438\u0432\u0448\u0435\u0439\u0441\u044f \u0441\u0442\u0440\u043e\u043a\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 namespace.<\/p>\n<\/li>\n<\/ol>\n<figure class=\"full-width\">\n<div><figcaption>\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u0438\u0434\u0438\u043c \u0432\u0441\u0435 \u043d\u0435\u0439\u043c\u0441\u043f\u0435\u0439\u0441\u044b \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430<\/figcaption><\/div>\n<\/figure>\n<ol start=\"4\">\n<li>\n<p>\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Enter \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0439 \u043d\u0435\u0439\u043c\u0441\u043f\u0435\u0439\u0441 \u2014 \u043d\u0430\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0435\u043d app1. \u0412\u043d\u0443\u0442\u0440\u0438 \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u043e\u0434\u043e\u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f: <\/p>\n<\/li>\n<\/ol>\n<figure class=\"full-width\"><\/figure>\n<ol start=\"5\">\n<li>\n<p>\u0427\u0442\u043e\u0431\u044b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c deployment \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f , \u043d\u0443\u0436\u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u043d\u0430\u0436\u0430\u0442\u044c \u043d\u0430 <code>:<\/code> \u0438 \u0432\u0432\u0435\u0441\u0442\u0438 deployments. \u0423 \u043d\u0430\u0441 \u043e\u0434\u0438\u043d \u0434\u0435\u043f\u043b\u043e\u0439\u043c\u0435\u043d\u0442 \u0432 \u044d\u0442\u043e\u043c \u043d\u0435\u0439\u043c\u0441\u043f\u0435\u0439\u0441\u0435 \u2014 <code>kubeapp1<\/code>.<\/p>\n<\/li>\n<li>\n<p>\u041e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c deployment \u043c\u043e\u0436\u043d\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043b\u0430\u0432\u0438\u0448\u0438 <code>e<\/code>. \u0414\u043e\u0431\u0430\u0432\u0438\u043c env-\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e <code>APP2_URL<\/code><\/p>\n<\/li>\n<\/ol>\n<figure class=\"full-width\">\n<div><figcaption>\u0414\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u0432 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442 env-\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e APP2_URL \u0441 \u043f\u043e\u043b\u043d\u044b\u043c DNS-\u0430\u0434\u0440\u0435\u0441\u043e\u043c app2<\/figcaption><\/div>\n<\/figure>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0432\u0441\u0435 \u0432\u043d\u0435\u0441\u0451\u043d\u043d\u044b\u0435<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-379586","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/379586","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=379586"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/379586\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=379586"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=379586"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=379586"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}