{"id":7361,"date":"2019-07-10T18:45:21","date_gmt":"2019-07-10T14:15:21","guid":{"rendered":"https:\/\/parspack.com\/?p=7361"},"modified":"2023-09-09T16:48:27","modified_gmt":"2023-09-09T12:18:27","slug":"setup-cluster-ubuntu","status":"publish","type":"post","link":"https:\/\/parspack.com\/blog\/os\/linux\/setup-cluster-ubuntu","title":{"rendered":"\u0646\u0635\u0628 \u06a9\u0644\u0627\u0633\u062a\u0631\u06cc\u0646\u06af \u06a9\u0648\u0628\u0631\u0646\u062a\u06cc\u0633 \u062f\u0631 \u0627\u0648\u0628\u0648\u0646\u062a\u0648 16.04"},"content":{"rendered":"<p style=\"text-align: justify;\">\u0646\u062d\u0648\u0647 \u0646\u0635\u0628 Kubernetes \u062f\u0631 \u0644\u06cc\u0646\u0648\u06a9\u0633 \u0627\u0648\u0628\u0648\u0646\u062a\u0648 16.04\u061b \u06a9\u0648\u0628\u0631\u0646\u062a\u06cc\u0633&#8221; Kubernetes&#8221; \u06cc\u06a9 \u0633\u06cc\u0633\u062a\u0645 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u062e\u0627\u0632\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u062a\u0646 \u0628\u0627\u0632 \u0648 \u0631\u0627\u06cc\u06af\u0627\u0646 \u0627\u0631\u0627\u0626\u0647 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a. \u0627\u06cc\u0646 \u067e\u0631\u0648\u0698\u0647 \u062a\u0648\u0633\u0637 \u06af\u0648\u06af\u0644 \u0648 \u0628\u0631 \u0627\u0633\u0627\u0633 \u062a\u062c\u0631\u0628\u06cc\u0627\u062a \u0627\u062c\u0631\u0627\u06cc \u0645\u062e\u0627\u0632\u0646 \u062f\u0631 \u0645\u062d\u0635\u0648\u0644\u0627\u062a \u0627\u06cc\u062c\u0627\u062f \u06af\u0631\u062f\u06cc\u062f\u0647 \u0627\u0633\u062a. \u062f\u0631 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634 \u0628\u0647 \u0635\u0648\u0631\u062a \u062e\u0644\u0627\u0635\u0647 \u0648 \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0628\u0647 \u0646\u0635\u0628 \u060c \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0648 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a Kubernetes \u0628\u0648\u0633\u06cc\u0644\u0647 &#8221; Kubeadm &#8221; \u0648 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062a\u0646\u0638\u06cc\u0645\u0627\u062a &#8221; Ansible &#8221; \u0628\u0631 \u0631\u0648\u06cc \u0633\u06cc\u0633\u062a\u0645 \u0639\u0627\u0645\u0644 Ubuntu 16.04 \u0645\u06cc \u067e\u0631\u062f\u0627\u0632\u06cc\u0645.<\/p>\n<div class=\"info-box-section\">\n<h2 class=\"title\">\u062e\u0631\u06cc\u062f \u0633\u0631\u0648\u06cc\u0633 \u0644\u06cc\u0646\u0648\u06a9\u0633 \u0628\u0631\u0627\u06cc \u0646\u0635\u0628 \u06a9\u0644\u0627\u0633\u062a\u0631\u06cc\u0646\u06af \u06a9\u0648\u0628\u0631\u0646\u062a\u06cc\u0633<\/h2>\n<p class=\"description\">\u0627\u0632 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647 \u0645\u06cc\u200c\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc \u0644\u06cc\u0646\u0648\u06a9\u0633\u06cc \u062e\u0648\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f \u0648 \u0627\u06af\u0631 \u0642\u0635\u062f \u062e\u0631\u06cc\u062f \u0633\u0631\u0648\u0631 \u0644\u06cc\u0646\u0648\u06a9\u0633 \u067e\u0627\u0631\u0633 \u067e\u06a9 \u0631\u0627 \u062f\u0627\u0631\u06cc\u062f\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0627 \u06a9\u0627\u0631\u0634\u0646\u0627\u0633\u0627\u0646 \u0641\u0631\u0648\u0634 \u0645\u0627 \u062f\u0631 \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0627\u0634\u06cc\u062f. \u0647\u0645\u0686\u0646\u06cc\u0646\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u062c\u0647\u062a \u06a9\u0633\u0628\u200c \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0628\u06cc\u0634\u062a\u0631 \u0628\u0647 \u0644\u06cc\u0646\u06a9\u200c\u0647\u0627\u06cc \u0632\u06cc\u0631 \u0645\u0631\u0627\u062c\u0639\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li><a title=\"\u062e\u0631\u06cc\u062f \u0633\u0631\u0648\u0631 \u0645\u062c\u0627\u0632\u06cc \u0644\u06cc\u0646\u0648\u06a9\u0633\" href=\"\/vps\/linux\" target=\"_blank\" rel=\"noopener\">\u0633\u0631\u0648\u0631 \u0645\u062c\u0627\u0632\u06cc \u0644\u06cc\u0646\u0648\u06a9\u0633<\/a><\/li>\n<li><a title=\"\u062e\u0631\u06cc\u062f \u0633\u0631\u0648\u0631 \u0644\u06cc\u0646\u0648\u06a9\u0633 \" href=\"\/servers\/linux\" target=\"_blank\" rel=\"noopener\">\u0633\u0631\u0648\u0631 \u0644\u06cc\u0646\u0648\u06a9\u0633<\/a><\/li>\n<li><a title=\"\u062e\u0631\u06cc\u062f \u0633\u0631\u0648\u0631 \u0627\u062e\u062a\u0635\u0627\u0635\u06cc \u0644\u06cc\u0646\u0648\u06a9\u0633\" href=\"\/dedicated-servers\/linux\" target=\"_blank\" rel=\"noopener\">\u0633\u0631\u0648\u0631 \u0627\u062e\u062a\u0635\u0627\u0635\u06cc \u0644\u06cc\u0646\u0648\u06a9\u0633<\/a><\/li>\n<li><a title=\"\u062e\u0631\u06cc\u062f \u0633\u0631\u0648\u0631 \u0627\u0628\u0631\u06cc \u0644\u06cc\u0646\u0648\u06a9\u0633\" href=\"\/cloud-server\/linux\" target=\"_blank\" rel=\"noopener\"> \u0633\u0631\u0648\u0631 \u0627\u0628\u0631\u06cc \u0644\u06cc\u0646\u0648\u06a9\u0633 <\/a><\/li>\n<li><a title=\"\u062e\u0631\u06cc\u062f \u0647\u0627\u0633\u062a \u0644\u06cc\u0646\u0648\u06a9\u0633\" href=\"\/host\/linux\" target=\"_blank\" rel=\"noopener\">\u0647\u0627\u0633\u062a \u0644\u06cc\u0646\u0648\u06a9\u0633<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/div>\n<h2 style=\"text-align: justify;\"><span style=\"color: #3366ff;\">\u0646\u0635\u0628 \u06a9\u0644\u0627\u0633\u062a\u0631\u06cc\u0646\u06af \u06a9\u0648\u0628\u0631\u0646\u062a\u06cc\u0633 \u062f\u0631 \u0644\u06cc\u0646\u0648\u06a9\u0633<\/span><\/h2>\n<p style=\"text-align: justify;\">\u0628\u0631\u0627\u06cc \u0646\u0635\u0628\u00a0 \u00a0\u0627\u0632 \u0633\u0647 \u0639\u062f\u062f \u0633\u0631\u0648\u0631 \u0644\u06cc\u0646\u0648\u06a9\u0633 Ubuntu 16.04 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u06cc\u06a9 \u0633\u0631\u0648\u0631 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 Master \u062f\u0631 \u0646\u0642\u0634 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0648 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u0646\u062f\u0647 \u0648\u0638\u0627\u06cc\u0641 \u062f\u0648 \u0633\u0631\u0648\u0631 \u062f\u06cc\u06af\u0631 \u0639\u0645\u0644 \u062e\u0648\u0627\u0647\u062f \u06a9\u0631\u062f \u0648 \u062f\u0648 \u0633\u0631\u0648\u0631 \u062f\u06cc\u06af\u0631 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0633\u0631\u0648\u0631 Worker \u062f\u0631 \u06a9\u0644\u0627\u0633\u062a\u0631\u06cc\u0646\u06af \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u0646\u062f.<\/p>\n<p style=\"text-align: justify;\">\u0647\u0645\u0686\u0646\u06cc\u0646 \u0644\u0627\u0632\u0645 \u0627\u0633\u062a \u06a9\u0647 \u062f\u0631 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634 \u0628\u0627 \u0645\u0641\u0627\u0647\u06cc\u0645 Ansible \u0648 \u0646\u0642\u0634 Playbook \u0647\u0627 \u062f\u0631 Ansible \u0648 \u0645\u0641\u0647\u0648\u0645 Pod \u062f\u0631 Kubernetes \u0622\u0634\u0646\u0627\u06cc\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f.<\/p>\n<h3 style=\"text-align: justify;\"><span style=\"color: #0000ff;\">\u062a\u0646\u0638\u06cc\u0645 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0641\u0636\u0627\u06cc \u06a9\u0627\u0631 \u0648 \u0641\u0627\u06cc\u0644 \u0641\u0647\u0631\u0633\u062a Ansible<\/span><\/h3>\n<p style=\"text-align: justify;\">\u0628\u0631\u0627\u06cc \u0646\u0635\u0628 \u06a9\u0644\u0627\u0633\u062a\u0631\u06cc\u0646\u06af \u06a9\u0648\u0628\u0631\u0646\u062a\u06cc\u0633 \u062f\u0631 \u0627\u0628\u062a\u062f\u0627 \u0646\u06cc\u0627\u0632 \u0627\u0633\u062a \u06cc\u06a9 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0628\u0631\u0627\u06cc Workspace \u0648 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0641\u0636\u0627\u06cc \u06a9\u0627\u0631\u06cc \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632\u062a\u0627\u0646 \u0627\u06cc\u062c\u0627\u062f \u0646\u0645\u0627\u06cc\u06cc\u062f. \u0633\u067e\u0633 \u062f\u0631 \u0627\u06cc\u0646 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0634\u0627\u0645\u0644 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0648 \u06af\u0631\u0648\u0647 \u0647\u0627\u06cc \u0633\u0631\u0648\u0631\u0647\u0627 \u0628\u0627\u0634\u062f.<\/p>\n<blockquote>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">mkdir ~\/kube-cluster\r\ncd ~\/kube-cluster\r\nnano ~\/kube-cluster\/hosts<\/pre>\n<\/blockquote>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify;\">\u062e\u0637\u0648\u0637 \u0632\u06cc\u0631 \u0631\u0627 \u062f\u0631 \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u0648\u0627\u0631\u062f \u06a9\u0631\u062f\u0647 \u0648 \u0645\u0642\u0627\u062f\u06cc\u0631 \u06af\u0641\u062a\u0647 \u0634\u062f\u0647 \u0631\u0627 \u0628\u0627 \u0645\u0642\u0627\u062f\u06cc\u0631 \u0645\u0646\u0627\u0633\u0628 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u0646\u0645\u0627\u06cc\u06cc\u062f. \u0645\u0646\u0638\u0648\u0631 \u0645\u0642\u0627\u062f\u06cc\u0631 master_ip \u0648 worker_1_ip \u0648 worker_2_ip \u0645\u06cc \u0628\u0627\u0634\u062f:<\/p>\n<blockquote>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">mkdir ~\/kube-cluster\r\ncd ~\/kube-cluster\r\nnano ~\/kube-cluster\/hosts<\/pre>\n<p>&nbsp;<\/p><\/blockquote>\n<h3 style=\"text-align: justify;\"><span style=\"color: #0000ff;\">\u0627\u06cc\u062c\u0627\u062f \u06a9\u0627\u0631\u0628\u0631 \u062f\u0631 \u0633\u0631\u0648\u0631 \u0647\u0627\u06cc \u0645\u062a\u0635\u0644<\/span><\/h3>\n<p style=\"text-align: justify;\">\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647 \u0628\u0631 \u0631\u0648\u06cc \u0633\u0631\u0648\u0631 \u0647\u0627 \u06cc\u06a9 \u06a9\u0627\u0631\u0628\u0631 \u062c\u062f\u06cc\u062f \u0628\u0627 \u0633\u0637\u062d \u062f\u0633\u062a\u0631\u0633\u06cc sudo \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0633\u0631\u0648\u0631\u0647\u0627 \u0628\u0627 \u062f\u0633\u062a\u0631\u0633\u06cc \u0627\u06cc\u0646 \u06a9\u0627\u0631\u0628\u0631 \u0628\u0647 \u06cc\u06a9\u062f\u06cc\u06af\u0631 \u0645\u062a\u0635\u0644 \u0634\u0648\u0646\u062f. \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0627\u0632 &#8221; Ansible &#8221; \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0646\u0645\u0627\u06cc\u06cc\u062f \u0648 \u06cc\u06a9 &#8221; Playbook &#8221; \u0628\u0647 \u0635\u0648\u0631\u062a \u0632\u06cc\u0631 \u0627\u06cc\u062c\u0627\u062f \u0646\u0645\u0627\u06cc\u06cc\u062f :<\/p>\n<blockquote>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">- hosts: all\r\nbecome: yes\r\ntasks:\r\n- name: create the 'ubuntu' user\r\nuser: name=ubuntu append=yes state=present createhome=yes shell=\/bin\/bash<\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">- name: allow 'ubuntu' to have passwordless sudo\r\nlineinfile:\r\ndest: \/etc\/sudoers\r\nline: 'ubuntu ALL=(ALL) NOPASSWD: ALL'\r\nvalidate: 'visudo -cf %s'\r\n- name: set up authorized keys for the ubuntu user\r\nauthorized_key: user=ubuntu key=\"{{item}}\"\r\nwith_file:\r\n- ~\/.ssh\/id_rsa.pub<\/pre>\n<p>&nbsp;<\/p><\/blockquote>\n<h4 style=\"text-align: justify;\"><span style=\"color: #000080;\">\u0633\u067e\u0633 Playbook \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f<\/span><\/h4>\n<blockquote>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">ansible-playbook -i hosts ~\/kube-cluster\/initial.yml<\/pre>\n<p>&nbsp;<\/p><\/blockquote>\n<p style=\"text-align: justify;\">\u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u0628\u06cc\u0646 \u062f\u0648 \u062a\u0627 5 \u062f\u0642\u06cc\u0642\u0647 \u0627\u062c\u0631\u0627 \u062e\u0648\u0627\u0647\u062f \u0634\u062f.<\/p>\n<h3 style=\"text-align: justify;\"><span style=\"color: #0000ff;\">\u0646\u0635\u0628 \u067e\u06cc\u0634 \u0646\u06cc\u0627\u0632 \u0647\u0627\u06cc \u06a9\u0648\u0628\u0631\u0646\u062a\u06cc\u0633 \u062f\u0631 \u0644\u06cc\u0646\u0648\u06a9\u0633<\/span><\/h3>\n<p style=\"text-align: justify;\">\u062f\u0631 \u0627\u06cc\u0646 \u0642\u0633\u0645\u062a \u0628\u0627\u06cc\u062f \u067e\u06a9\u06cc\u062c \u0647\u0627\u06cc \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u06a9\u0648\u0628\u0631\u0646\u062a\u06cc\u0633 \u062f\u0631 \u0633\u06cc\u0633\u062a\u0645 \u0639\u0627\u0645\u0644 \u0631\u0627 \u0628\u0648\u0633\u06cc\u0644\u0647 &#8221; apt &#8221; \u06a9\u0647 \u0627\u0628\u0632\u0627\u0631 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0628\u0633\u062a\u0647 \u0647\u0627\u06cc Ubuntu \u0645\u06cc \u0628\u0627\u0634\u062f\u060c \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f. \u0627\u06cc\u0646 \u067e\u06a9\u06cc\u062c \u0647\u0627 \u0628\u0647 \u062a\u0631\u062a\u06cc\u0628 &#8221; Docker &#8220;\u060c &#8221; Kubeadm &#8220;\u060c &#8221; Kubelet &#8221; \u0648 &#8221; Kubectl &#8221; \u0647\u0633\u062a\u0646\u062f. \u0627\u06cc\u0646 \u0628\u0633\u062a\u0647 \u0647\u0627 \u0628\u0627\u06cc\u062f \u0628\u0631 \u0631\u0648\u06cc \u062a\u0645\u0627\u0645\u06cc \u0633\u0631\u0648\u0631 \u0647\u0627 \u0646\u0635\u0628 \u0634\u0648\u0646\u062f\u060c \u0644\u0630\u0627 \u0628\u062f\u06cc\u0646 \u0645\u0646\u0638\u0648\u0631 \u0627\u0632 &#8221; Ansible &#8221; \u0628\u0627 &#8221; Playbook &#8221; \u0632\u06cc\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0646\u0645\u0627\u06cc\u06cc\u062f :<\/p>\n<blockquote>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">nano ~\/kube-cluster\/kube-dependencies.yml<\/pre>\n<p>&nbsp;<\/p><\/blockquote>\n<p style=\"text-align: justify;\"><strong><span style=\"color: #000080;\">\u0633\u067e\u0633 play \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0646\u0635\u0628 \u067e\u06a9\u06cc\u062c \u0647\u0627 \u062f\u0631 \u0633\u0631\u0648\u0631 \u0647\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f :<\/span><\/strong><\/p>\n<blockquote>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">- hosts: all\r\nbecome: yes\r\ntasks:\r\n- name: install Docker\r\napt:\r\nname: docker.io\r\nstate: present\r\nupdate_cache: true<\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">- name: install APT Transport HTTPS\r\napt:\r\nname: apt-transport-https\r\nstate: present<\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">- name: add Kubernetes apt-key\r\napt_key:\r\nurl: https:\/\/packages.cloud.google.com\/apt\/doc\/apt-key.gpg\r\nstate: present<\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">- name: add Kubernetes' APT repository\r\napt_repository:\r\nrepo: deb http:\/\/apt.kubernetes.io\/ kubernetes-xenial main\r\nstate: present\r\nfilename: 'kubernetes'<\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">- name: install kubelet\r\napt:\r\nname: kubelet\r\nstate: present\r\nupdate_cache: true<\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">- name: install kubeadm\r\napt:\r\nname: kubeadm\r\nstate: present<\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">- hosts: master\r\nbecome: yes\r\ntasks:\r\n- name: install kubectl\r\napt:\r\nname: kubectl\r\nstate: present<\/pre>\n<p>&nbsp;<\/p><\/blockquote>\n<h4 style=\"text-align: justify;\"><span style=\"color: #000080;\">\u0628\u0639\u062f \u0627\u0632 \u0627\u062a\u0645\u0627\u0645 \u06a9\u0627\u0631 \u0641\u0627\u06cc\u0644 \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0631\u062f\u0647 \u0648 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f \u0648 Playbook \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f :<\/span><\/h4>\n<blockquote>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">ansible-playbook -i hosts ~\/kube-cluster\/kube-dependencies.yml<\/pre>\n<p>&nbsp;<\/p><\/blockquote>\n<h3 style=\"text-align: justify;\"><span style=\"color: #0000ff;\">\u062a\u0646\u0638\u06cc\u0645 \u0633\u0631\u0648\u0631 Master \u0628\u0631\u0627\u06cc \u0646\u0635\u0628 \u06a9\u0644\u0627\u0633\u062a\u0631\u06cc\u0646\u06af \u06a9\u0648\u0628\u0631\u0646\u062a\u06cc\u0633<\/span><\/h3>\n<p style=\"text-align: justify;\">\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0633\u0631\u0648\u0631 master \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u062f. \u0647\u0631 &#8221; Pod &#8221; \u06cc\u06a9 \u0622\u062f\u0631\u0633 IP \u0628\u0631\u0627\u06cc \u062e\u0648\u062f \u062f\u0627\u0631\u062f \u0648 \u0628\u0627\u06cc\u062f \u0628\u062a\u0648\u0627\u0646 \u062f\u0631 \u0633\u0631\u0648\u0631 \u062f\u06cc\u06af\u0631 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0622\u062f\u0631\u0633 IP \u0645\u0631\u0628\u0648\u0637\u0647 \u0628\u0647 \u0622\u0646 \u0645\u062a\u0635\u0644 \u0634\u062f. \u0645\u062e\u0627\u0632\u0646\u06cc \u06a9\u0647 \u0628\u0631 \u0631\u0648\u06cc \u06cc\u06a9 \u0633\u0631\u0648\u0631 \u0647\u0633\u062a\u0646\u062f \u0628\u0631\u0627\u062d\u062a\u06cc \u0628\u0648\u0633\u06cc\u0644\u0647 \u0631\u0627\u0628\u0637 \u0647\u0627\u06cc \u0645\u062d\u0644\u06cc \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0631\u0642\u0631\u0627\u0631 \u0645\u06cc \u06a9\u0646\u0646\u062f. \u0645\u0634\u062e\u0635 \u0634\u062f\u0646 \u0645\u0633\u06cc\u0631 \u0634\u0641\u0627\u0641 \u0627\u0632 \u06cc\u06a9 pod \u0628\u0647 \u06cc\u06a9 pod \u062f\u0631 \u0633\u0631\u0648\u0631 \u062f\u06cc\u06af\u0631 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u06cc\u06a9 \u0634\u0628\u06a9\u0647 \u062c\u062f\u0627\u06af\u0627\u0646\u0647 \u062f\u0627\u0631\u062f.<\/p>\n<p style=\"text-align: justify;\">\u0627\u06cc\u0646 \u06a9\u0627\u0631 \u062a\u0648\u0633\u0637 \u067e\u0644\u0627\u06af\u06cc\u0646 \u0634\u0628\u06a9\u0647 pod \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u0634\u0648\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634 \u0627\u0632 &#8221; Flannel &#8221; \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u06cc\u06a9 \u06af\u0632\u06cc\u0646\u0647 \u067e\u0627\u06cc\u062f\u0627\u0631 \u0648 \u0645\u0646\u0627\u0633\u0628 \u0645\u06cc \u0628\u0627\u0634\u062f.<\/p>\n<h3 style=\"text-align: justify;\"><span style=\"color: #0000ff;\">\u06cc\u06a9 Ansible playbook \u0628\u0627 \u0646\u0627\u0645 master.yml \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f :<\/span><\/h3>\n<blockquote>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">nano ~\/kube-cluster\/master.yml<\/pre>\n<p>&nbsp;<\/p><\/blockquote>\n<p style=\"text-align: justify;\"><strong><span style=\"color: #000080;\">\u0645\u062a\u0646 play \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0646\u0635\u0628 Flannel \u0648 \u0645\u0642\u062f\u0627\u0631 \u062f\u0647\u06cc \u0627\u0648\u0644\u06cc\u0647 \u06a9\u0644\u0627\u0633\u062a\u0631 \u0648\u0627\u0631\u062f \u0646\u0645\u0627\u06cc\u06cc\u062f:<\/span> <\/strong><\/p>\n<blockquote>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">- hosts: master\r\nbecome: yes\r\ntasks:\r\n- name: initialize the cluster\r\nshell: kubeadm init --pod-network-cidr=10.244.0.0\/16 &gt;&gt; cluster_initialized.txt\r\nargs:\r\nchdir: $HOME\r\ncreates: cluster_initialized.txt\r\n<\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">- name: create .kube directory\r\nbecome: yes\r\nbecome_user: ubuntu\r\nfile:\r\npath: $HOME\/.kube\r\nstate: directory\r\nmode: 0755<\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">- name: copy admin.conf to user's kube config\r\ncopy:\r\nsrc: \/etc\/kubernetes\/admin.conf\r\ndest: \/home\/ubuntu\/.kube\/config\r\nremote_src: yes\r\nowner: ubuntu<\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">- name: copy admin.conf to user's kube config\r\ncopy:\r\nsrc: \/etc\/kubernetes\/admin.conf\r\ndest: \/home\/ubuntu\/.kube\/config\r\nremote_src: yes\r\nowner: ubuntu<\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">creates: pod_network_setup.txt<\/pre>\n<p>&nbsp;<\/p><\/blockquote>\n<p style=\"text-align: justify;\">\u062f\u0631 \u0627\u0646\u062a\u0647\u0627 \u0641\u0627\u06cc\u0644 \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0631\u062f\u0647 \u0648 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f.<\/p>\n<h3 style=\"text-align: justify;\"><span style=\"color: #0000ff;\">\u0641\u0627\u06cc\u0644 playbook \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a Local \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/span><\/h3>\n<blockquote>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">ansible-playbook -i hosts ~\/kube-cluster\/master.yml0<\/pre>\n<p>&nbsp;<\/p><\/blockquote>\n<p style=\"text-align: justify;\"><span style=\"color: #000080;\">\u0628\u0631\u0627\u06cc \u0628\u0631\u0631\u0633\u06cc \u0648\u0636\u0639\u06cc\u062a \u0633\u0631\u0648\u0631 master \u0627\u0632 \u0637\u0631\u06cc\u0642 ssh \u0628\u0627 \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0628\u0647 \u0633\u0631\u0648\u0631 \u0645\u062a\u0635\u0644 \u0634\u0648\u06cc\u062f :<\/span><\/p>\n<blockquote>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">ssh ubuntu@master_ip<\/pre>\n<p>&nbsp;<\/p><\/blockquote>\n<p style=\"text-align: justify;\"><span style=\"color: #000080;\">\u067e\u0633 \u0627\u0632 \u0648\u0627\u0631\u062f \u0634\u062f\u0646 \u0628\u0647 \u0633\u0631\u0648\u0631 \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0631\u0627 \u0627\u062c\u0631\u0627 \u0646\u0645\u0627\u06cc\u06cc\u062f :<\/span><\/p>\n<blockquote>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">kubectl get nodes<\/pre>\n<p>&nbsp;<\/p><\/blockquote>\n<p style=\"text-align: justify;\"><span style=\"color: #000080;\">\u0633\u067e\u0633 \u0628\u0627\u06cc\u062f \u062e\u0631\u0648\u062c\u06cc \u0645\u0634\u0627\u0628\u0647 \u0632\u06cc\u0631 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u06cc\u062f:<\/span><\/p>\n<blockquote>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">Output\r\nNAME STATUS ROLES AGE VERSION\r\nmaster Ready master 1d v1.10.1<\/pre>\n<p>&nbsp;<\/p><\/blockquote>\n<p style=\"text-align: justify;\">\u062f\u0631 \u0633\u0631\u0648\u0631 master \u062a\u0645\u0627\u0645\u06cc \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0648 \u0645\u0642\u062f\u0627\u0631\u062f\u0647\u06cc \u0647\u0627\u06cc \u0627\u0648\u0644\u06cc\u0647 \u0627\u0646\u062c\u0627\u0645 \u0634\u062f\u0647 \u0648 \u0648\u0636\u0639\u06cc\u062a \u0633\u0631\u0648\u0631 \u062f\u0631 \u062d\u0627\u0644\u062a ready\u0645\u06cc \u0628\u0627\u0634\u062f \u0648 \u0628\u0631\u0627\u06cc \u0627\u062a\u0635\u0627\u0644 \u0628\u0647 \u0633\u0631\u0648\u0631 \u0647\u0627\u06cc worker \u0648 \u0627\u0631\u0633\u0627\u0644 \u0648\u0638\u0627\u06cc\u0641 \u0628\u0647 \u0622\u0646\u0647\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 API Server \u0622\u0645\u0627\u062f\u0647 \u0627\u0633\u062a. \u062d\u0627\u0644 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0633\u0631\u0648\u0631 \u0647\u0627\u06cc worker \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u0646\u0645\u0627\u06cc\u06cc\u062f.<\/p>\n<h3 style=\"text-align: justify;\"><span style=\"color: #0000ff;\">\u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0633\u0631\u0648\u0631 \u0647\u0627\u06cc Worker \u0628\u0631\u0627\u06cc <\/span><span style=\"color: #0000ff;\">\u0646\u0635\u0628 \u06a9\u0644\u0627\u0633\u062a\u0631\u06cc\u0646\u06af \u06a9\u0648\u0628\u0631\u0646\u062a\u06cc\u0633<\/span><\/h3>\n<p style=\"text-align: justify;\">\u0628\u0631\u0627\u06cc \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u06af\u0631\u0647 worker \u0628\u0627\u06cc\u062f \u062f\u0633\u062a\u0648\u0631\u06cc \u06a9\u0647 \u0634\u0627\u0645\u0644 \u062c\u0632\u0626\u06cc\u0627\u062a \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u06a9\u0644\u0627\u0633\u062a\u0631 \u0627\u0632 \u0642\u0628\u06cc\u0644 \u0622\u062f\u0631\u0633IP \u060c \u067e\u0648\u0631\u062a API \u0633\u0631\u0648\u0631 master \u0648 \u06cc\u06a9 \u062a\u0648\u06a9\u0646 \u0627\u0645\u0646\u06cc\u062a\u06cc \u0645\u06cc \u0628\u0627\u0634\u062f \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f. \u062a\u0646\u0647\u0627 \u0633\u0631\u0648\u0631\u06cc \u06a9\u0647 \u062a\u0648\u06a9\u0646 \u0631\u0627 \u0642\u0628\u0648\u0644 \u0645\u06cc \u06a9\u0646\u062f \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0628\u0647 \u06a9\u0644\u0627\u0633\u062a\u0631 \u0645\u062a\u0635\u0644 \u06af\u0631\u062f\u062f.<\/p>\n<p style=\"text-align: justify;\">\u0628\u0647 \u0645\u0633\u06cc\u0631 \u0641\u0636\u0627\u06cc \u06a9\u0627\u0631\u06cc Workspace \u0628\u0631\u0648\u06cc\u062f \u0648 \u06cc\u06a9 playbook \u0628\u0647 \u0646\u0627\u0645 workers.yml \u0627\u06cc\u062c\u0627\u062f \u0646\u0645\u0627\u06cc\u06cc\u062f:<\/p>\n<blockquote>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">nano ~\/kube-cluster\/workers.yml<\/pre>\n<p>&nbsp;<\/p><\/blockquote>\n<p style=\"text-align: justify;\"><span style=\"color: #000080;\">\u0645\u062a\u0646 \u0632\u06cc\u0631 \u0631\u0627 \u062f\u0631 \u0641\u0627\u06cc\u0644 \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f :<\/span><\/p>\n<blockquote>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">- hosts: master\r\nbecome: yes\r\ngather_facts: false\r\ntasks:\r\n- name: get join command\r\nshell: kubeadm token create --print-join-command\r\nregister: join_command_raw<\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">- name: set join command\r\nset_fact:\r\njoin_command: \"{{ join_command_raw.stdout_lines[0] }}\"<\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">- hosts: workers\r\nbecome: yes\r\ntasks:\r\n- name: join cluster\r\nshell: \"{{ hostvars['master'].join_command }} &gt;&gt; node_joined.txt\"\r\nargs:\r\nchdir: $HOME\r\ncreates: node_joined.txt<\/pre>\n<p>&nbsp;<\/p><\/blockquote>\n<p style=\"text-align: justify;\">\u0641\u0627\u06cc\u0644 \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0631\u062f\u0647 \u0648 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f.<\/p>\n<h4 style=\"text-align: justify;\"><span style=\"color: #000080;\">\u0633\u067e\u0633 \u0641\u0627\u06cc\u0644 playbook \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f :<\/span><\/h4>\n<blockquote>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">ansible-playbook -i hosts ~\/kube-cluster\/workers.yml0<\/pre>\n<p>&nbsp;<\/p><\/blockquote>\n<p style=\"text-align: justify;\">\u0628\u0627 \u0627\u0636\u0627\u0641\u0647 \u0634\u062f\u0646 \u0633\u0631\u0648\u0631 \u0647\u0627\u06cc worker \u06a9\u0644\u0627\u0633\u062a\u0631 \u0634\u0645\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u06a9\u0627\u0645\u0644 \u062a\u0646\u0638\u06cc\u0645 \u0634\u062f\u0647 \u0648 worker \u0647\u0627 \u0622\u0645\u0627\u062f\u0647 \u0627\u062c\u0631\u0627\u06cc \u0628\u0627\u0631\u0647\u0627\u06cc \u06a9\u0627\u0631\u06cc \u0627\u0631\u0633\u0627\u0644\u06cc \u0647\u0633\u062a\u0646\u062f.<\/p>\n<h3 style=\"text-align: justify;\"><span style=\"color: #0000ff;\">\u0628\u0631\u0631\u0633\u06cc \u06a9\u0644\u0627\u0633\u062a\u0631<\/span><\/h3>\n<p style=\"text-align: justify;\">\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647 \u0648\u0636\u0639\u06cc\u062a \u06af\u0631\u0647 \u0647\u0627 \u06cc\u0627 \u0633\u0631\u0648\u0631 \u0647\u0627\u06cc \u0645\u062a\u0635\u0644 \u0628\u0647 \u0633\u0631\u0648\u0631 master \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f. \u0627\u0628\u062a\u062f\u0627 \u0628\u0647 \u0633\u0631\u0648\u0631 master \u0645\u062a\u0635\u0644 \u0634\u0648\u06cc\u062f :<\/p>\n<blockquote>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">ssh ubuntu@master_ip<\/pre>\n<p>&nbsp;<\/p><\/blockquote>\n<p style=\"text-align: justify;\"><span style=\"color: #000080;\">\u0633\u067e\u0633 \u062c\u0647\u062a \u0628\u0631\u0631\u0633\u06cc \u0648\u0636\u0639\u06cc\u062a \u0633\u0631\u0648\u0631 \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f :<\/span><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">kubectl get nodes<\/pre>\n<p style=\"text-align: justify;\"><span style=\"color: #000080;\">\u062e\u0631\u0648\u062c\u06cc \u0628\u0627\u06cc\u062f \u0645\u0634\u0627\u0628\u0647 \u0632\u06cc\u0631 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0634\u0648\u062f :<\/span><\/p>\n<blockquote>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">Output\r\nNAME STATUS ROLES AGE VERSION\r\nmaster Ready master 1d v1.10.1\r\nworker1 Ready &lt;none&gt; 1d v1.10.1\r\nworker2 Ready &lt;none&gt; 1d v1.10.1<\/pre>\n<p>&nbsp;<\/p><\/blockquote>\n<p style=\"text-align: justify;\">\u0627\u06af\u0631 \u0648\u0636\u0639\u06cc\u062a STATUS \u0633\u0631\u0648\u0631 \u0647\u0627 \u062f\u0631 \u062d\u0627\u0644\u062a ready \u0628\u0648\u062f\u060c \u0628\u0647 \u0627\u06cc\u0646 \u0645\u0639\u0646\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0627\u06cc\u0646 \u0642\u0633\u0645\u062a \u0627\u0632 \u0633\u0631\u0648\u0631 \u0628\u0647 \u062f\u0631\u0633\u062a\u06cc \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0622\u0645\u0627\u062f\u0647 \u0627\u0646\u062c\u0627\u0645 \u06a9\u0627\u0631\u0647\u0627 \u0645\u06cc \u0628\u0627\u0634\u062f.<\/p>\n<p style=\"text-align: justify;\">\u0648 \u0627\u06af\u0631 \u0648\u0636\u0639\u06cc\u062a STATUS \u0647\u0631 \u0633\u0631\u0648\u0631\u06cc \u062f\u0631 \u062d\u0627\u0644\u062a &#8221; NotReady &#8221; \u0628\u0627\u0634\u062f \u0646\u0634\u0627\u0646 \u062f\u0647\u0646\u062f\u0647 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0622\u0646 \u0633\u0631\u0648\u0631 \u0647\u0646\u0648\u0632 \u0628\u0647 \u0627\u062a\u0645\u0627\u0645 \u0646\u0631\u0633\u06cc\u062f\u0647 \u0627\u0633\u062a. \u062d\u062f\u0648\u062f 5 \u062a\u0627 10 \u062f\u0642\u06cc\u0642\u0647 \u0642\u0628\u0644 \u0627\u0632 \u0627\u062c\u0631\u0627\u06cc \u0645\u062c\u062f\u062f \u062f\u0633\u062a\u0648\u0631 &#8221; kubectl get node &#8221; \u0635\u0628\u0631 \u06a9\u0646\u06cc\u062f\u060c \u0633\u067e\u0633 \u0645\u062c\u062f\u062f\u0627 \u062e\u0631\u0648\u062c\u06cc \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u0646\u0645\u0627\u06cc\u06cc\u062f. \u0627\u06af\u0631 \u0647\u0646\u0648\u0632 \u0648\u0636\u0639\u06cc\u062a \u0633\u0631\u0648\u0631 \u0647\u0627 NotReady \u0628\u0648\u062f\u060c \u0628\u0627\u06cc\u062f \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u0645\u0631\u0627\u062d\u0644 \u0642\u0628\u0644 \u0631\u0627 \u0645\u062c\u062f\u062f\u0627 \u0628\u0631\u0631\u0633\u06cc \u0648 \u0627\u062c\u0631\u0627 \u0646\u0645\u0627\u06cc\u06cc\u062f.<\/p>\n<h3 style=\"text-align: justify;\"><span style=\"color: #0000ff;\">\u0627\u062c\u0631\u0627\u06cc \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u062f\u0631 \u06a9\u0644\u0627\u0633\u062a\u0631 \u06a9\u0648\u0628\u0631\u0646\u062a\u06cc\u0633<\/span><\/h3>\n<p style=\"text-align: justify;\">\u0627\u06a9\u0646\u0648\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0647\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u06cc \u06a9\u0647 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u0645\u062e\u0632\u0646 \u062f\u0627\u0631\u062f \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f. \u0628\u0631\u0627\u06cc \u0646\u0645\u0648\u0646\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 Nginx \u0631\u0627 \u0628\u0631 \u0631\u0648\u06cc \u06a9\u0644\u0627\u0633\u062a\u0631 \u0627\u062c\u0631\u0627 \u0645\u06cc \u06a9\u0646\u06cc\u0645. \u062f\u0631 \u0633\u0631\u0648\u0631 master \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0631\u0627 \u062c\u0647\u062a \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 deployment \u0627\u0632 nginx \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f:<\/p>\n<blockquote>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">kubectl run nginx --image=nginx --port 80<\/pre>\n<p>&nbsp;<\/p><\/blockquote>\n<p style=\"text-align: justify;\">\u0633\u067e\u0633 \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u0633\u0631\u0648\u06cc\u0633 \u0628\u0627 \u0646\u0627\u0645 nginx \u0628\u0647 \u0645\u0646\u0638\u0648\u0631 \u062f\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631 \u0639\u0645\u0648\u0645 \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u0646 \u0627\u06cc\u0646 \u0628\u0631\u0646\u0627\u0645\u0647\u060c \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0631\u0627 \u0648\u0627\u0631\u062f \u0646\u0645\u0627\u06cc\u06cc\u062f. \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0627\u0632 \u0637\u0631\u06cc\u0642 &#8221; NodePort &#8221; \u0628\u0647 \u0645\u0646\u0638\u0648\u0631 \u0628\u0627\u0632 \u06a9\u0631\u062f\u0646 \u06cc\u06a9 \u067e\u0648\u0631\u062a \u062f\u0644\u062e\u0648\u0627\u0647 \u062c\u0647\u062a \u0627\u062a\u0635\u0627\u0644 \u0628\u0647 \u06cc\u06a9 pod \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u0634\u0648\u062f:<\/p>\n<blockquote>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">kubectl expose deploy nginx --port 80 --target-port 80 --type NodePort<\/pre>\n<p>&nbsp;<\/p><\/blockquote>\n<p style=\"text-align: justify;\"><span style=\"color: #000080;\">\u062f\u0631 \u0627\u062f\u0627\u0645\u0647 \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f :<\/span><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">kubectl get services<\/pre>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify;\"><span style=\"color: #000080;\">\u062e\u0631\u0648\u062c\u06cc \u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u0645\u0627\u0646\u0646\u062f \u0632\u06cc\u0631 \u0645\u06cc \u0628\u0627\u0634\u062f:<\/span><\/p>\n<blockquote>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">Output\r\nNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE\r\nkubernetes ClusterIP 10.96.0.1 &lt;none&gt; 443\/TCP 1d\r\nnginx NodePort 10.109.228.209 &lt;none&gt; 80:nginx_port\/TCP 40m<\/pre>\n<p>&nbsp;<\/p><\/blockquote>\n<p style=\"text-align: justify;\"><span style=\"text-align: right;\">\u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 \u062e\u0631\u0648\u062c\u06cc \u0645\u0634\u0627\u0647\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u062f Nginx \u0628\u0631 \u0631\u0648\u06cc \u067e\u0648\u0631\u062a 80 \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f. \u06a9\u0648\u0628\u0631\u0646\u062a\u06cc\u0633 \u06cc\u06a9 \u067e\u0648\u0631\u062a \u062a\u0635\u0627\u062f\u0641\u06cc \u0628\u0627\u0644\u0627\u062a\u0631 \u0627\u0632 30000 \u06a9\u0647 \u0645\u0637\u0645\u0626\u0646 \u0627\u0633\u062a \u0628\u0647 \u0633\u0631\u0648\u06cc\u0633 \u062f\u06cc\u06af\u0631\u06cc \u062a\u0639\u0644\u0642 \u0646\u06af\u0631\u0641\u062a\u0647 \u0627\u0633\u062a \u0631\u0627 \u0628\u0647 \u0627\u06cc\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u062e\u0648\u0627\u0647\u062f \u062f\u0627\u062f.\u00a0<\/span><\/p>\n<p style=\"text-align: justify;\">\u0628\u0631\u0627\u06cc \u0628\u0631\u0631\u0633\u06cc \u0635\u062d\u062a \u0639\u0645\u0644\u06a9\u0631\u062f \u0622\u062f\u0631\u0633 http:\/\/worker_1_ip:nginx_port \u06cc\u0627 http:\/\/worker_2_ip:nginx_port \u0631\u0627 \u062f\u0631 \u0645\u0631\u0648\u0631\u06af\u0631 \u0633\u0631\u0648\u0631 \u0645\u062d\u0644\u06cc \u062e\u0648\u062f \u0648\u0627\u0631\u062f \u0646\u0645\u0627\u06cc\u06cc\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u0642\u0633\u0645\u062a \u0628\u0627\u06cc\u062f \u0635\u0641\u062d\u0647 Nginx \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u06cc\u062f.<br \/>\n\u0628\u0631\u0627\u06cc \u062d\u0630\u0641 \u0628\u0631\u0646\u0627\u0645\u0647 Nginx \u0627\u0628\u062a\u062f\u0627 \u0633\u0631\u0648\u06cc\u0633 \u0622\u0646 \u0631\u0627 \u0627\u0632 \u0633\u0631\u0648\u0631 master \u062d\u0630\u0641 \u06a9\u0646\u06cc\u062f :<\/p>\n<blockquote>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">kubectl delete service nginx<\/pre>\n<p>&nbsp;<\/p><\/blockquote>\n<p style=\"text-align: justify;\"><span style=\"color: #000080;\">\u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0631\u0627 \u0648\u0627\u0631\u062f \u0646\u0645\u0627\u06cc\u06cc\u062f \u062a\u0627 \u0627\u0632 \u062d\u0630\u0641 \u0634\u062f\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f :<\/span><\/p>\n<blockquote>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">kubectl get services<\/pre>\n<p>&nbsp;<\/p><\/blockquote>\n<p style=\"text-align: justify;\"><span style=\"color: #000080;\">\u062e\u0631\u0648\u062c\u06cc \u0628\u0627\u06cc\u062f \u0645\u0634\u0627\u0628\u0647 \u0632\u06cc\u0631 \u0628\u0627\u0634\u062f :<\/span><\/p>\n<blockquote>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">Output\r\nNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE\r\nkubernetes ClusterIP 10.96.0.1 &lt;none&gt; 443\/TCP 1d\r\n\u0648 \u062f\u0631 \u0627\u0646\u062a\u0647\u0627 deployment \u0631\u0627 \u062d\u0630\u0641 \u0646\u0645\u0627\u06cc\u06cc\u062f:\r\nkubectl get deployments\r\nOutput\r\nNo resources found.<\/pre>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647 \u0627\u0632 <a title=\"\u0622\u0645\u0648\u0632\u0634 \u0631\u0627\u06cc\u06af\u0627\u0646 \u0644\u06cc\u0646\u0648\u06a9\u0633\" href=\"\/blog\/os\/linux\" target=\"_blank\" rel=\"noopener\">\u0622\u0645\u0648\u0632\u0634 \u0644\u06cc\u0646\u0648\u06a9\u0633<\/a>\u060c \u0628\u0647 \u0628\u0631\u0631\u0633\u06cc \u0646\u0635\u0628 \u06a9\u0644\u0627\u0633\u062a\u0631\u06cc\u0646\u06af \u06a9\u0648\u0628\u0631\u0646\u062a\u06cc\u0633 \u0628\u0631 \u0631\u0648\u06cc \u0633\u0631\u0648\u0631 \u0627\u0648\u0628\u0648\u0646\u062a\u0648 16.04 \u067e\u0631\u062f\u0627\u062e\u062a\u06cc\u0645.<\/p><\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>\u0646\u062d\u0648\u0647 \u0646\u0635\u0628 Kubernetes \u062f\u0631 \u0644\u06cc\u0646\u0648\u06a9\u0633 \u0627\u0648\u0628\u0648\u0646\u062a\u0648 16.04\u061b \u06a9\u0648\u0628\u0631\u0646\u062a\u06cc\u0633&#8221; Kubernetes&#8221; \u06cc\u06a9 \u0633\u06cc\u0633\u062a\u0645 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u062e\u0627\u0632\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u062a\u0646 \u0628\u0627\u0632 \u0648 \u0631\u0627\u06cc\u06af\u0627\u0646 \u0627\u0631\u0627\u0626\u0647 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a. \u0627\u06cc\u0646 \u067e\u0631\u0648\u0698\u0647 \u062a\u0648\u0633\u0637 \u06af\u0648\u06af\u0644 \u0648 \u0628\u0631 \u0627\u0633\u0627\u0633 \u062a\u062c\u0631\u0628\u06cc\u0627\u062a \u0627\u062c\u0631\u0627\u06cc \u0645\u062e\u0627\u0632\u0646 \u062f\u0631 \u0645\u062d\u0635\u0648\u0644\u0627\u062a \u0627\u06cc\u062c\u0627\u062f \u06af\u0631\u062f\u06cc\u062f\u0647 \u0627\u0633\u062a. \u062f\u0631 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634 \u0628\u0647 \u0635\u0648\u0631\u062a \u062e\u0644\u0627\u0635\u0647 \u0648 \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0628\u0647 \u0646\u0635\u0628 \u060c \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0648 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a [&hellip;]<\/p>\n","protected":false},"author":68,"featured_media":35521,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[26],"tags":[],"class_list":["post-7361","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-linux"],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/parspack.com\/blog\/wp-json\/wp\/v2\/posts\/7361","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/parspack.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/parspack.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/parspack.com\/blog\/wp-json\/wp\/v2\/users\/68"}],"replies":[{"embeddable":true,"href":"https:\/\/parspack.com\/blog\/wp-json\/wp\/v2\/comments?post=7361"}],"version-history":[{"count":3,"href":"https:\/\/parspack.com\/blog\/wp-json\/wp\/v2\/posts\/7361\/revisions"}],"predecessor-version":[{"id":42026,"href":"https:\/\/parspack.com\/blog\/wp-json\/wp\/v2\/posts\/7361\/revisions\/42026"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/parspack.com\/blog\/wp-json\/wp\/v2\/media\/35521"}],"wp:attachment":[{"href":"https:\/\/parspack.com\/blog\/wp-json\/wp\/v2\/media?parent=7361"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/parspack.com\/blog\/wp-json\/wp\/v2\/categories?post=7361"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/parspack.com\/blog\/wp-json\/wp\/v2\/tags?post=7361"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}