{"id":3139,"date":"2023-02-02T16:00:18","date_gmt":"2023-02-02T09:00:18","guid":{"rendered":"https:\/\/www.forest.go.th\/it\/?p=3139"},"modified":"2023-07-20T11:26:20","modified_gmt":"2023-07-20T04:26:20","slug":"install-kubernetes-using-ansible-role-lablabs-rke2","status":"publish","type":"post","link":"https:\/\/www.forest.go.th\/it\/blog\/install-kubernetes-using-ansible-role-lablabs-rke2\/","title":{"rendered":"\u0e01\u0e32\u0e23\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07 Kubernetes cluster \u0e42\u0e14\u0e22\u0e43\u0e0a\u0e49 Ansible (role lablabs.rke2)"},"content":{"rendered":"\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.forest.go.th\/it\/wp-content\/uploads\/sites\/21\/2023\/02\/k8s-ansible.png\"><img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"683\" src=\"https:\/\/www.forest.go.th\/it\/wp-content\/uploads\/sites\/21\/2023\/02\/k8s-ansible.png\" alt=\"\" class=\"wp-image-3165\" srcset=\"https:\/\/www.forest.go.th\/it\/wp-content\/uploads\/sites\/21\/2023\/02\/k8s-ansible.png 1024w, https:\/\/www.forest.go.th\/it\/wp-content\/uploads\/sites\/21\/2023\/02\/k8s-ansible-300x200.png 300w, https:\/\/www.forest.go.th\/it\/wp-content\/uploads\/sites\/21\/2023\/02\/k8s-ansible-768x512.png 768w, https:\/\/www.forest.go.th\/it\/wp-content\/uploads\/sites\/21\/2023\/02\/k8s-ansible-272x182.png 272w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p>Kubernetes \u0e40\u0e1b\u0e47\u0e19\u0e0b\u0e2d\u0e1f\u0e15\u0e4c\u0e41\u0e27\u0e23\u0e4c\u0e42\u0e2d\u0e40\u0e1e\u0e19\u0e0b\u0e2d\u0e23\u0e4c\u0e2a\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e2a\u0e23\u0e49\u0e32\u0e07 \u0e02\u0e22\u0e32\u0e22\u0e02\u0e19\u0e32\u0e14 \u0e41\u0e25\u0e30\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23 container \u0e42\u0e14\u0e22\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34<\/p>\n\n\n\n<p>Ansible \u0e40\u0e1b\u0e47\u0e19\u0e0b\u0e2d\u0e1f\u0e15\u0e4c\u0e41\u0e27\u0e23\u0e4c\u0e42\u0e2d\u0e40\u0e1e\u0e19\u0e0b\u0e2d\u0e23\u0e4c\u0e2a\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e01\u0e31\u0e1a\u0e40\u0e17\u0e04\u0e42\u0e19\u0e42\u0e25\u0e22\u0e35\u0e2a\u0e32\u0e23\u0e2a\u0e19\u0e40\u0e17\u0e28\u0e42\u0e14\u0e22\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34 \u0e17\u0e33\u0e43\u0e2b\u0e49\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e41\u0e21\u0e48\u0e02\u0e48\u0e32\u0e22\/\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e41\u0e21\u0e48\u0e02\u0e48\u0e32\u0e22\u0e40\u0e2a\u0e21\u0e37\u0e2d\u0e19 \u0e40\u0e0a\u0e48\u0e19 \u0e2a\u0e31\u0e48\u0e07\u0e01\u0e32\u0e23\u0e43\u0e2b\u0e49 restart, \u0e1b\u0e23\u0e31\u0e1a\u0e23\u0e38\u0e48\u0e19\u0e0b\u0e2d\u0e1f\u0e15\u0e4c\u0e41\u0e27\u0e23\u0e4c, \u0e2b\u0e23\u0e37\u0e2d\u0e40\u0e1b\u0e34\u0e14\u0e43\u0e2b\u0e49 service \u0e17\u0e33\u0e07\u0e32\u0e19 \u0e44\u0e14\u0e49\u0e1e\u0e23\u0e49\u0e2d\u0e21 \u0e46 \u0e01\u0e31\u0e19 \u0e42\u0e14\u0e22\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e40\u0e02\u0e49\u0e32\u0e44\u0e1b\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23\u0e17\u0e35\u0e25\u0e30\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07 \u0e19\u0e2d\u0e01\u0e08\u0e32\u0e01\u0e19\u0e35\u0e49 \u0e22\u0e31\u0e07\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e1a\u0e17\u0e1a\u0e32\u0e17\u0e02\u0e2d\u0e07\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e41\u0e21\u0e48\u0e02\u0e48\u0e32\u0e22\u0e41\u0e15\u0e48\u0e25\u0e30\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07 \u0e27\u0e48\u0e32\u0e08\u0e30\u0e43\u0e2b\u0e49\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07\/\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32\u0e0b\u0e2d\u0e1f\u0e15\u0e4c\u0e41\u0e27\u0e23\u0e4c\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e44\u0e23 \u0e42\u0e14\u0e22\u0e01\u0e32\u0e23\u0e23\u0e30\u0e1a\u0e38 role \u0e44\u0e14\u0e49\u0e2d\u0e35\u0e01\u0e14\u0e49\u0e27\u0e22 \u0e0b\u0e36\u0e48\u0e07\u0e1c\u0e39\u0e49\u0e14\u0e39\u0e41\u0e25\u0e23\u0e30\u0e1a\u0e1a\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e2a\u0e23\u0e49\u0e32\u0e07 \u0e40\u0e1c\u0e22\u0e41\u0e1e\u0e23\u0e48 \u0e41\u0e25\u0e30\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19 role \u0e17\u0e35\u0e48\u0e21\u0e35\u0e01\u0e32\u0e23\u0e40\u0e1c\u0e22\u0e41\u0e1e\u0e23\u0e48\u0e15\u0e32\u0e21\u0e41\u0e2b\u0e25\u0e48\u0e07\u0e15\u0e48\u0e32\u0e07 \u0e46 \u0e44\u0e14\u0e49\u0e15\u0e32\u0e21\u0e04\u0e27\u0e32\u0e21\u0e40\u0e2b\u0e21\u0e32\u0e30\u0e2a\u0e21<\/p>\n\n\n\n<p>lablabs.rke2 \u0e40\u0e1b\u0e47\u0e19 role \u0e02\u0e2d\u0e07 Ansible \u0e17\u0e35\u0e48\u0e1e\u0e31\u0e12\u0e19\u0e32\u0e02\u0e36\u0e49\u0e19\u0e42\u0e14\u0e22\u0e1a\u0e23\u0e34\u0e29\u0e31\u0e17 Labyrinth Labs \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e2d\u0e33\u0e19\u0e27\u0e22\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e30\u0e14\u0e27\u0e01\u0e43\u0e19\u0e01\u0e32\u0e23\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07 Kubernetes cluster \u0e14\u0e49\u0e27\u0e22\u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49\u0e0b\u0e2d\u0e1f\u0e15\u0e4c\u0e41\u0e27\u0e23\u0e4c Rancher Kubernetes Engine 2 : RKE 2<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u0e2a\u0e34\u0e48\u0e07\u0e17\u0e35\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e08\u0e31\u0e14\u0e40\u0e15\u0e23\u0e35\u0e22\u0e21<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e41\u0e21\u0e48\u0e02\u0e48\u0e32\u0e22 \u0e2b\u0e23\u0e37\u0e2d\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e41\u0e21\u0e48\u0e02\u0e48\u0e32\u0e22\u0e40\u0e2a\u0e21\u0e37\u0e2d\u0e19\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07 Kubernetes Cluster \u0e08\u0e33\u0e19\u0e27\u0e19 3 \u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e02\u0e36\u0e49\u0e19\u0e44\u0e1b \u0e42\u0e14\u0e22\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e43\u0e0a\u0e49\u0e23\u0e30\u0e1a\u0e1a\u0e1b\u0e0f\u0e34\u0e1a\u0e31\u0e15\u0e34\u0e01\u0e32\u0e23 Rocky Linux 8, Ubuntu 20.04 LTS, \u0e2b\u0e23\u0e37\u0e2d Ubuntu 22.04 LTS (\u0e2b\u0e23\u0e37\u0e2d\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e08\u0e32\u0e01<a href=\"https:\/\/github.com\/lablabs\/ansible-role-rke2#tested-on\" target=\"_blank\" rel=\"noreferrer noopener\">\u0e23\u0e30\u0e1a\u0e1a\u0e1b\u0e0f\u0e34\u0e1a\u0e31\u0e15\u0e34\u0e01\u0e32\u0e23\u0e17\u0e35\u0e48\u0e1c\u0e48\u0e32\u0e19\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e23\u0e48\u0e27\u0e21\u0e01\u0e31\u0e1a RKE2 Ansible Role \u0e41\u0e25\u0e49\u0e27<\/a>) \u0e2d\u0e19\u0e36\u0e48\u0e07 \u0e2b\u0e32\u0e01\u0e1b\u0e23\u0e30\u0e2a\u0e07\u0e04\u0e4c\u0e17\u0e35\u0e48\u0e08\u0e30\u0e43\u0e0a\u0e49 Rook Ceph \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23\u0e40\u0e19\u0e37\u0e49\u0e2d\u0e17\u0e35\u0e48\u0e08\u0e31\u0e14\u0e40\u0e01\u0e47\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e43\u0e19\u0e2d\u0e19\u0e32\u0e04\u0e15 \u0e43\u0e2b\u0e49\u0e40\u0e15\u0e23\u0e35\u0e22\u0e21 block storage \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e08\u0e31\u0e14\u0e40\u0e01\u0e47\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e44\u0e27\u0e49\u0e14\u0e49\u0e27\u0e22 \u0e40\u0e0a\u0e48\u0e19 \u0e43\u0e0a\u0e49 \/dev\/sda \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07\u0e23\u0e30\u0e1a\u0e1a\u0e1b\u0e0f\u0e34\u0e1a\u0e31\u0e15\u0e34\u0e01\u0e32\u0e23 \u0e41\u0e25\u0e30\u0e43\u0e0a\u0e49 \/dev\/sdb \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e08\u0e31\u0e14\u0e40\u0e01\u0e47\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 (\u0e2b\u0e32\u0e01\u0e08\u0e30\u0e43\u0e0a\u0e49 LVM \u0e40\u0e1b\u0e47\u0e19 block storage \u0e04\u0e27\u0e23\u0e43\u0e0a\u0e49 Rook \u0e23\u0e38\u0e48\u0e19 1.9.8 \u0e41\u0e25\u0e30 Ceph \u0e23\u0e38\u0e48\u0e19 16.2.6 \u0e02\u0e36\u0e49\u0e19\u0e44\u0e1b)<\/li>\n\n\n\n<li>\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e41\u0e21\u0e48\u0e02\u0e48\u0e32\u0e22\u0e17\u0e35\u0e48\u0e17\u0e33\u0e2b\u0e19\u0e49\u0e32\u0e17\u0e35\u0e48\u0e40\u0e1b\u0e47\u0e19 DNS Server \u0e42\u0e14\u0e22\u0e2a\u0e23\u0e49\u0e32\u0e07 A record \u0e43\u0e2b\u0e49\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e41\u0e21\u0e48\u0e02\u0e48\u0e32\u0e22\/\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e41\u0e21\u0e48\u0e02\u0e48\u0e32\u0e22\u0e40\u0e2a\u0e21\u0e37\u0e2d\u0e19\u0e17\u0e35\u0e48\u0e08\u0e30\u0e43\u0e0a\u0e49\u0e43\u0e19\u0e01\u0e32\u0e23\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07 Kubernetes Cluster \u0e17\u0e38\u0e01\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07 \u0e2d\u0e22\u0e48\u0e32\u0e07\u0e43\u0e19\u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e19\u0e35\u0e49\u0e08\u0e30\u0e43\u0e0a\u0e49\u0e40\u0e1b\u0e47\u0e19 <code>master01.k8s.example.com<\/code>, <code>master02.k8s.example.com<\/code>, \u0e41\u0e25\u0e30 <code>master03.k8s.example.com<\/code><\/li>\n\n\n\n<li>\u0e2a\u0e16\u0e32\u0e19\u0e35\u0e07\u0e32\u0e19 (workstation) \u0e17\u0e35\u0e48\u0e43\u0e0a\u0e49 Linux kernel \u0e43\u0e19\u0e23\u0e30\u0e1a\u0e1a\u0e1b\u0e0f\u0e34\u0e1a\u0e31\u0e15\u0e34\u0e01\u0e32\u0e23 (\u0e40\u0e19\u0e37\u0e48\u0e2d\u0e07\u0e08\u0e32\u0e01\u0e43\u0e19\u0e02\u0e13\u0e30\u0e17\u0e35\u0e48\u0e40\u0e02\u0e35\u0e22\u0e19\u0e1a\u0e17\u0e04\u0e27\u0e32\u0e21 \u0e23\u0e30\u0e1a\u0e1a\u0e1b\u0e0f\u0e34\u0e1a\u0e31\u0e15\u0e34\u0e01\u0e32\u0e23 Windows \u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e23\u0e2d\u0e07\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e17\u0e33\u0e07\u0e32\u0e19\u0e02\u0e2d\u0e07\u0e42\u0e1b\u0e23\u0e41\u0e01\u0e23\u0e21 Ansible \u0e42\u0e14\u0e22\u0e2a\u0e21\u0e1a\u0e39\u0e23\u0e13\u0e4c)<\/li>\n\n\n\n<li>Public IP<\/li>\n\n\n\n<li>\u0e01\u0e32\u0e23\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e2d\u0e34\u0e19\u0e40\u0e17\u0e2d\u0e23\u0e4c\u0e40\u0e19\u0e47\u0e15<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">\u0e02\u0e31\u0e49\u0e19\u0e15\u0e2d\u0e19<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u0e43\u0e19\u0e2a\u0e16\u0e32\u0e19\u0e35\u0e07\u0e32\u0e19 \u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07\u0e42\u0e1b\u0e23\u0e41\u0e01\u0e23\u0e21 Ansible \u0e23\u0e38\u0e48\u0e19 2.10 \u0e2b\u0e23\u0e37\u0e2d\u0e43\u0e2b\u0e21\u0e48\u0e01\u0e27\u0e48\u0e32 (<a href=\"https:\/\/github.com\/lablabs\/ansible-role-rke2#requirements\" target=\"_blank\" rel=\"noreferrer noopener\">\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e23\u0e38\u0e48\u0e19\u0e02\u0e31\u0e49\u0e19\u0e15\u0e48\u0e33\u0e44\u0e14\u0e49\u0e08\u0e32\u0e01\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e02\u0e2d\u0e07 RKE2 Ansible Role<\/a>)<\/li>\n\n\n\n<li>\u0e43\u0e19\u0e2a\u0e16\u0e32\u0e19\u0e35\u0e07\u0e32\u0e19 \u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07 Ansible role lablabs.rke2 \u0e42\u0e14\u0e22\u0e43\u0e0a\u0e49\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07 <code>ansible-galaxy install lablabs.rke2<\/code><\/li>\n\n\n\n<li>\u0e43\u0e19\u0e2a\u0e16\u0e32\u0e19\u0e35\u0e07\u0e32\u0e19 \u0e2a\u0e23\u0e49\u0e32\u0e07\u0e04\u0e39\u0e48\u0e01\u0e38\u0e0d\u0e41\u0e08 SSH \u0e42\u0e14\u0e22\u0e43\u0e0a\u0e49\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07 <code>ssh-keygen<\/code> \u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e23\u0e30\u0e1a\u0e38 passphrase \u0e08\u0e30\u0e44\u0e14\u0e49\u0e44\u0e1f\u0e25\u0e4c <code>id_&lt;\u0e0a\u0e37\u0e48\u0e2d\u0e2d\u0e31\u0e25\u0e01\u0e2d\u0e23\u0e34\u0e17\u0e36\u0e21&gt;<\/code> (private key) \u0e41\u0e25\u0e30 <code>id_&lt;\u0e0a\u0e37\u0e48\u0e2d\u0e2d\u0e31\u0e25\u0e01\u0e2d\u0e23\u0e34\u0e17\u0e36\u0e21&gt;.pub<\/code> (public key) \u0e43\u0e19\u0e42\u0e1f\u0e25\u0e40\u0e14\u0e2d\u0e23\u0e4c <code>~\/.ssh\/<\/code><\/li>\n\n\n\n<li>\u0e43\u0e19\u0e2a\u0e16\u0e32\u0e19\u0e35\u0e07\u0e32\u0e19 \u0e04\u0e31\u0e14\u0e25\u0e2d\u0e01\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e43\u0e19 public key \u0e44\u0e1b\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e40\u0e1b\u0e47\u0e19\u0e1a\u0e23\u0e23\u0e17\u0e31\u0e14\u0e43\u0e2b\u0e21\u0e48\u0e43\u0e19\u0e44\u0e1f\u0e25\u0e4c <code>~\/.ssh\/authorized_keys<\/code> \u0e02\u0e2d\u0e07\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e41\u0e21\u0e48\u0e02\u0e48\u0e32\u0e22\/\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e41\u0e21\u0e48\u0e02\u0e48\u0e32\u0e22\u0e40\u0e2a\u0e21\u0e37\u0e2d\u0e19\u0e17\u0e38\u0e01\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07 \u0e42\u0e14\u0e22\u0e43\u0e0a\u0e49\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07 <code>ssh-copy-id &lt;\u0e0a\u0e37\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49&gt;@&lt;\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e41\u0e21\u0e48\u0e02\u0e48\u0e32\u0e22&gt;<\/code> \u0e40\u0e0a\u0e48\u0e19 <code>ssh-copy-id root@master01.k8s.example.com<\/code><\/li>\n\n\n\n<li>\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e42\u0e1f\u0e25\u0e40\u0e14\u0e2d\u0e23\u0e4c k8s \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e43\u0e0a\u0e49\u0e40\u0e1b\u0e47\u0e19\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e17\u0e33\u0e07\u0e32\u0e19 \u0e42\u0e14\u0e22\u0e43\u0e0a\u0e49\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07 <code>mkdir ~\/k8s &amp;&amp; cd ~\/k8s<\/code><\/li>\n\n\n\n<li>\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e44\u0e1f\u0e25\u0e4c <code>hosts<\/code> \u0e42\u0e14\u0e22\u0e23\u0e30\u0e1a\u0e38\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e41\u0e21\u0e48\u0e02\u0e48\u0e32\u0e22\u0e43\u0e2b\u0e49\u0e04\u0e23\u0e1a\u0e16\u0e49\u0e27\u0e19 \u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07:\n<pre class=\"wp-block-code\"><code>k8s_cluster:\n  children:\n    masters:\n      hosts:\n        master01.k8s.example.com:\n          ansible_user: root\n          rke2_type: server\n        master02.k8s.example.com:\n          ansible_user: root\n          rke2_type: server\n        master03.k8s.example.com:\n          ansible_user: root\n          rke2_type: server\n<\/code><\/pre>\n<\/li>\n\n\n\n<li>\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e27\u0e48\u0e32\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e43\u0e0a\u0e49 Ansible \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e44\u0e1b\u0e22\u0e31\u0e07\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e41\u0e21\u0e48\u0e02\u0e48\u0e32\u0e22\u0e44\u0e14\u0e49 \u0e42\u0e14\u0e22\u0e43\u0e0a\u0e49\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07 <code>ansible all -i hosts -m ping<\/code> \u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07:\n<pre class=\"wp-block-code\"><code>$ ansible all -i hosts -m ping\nmaster01.k8s.example.com | SUCCESS =&gt; {\n    \"ansible_facts\": {\n        \"discovered_interpreter_python\": \"\/usr\/libexec\/platform-python\"\n    },\n    \"changed\": false,\n    \"ping\": \"pong\"\n}\nmaster02.k8s.example.com | SUCCESS =&gt; {\n    \"ansible_facts\": {\n        \"discovered_interpreter_python\": \"\/usr\/libexec\/platform-python\"\n    },\n    \"changed\": false,\n    \"ping\": \"pong\"\n}\nmaster03.k8s.example.com | SUCCESS =&gt; {\n    \"ansible_facts\": {\n        \"discovered_interpreter_python\": \"\/usr\/libexec\/platform-python\"\n    },\n    \"changed\": false,\n    \"ping\": \"pong\"\n}\n<\/code><\/pre>\n<\/li>\n\n\n\n<li> \u0e2a\u0e23\u0e49\u0e32\u0e07\u0e44\u0e1f\u0e25\u0e4c <code>prepare.yaml<\/code> \u0e15\u0e32\u0e21\u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e14\u0e49\u0e32\u0e19\u0e25\u0e48\u0e32\u0e07 \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e08\u0e31\u0e14\u0e40\u0e15\u0e23\u0e35\u0e22\u0e21\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e41\u0e21\u0e48\u0e02\u0e48\u0e32\u0e22 \u0e14\u0e31\u0e07\u0e19\u0e35\u0e49<ul> <li>\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07\u0e42\u0e1b\u0e23\u0e41\u0e01\u0e23\u0e21 tar \u0e0b\u0e36\u0e48\u0e07\u0e08\u0e33\u0e40\u0e1b\u0e47\u0e19\u0e15\u0e48\u0e2d\u0e01\u0e23\u0e30\u0e1a\u0e27\u0e19\u0e01\u0e32\u0e23\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07<\/li> <li>\u0e1b\u0e34\u0e14\u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19 swap (\u0e41\u0e21\u0e49\u0e27\u0e48\u0e32 Kubernetes \u0e23\u0e38\u0e48\u0e19 1.22 \u0e40\u0e1b\u0e47\u0e19\u0e15\u0e49\u0e19\u0e44\u0e1b\u0e08\u0e30\u0e23\u0e2d\u0e07\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e23\u0e48\u0e27\u0e21\u0e01\u0e31\u0e1a swap \u0e41\u0e25\u0e49\u0e27 \u0e41\u0e15\u0e48\u0e01\u0e47\u0e21\u0e35\u0e04\u0e33\u0e40\u0e15\u0e37\u0e2d\u0e19\u0e27\u0e48\u0e32<a href=\"https:\/\/kubernetes.io\/blog\/2021\/08\/09\/run-nodes-with-swap-alpha\/#caveats\" target=\"_blank\" rel=\"noreferrer noopener\">\u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19 swap \u0e08\u0e30\u0e17\u0e33\u0e43\u0e2b\u0e49\u0e04\u0e32\u0e14\u0e40\u0e14\u0e32\u0e01\u0e32\u0e23\u0e17\u0e33\u0e07\u0e32\u0e19\u0e02\u0e2d\u0e07 cluster \u0e44\u0e14\u0e49\u0e22\u0e32\u0e01\u0e02\u0e36\u0e49\u0e19<\/a>)<\/li> <li>\u0e1b\u0e34\u0e14\u0e01\u0e32\u0e23\u0e17\u0e33\u0e07\u0e32\u0e19\u0e02\u0e2d\u0e07 firewalld (\u0e40\u0e19\u0e37\u0e48\u0e2d\u0e07\u0e08\u0e32\u0e01\u0e43\u0e19\u0e02\u0e13\u0e30\u0e17\u0e35\u0e48\u0e40\u0e02\u0e35\u0e22\u0e19\u0e1a\u0e17\u0e04\u0e27\u0e32\u0e21 <a href=\"https:\/\/docs.rke2.io\/known_issues#firewalld-conflicts-with-default-networking\" target=\"_blank\" rel=\"noreferrer noopener\">RKE2 \u0e21\u0e35\u0e02\u0e49\u0e2d\u0e08\u0e33\u0e01\u0e31\u0e14\u0e43\u0e19\u0e01\u0e32\u0e23\u0e17\u0e33\u0e07\u0e32\u0e19\u0e23\u0e48\u0e27\u0e21\u0e01\u0e31\u0e1a firewalld<\/a>)<\/li> <\/ul> \u0e08\u0e32\u0e01\u0e19\u0e31\u0e49\u0e19\u0e43\u0e0a\u0e49\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07 <code>ansible-playbook -i hosts prepare.yaml<\/code>\n<pre class=\"wp-block-code\"><code>---\n- hosts: k8s_cluster\n  tasks:\n    - name: Install tar\n      package:\n        name: tar\n        state: present\n    - name: Disable swap for current session\n      command: swapoff -a\n    - name: Disable swap permanently\n      replace:\n        path: \/etc\/fstab\n        regexp: '^(\\s*)([^#\\n]+\\s+)(\\w+\\s+)swap(\\s+.*)$'\n        replace: '#\\1\\2\\3swap\\4'\n    - name: Stop and disable firewalld\n      systemd:\n        name: firewalld\n        state: stopped\n        enabled: no<\/code><\/pre>\n<\/li>\n\n\n\n<li>\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e44\u0e1f\u0e25\u0e4c <code>deploy.yaml<\/code> \u0e15\u0e32\u0e21\u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e14\u0e49\u0e32\u0e19\u0e25\u0e48\u0e32\u0e07 (\u0e2d\u0e49\u0e32\u0e07\u0e2d\u0e34\u0e07\u0e08\u0e32\u0e01 <a href=\"https:\/\/github.com\/lablabs\/ansible-role-rke2\/blob\/1.19.1\/README.md\" target=\"_blank\" rel=\"noreferrer noopener\">lablabs.rke2 \u0e23\u0e38\u0e48\u0e19 1.19.1<\/a> \u0e2b\u0e32\u0e01\u0e43\u0e0a\u0e49\u0e23\u0e38\u0e48\u0e19\u0e2d\u0e37\u0e48\u0e19\u0e42\u0e1b\u0e23\u0e14\u0e2d\u0e48\u0e32\u0e19\u0e44\u0e1f\u0e25\u0e4c README.md \u0e02\u0e2d\u0e07\u0e23\u0e38\u0e48\u0e19\u0e19\u0e31\u0e49\u0e19 \u0e46) \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07 Kubernetes \u0e1a\u0e19\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e41\u0e21\u0e48\u0e02\u0e48\u0e32\u0e22\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14 \u0e42\u0e14\u0e22\u0e21\u0e35\u0e23\u0e32\u0e22\u0e25\u0e30\u0e40\u0e2d\u0e35\u0e22\u0e14\u0e01\u0e32\u0e23\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32 \u0e14\u0e31\u0e07\u0e19\u0e35\u0e49 <ul> <li>\u0e40\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19 High Availability (HA)<\/li> <li>\u0e43\u0e0a\u0e49 kube-vip \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e08\u0e33\u0e25\u0e2d\u0e07 virtual IP \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e41\u0e21\u0e48\u0e02\u0e48\u0e32\u0e22\u0e17\u0e35\u0e48\u0e17\u0e33\u0e2b\u0e19\u0e49\u0e32\u0e17\u0e35\u0e48\u0e40\u0e1b\u0e47\u0e19 master (controller) \u0e17\u0e31\u0e49\u0e07 3 \u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07 \u0e41\u0e25\u0e30\u0e08\u0e48\u0e32\u0e22 IP \u0e43\u0e2b\u0e49\u0e41\u0e01\u0e48 service \u0e17\u0e35\u0e48\u0e21\u0e35\u0e0a\u0e19\u0e34\u0e14\u0e40\u0e1b\u0e47\u0e19 LoadBalancer<\/li> <li>\u0e1b\u0e34\u0e14 Keepalived (\u0e40\u0e19\u0e37\u0e48\u0e2d\u0e07\u0e08\u0e32\u0e01\u0e40\u0e23\u0e32\u0e43\u0e0a\u0e49 kube-vip \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e08\u0e33\u0e25\u0e2d\u0e07 virtual IP \u0e41\u0e25\u0e49\u0e27)<\/li> <li>\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e0a\u0e48\u0e27\u0e07 IP \u0e17\u0e35\u0e48\u0e08\u0e30\u0e08\u0e48\u0e32\u0e22\u0e43\u0e2b\u0e49\u0e41\u0e01\u0e48 service \u0e40\u0e1b\u0e47\u0e19 192.168.0.191 \u0e16\u0e36\u0e07 192.168.0.199 (9 \u0e44\u0e2d\u0e1e\u0e35)<\/li> <li>\u0e01\u0e33\u0e2b\u0e19\u0e14 virtual IP \u0e02\u0e2d\u0e07\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e41\u0e21\u0e48\u0e02\u0e48\u0e32\u0e22\u0e17\u0e35\u0e48\u0e17\u0e33\u0e2b\u0e19\u0e49\u0e32\u0e17\u0e35\u0e48\u0e40\u0e1b\u0e47\u0e19 master \u0e40\u0e1b\u0e47\u0e19 192.168.0.190<\/li> <li>\u0e14\u0e32\u0e27\u0e19\u0e4c\u0e42\u0e2b\u0e25\u0e14\u0e44\u0e1f\u0e25\u0e4c kubeconf \u0e0b\u0e36\u0e48\u0e07\u0e1c\u0e39\u0e49\u0e14\u0e39\u0e41\u0e25\u0e23\u0e30\u0e1a\u0e1a\u0e08\u0e33\u0e40\u0e1b\u0e47\u0e19\u0e15\u0e49\u0e2d\u0e07\u0e43\u0e0a\u0e49\u0e44\u0e1f\u0e25\u0e4c\u0e19\u0e35\u0e49\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e40\u0e02\u0e49\u0e32\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23 Kubernetes cluster<\/li> <\/ul> \u0e08\u0e32\u0e01\u0e19\u0e31\u0e49\u0e19\u0e43\u0e0a\u0e49\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07 <code>ansible-playbook -i hosts deploy.yaml<\/code> \u0e41\u0e25\u0e30\u0e23\u0e2d\u0e08\u0e19\u0e01\u0e27\u0e48\u0e32\u0e08\u0e30\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07 cluster \u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08\n<pre class=\"wp-block-code\"><code>---\n- name: Deploy RKE2\n    hosts: k8s_cluster\n    vars:\n      rke2_ha_mode: true\n      rke2_ha_mode_keepalived: false\n      rke2_ha_mode_kubevip: true\n      rke2_loadbalancer_ip_range: 192.168.0.191-192.168.0.199\n      rke2_api_ip : 192.168.0.190\n      rke2_download_kubeconf: true\n    roles:\n    - role: lablabs.rke2<\/code><\/pre>\n<\/li>\n\n\n\n<li>\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e0a\u0e37\u0e48\u0e2d\u0e44\u0e1f\u0e25\u0e4c <code>rke2.yaml<\/code> \u0e40\u0e1b\u0e47\u0e19 <code>config<\/code> \u0e08\u0e32\u0e01\u0e19\u0e31\u0e49\u0e19\u0e04\u0e31\u0e14\u0e25\u0e2d\u0e01\u0e44\u0e1b\u0e44\u0e27\u0e49\u0e43\u0e19 <code>&lt;\u0e42\u0e1f\u0e25\u0e40\u0e14\u0e2d\u0e23\u0e4c\u0e02\u0e2d\u0e07\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e1b\u0e31\u0e08\u0e08\u0e38\u0e1a\u0e31\u0e19&gt;\/.kube\/<\/code> \u0e02\u0e2d\u0e07\u0e2a\u0e16\u0e32\u0e19\u0e35\u0e07\u0e32\u0e19 \u0e2b\u0e23\u0e37\u0e2d\u0e04\u0e2d\u0e21\u0e1e\u0e34\u0e27\u0e40\u0e15\u0e2d\u0e23\u0e4c\u0e02\u0e2d\u0e07\u0e1c\u0e39\u0e49\u0e14\u0e39\u0e41\u0e25\u0e23\u0e30\u0e1a\u0e1a \u0e40\u0e0a\u0e48\u0e19 <code>C:\\Users\\myusername\\.kube\\<\/code> \u0e2b\u0e23\u0e37\u0e2d <code>\/home\/myusername\/.kube\/<\/code> \u0e40\u0e1b\u0e47\u0e19\u0e15\u0e49\u0e19<\/li>\n\n\n\n<li>\u0e43\u0e19\u0e2a\u0e16\u0e32\u0e19\u0e35\u0e07\u0e32\u0e19 \u0e2b\u0e23\u0e37\u0e2d\u0e04\u0e2d\u0e21\u0e1e\u0e34\u0e27\u0e40\u0e15\u0e2d\u0e23\u0e4c\u0e02\u0e2d\u0e07\u0e1c\u0e39\u0e49\u0e14\u0e39\u0e41\u0e25\u0e23\u0e30\u0e1a\u0e1a <a href=\"https:\/\/kubernetes.io\/docs\/tasks\/tools\/#kubectl\" target=\"_blank\" rel=\"noreferrer noopener\">\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07\u0e42\u0e1b\u0e23\u0e41\u0e01\u0e23\u0e21 kubectl<\/a><\/li>\n\n\n\n<li>\u0e17\u0e14\u0e25\u0e2d\u0e07\u0e43\u0e0a\u0e49\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07 <code>kubectl get nodes<\/code> \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e40\u0e23\u0e35\u0e22\u0e01\u0e14\u0e39\u0e42\u0e19\u0e14 \u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07:\n<pre class=\"wp-block-code\"><code>$ kubectl get nodes\nNAME                        STATUS   ROLES                       AGE    VERSION\nmaster01.k8s.example.com   Ready    control-plane,etcd,master    1d    v1.24.3+rke2r1\nmaster02.k8s.example.com   Ready    control-plane,etcd,master    1d    v1.24.3+rke2r1\nmaster03.k8s.example.com   Ready    control-plane,etcd,master    1d    v1.24.3+rke2r1<\/code><\/pre>\n<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">\u0e20\u0e32\u0e04\u0e1c\u0e19\u0e27\u0e01 \u0e01: \u0e1b\u0e23\u0e31\u0e1a\u0e04\u0e48\u0e32\u0e44\u0e1f\u0e25\u0e4c Kubernetes config \u0e43\u0e2b\u0e49\u0e43\u0e0a\u0e49 Virtual IP<\/h2>\n\n\n\n<p>\u0e44\u0e1f\u0e25\u0e4c <code>rke2.yaml<\/code> \u0e17\u0e35\u0e48\u0e14\u0e32\u0e27\u0e19\u0e4c\u0e42\u0e2b\u0e25\u0e14\u0e21\u0e32\u0e44\u0e27\u0e49\u0e43\u0e19\u0e2a\u0e16\u0e32\u0e19\u0e35\u0e07\u0e32\u0e19\u0e2d\u0e32\u0e08\u0e08\u0e30\u0e0a\u0e35\u0e49\u0e44\u0e1b\u0e22\u0e31\u0e07\u0e44\u0e2d\u0e1e\u0e35\u0e02\u0e2d\u0e07\u0e42\u0e19\u0e14\u0e17\u0e35\u0e48\u0e17\u0e33\u0e2b\u0e19\u0e49\u0e32\u0e17\u0e35\u0e48\u0e40\u0e1b\u0e47\u0e19 master \u0e40\u0e09\u0e1e\u0e32\u0e30\u0e42\u0e19\u0e14\u0e41\u0e23\u0e01 \u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e40\u0e0a\u0e48\u0e19<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>apiVersion: v1\nclusters:\n- cluster:\n    certificate-authority-data: ...\n    <strong>server: https:\/\/192.168.0.180:6443<\/strong>\n  name: default\ncontexts:\n- context:\n    cluster: default\n    user: default\n  name: default\ncurrent-context: default\nkind: Config\npreferences: {}\nusers:\n- name: default\n  user:\n    client-certificate-data: ...\n    client-key-data: ...\n<\/code><\/pre>\n\n\n\n<p>\u0e43\u0e19\u0e01\u0e23\u0e13\u0e35\u0e17\u0e35\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e43\u0e2b\u0e49\u0e21\u0e35\u0e01\u0e32\u0e23 load balance \u0e41\u0e25\u0e30 failover \u0e01\u0e32\u0e23\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e08\u0e32\u0e01\u0e2a\u0e16\u0e32\u0e19\u0e35\u0e07\u0e32\u0e19\u0e44\u0e1b\u0e22\u0e31\u0e07 Kubernetes cluster \u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e41\u0e01\u0e49\u0e44\u0e02\u0e04\u0e48\u0e32\u0e43\u0e19 <code>clusters[0].cluster.server<\/code>  \u0e08\u0e32\u0e01 <code>https:\/\/192.168.0.180:6443<\/code> (\u0e44\u0e2d\u0e1e\u0e35\u0e02\u0e2d\u0e07 master \u0e42\u0e19\u0e14\u0e17\u0e35\u0e48 1) \u0e43\u0e2b\u0e49\u0e40\u0e1b\u0e47\u0e19 <code>https:\/\/192.168.0.190:6443<\/code> (virtual IP \u0e02\u0e2d\u0e07 master \u0e17\u0e38\u0e01\u0e42\u0e19\u0e14)<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u0e20\u0e32\u0e04\u0e1c\u0e19\u0e27\u0e01 \u0e02: \u0e01\u0e23\u0e13\u0e35\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e43\u0e0a\u0e49\u0e1a\u0e31\u0e0d\u0e0a\u0e35 root<\/h2>\n\n\n\n<p>\u0e01\u0e23\u0e13\u0e35\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e43\u0e0a\u0e49\u0e1a\u0e31\u0e0d\u0e0a\u0e35 <code>root<\/code> \u0e02\u0e2d\u0e07\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e41\u0e21\u0e48\u0e02\u0e48\u0e32\u0e22 \u0e41\u0e15\u0e48\u0e43\u0e0a\u0e49\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e2d\u0e37\u0e48\u0e19\u0e17\u0e35\u0e48\u0e21\u0e35\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e4c\u0e43\u0e0a\u0e49 <code>sudo<\/code> \u0e21\u0e35\u0e2a\u0e34\u0e48\u0e07\u0e17\u0e35\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07 \u0e14\u0e31\u0e07\u0e19\u0e35\u0e49<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u0e02\u0e13\u0e30\u0e17\u0e35\u0e48\u0e43\u0e0a\u0e49\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07 <code>ssh-copy-id<\/code> \u0e43\u0e2b\u0e49\u0e23\u0e30\u0e1a\u0e38\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e17\u0e35\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49 \u0e40\u0e0a\u0e48\u0e19 <code>ssh-copy-id somchai@master01.k8s.example.com<\/code><\/li>\n\n\n\n<li>\u0e43\u0e19\u0e44\u0e1f\u0e25\u0e4c <code>prepare.yaml<\/code> \u0e41\u0e25\u0e30 <code>deploy.yaml<\/code> \u0e43\u0e2b\u0e49\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e1a\u0e23\u0e23\u0e17\u0e31\u0e14 <code>become: yes<\/code> \u0e16\u0e31\u0e14\u0e08\u0e32\u0e01\u0e04\u0e48\u0e32 <code>hosts<\/code> \u0e15\u0e32\u0e21\u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e14\u0e49\u0e32\u0e19\u0e25\u0e48\u0e32\u0e07<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>---\r\n- name: Deploy RKE2\r\n    hosts: k8s_cluster\n    <strong>become: yes<\/strong>\r\n    vars:\r\n      rke2_ha_mode: true\r\n      rke2_ha_mode_keepalived: false\r\n      rke2_ha_mode_kubevip: true\r\n      rke2_loadbalancer_ip_range: 192.168.0.191-192.168.0.199\r\n      rke2_api_ip : 192.168.0.190\r\n      rke2_download_kubeconf: true\r\n    roles:\r\n    - role: lablabs.rke2<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Kubernetes \u0e40\u0e1b\u0e47\u0e19\u0e0b\u0e2d\u0e1f\u0e15\u0e4c\u0e41\u0e27\u0e23\u0e4c\u0e42\u0e2d\u0e40\u0e1e\u0e19\u0e0b\u0e2d\u0e23\u0e4c\u0e2a\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e2a\u0e23\u0e49\u0e32\u0e07 \u0e02\u0e22\u0e32\u0e22\u0e02\u0e19\u0e32\u0e14  [&hellip;]<\/p>\n","protected":false},"author":181,"featured_media":3165,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[56],"tags":[45,44,43,46],"class_list":{"0":"post-3139","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-km","8":"tag-ansible","9":"tag-k8s","10":"tag-kubernetes","11":"tag-rke2","12":"czr-hentry"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>\u0e01\u0e32\u0e23\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07 Kubernetes cluster \u0e42\u0e14\u0e22\u0e43\u0e0a\u0e49 Ansible (role lablabs.rke2) - \u0e28\u0e39\u0e19\u0e22\u0e4c\u0e40\u0e17\u0e04\u0e42\u0e19\u0e42\u0e25\u0e22\u0e35\u0e2a\u0e32\u0e23\u0e2a\u0e19\u0e40\u0e17\u0e28\u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e2a\u0e37\u0e48\u0e2d\u0e2a\u0e32\u0e23 \u0e01\u0e23\u0e21\u0e1b\u0e48\u0e32\u0e44\u0e21\u0e49<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.forest.go.th\/it\/blog\/install-kubernetes-using-ansible-role-lablabs-rke2\/\" \/>\n<meta property=\"og:locale\" content=\"th_TH\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u0e01\u0e32\u0e23\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07 Kubernetes cluster \u0e42\u0e14\u0e22\u0e43\u0e0a\u0e49 Ansible (role lablabs.rke2) - \u0e28\u0e39\u0e19\u0e22\u0e4c\u0e40\u0e17\u0e04\u0e42\u0e19\u0e42\u0e25\u0e22\u0e35\u0e2a\u0e32\u0e23\u0e2a\u0e19\u0e40\u0e17\u0e28\u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e2a\u0e37\u0e48\u0e2d\u0e2a\u0e32\u0e23 \u0e01\u0e23\u0e21\u0e1b\u0e48\u0e32\u0e44\u0e21\u0e49\" \/>\n<meta property=\"og:description\" content=\"Kubernetes \u0e40\u0e1b\u0e47\u0e19\u0e0b\u0e2d\u0e1f\u0e15\u0e4c\u0e41\u0e27\u0e23\u0e4c\u0e42\u0e2d\u0e40\u0e1e\u0e19\u0e0b\u0e2d\u0e23\u0e4c\u0e2a\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e2a\u0e23\u0e49\u0e32\u0e07 \u0e02\u0e22\u0e32\u0e22\u0e02\u0e19\u0e32\u0e14 [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.forest.go.th\/it\/blog\/install-kubernetes-using-ansible-role-lablabs-rke2\/\" \/>\n<meta property=\"og:site_name\" content=\"\u0e28\u0e39\u0e19\u0e22\u0e4c\u0e40\u0e17\u0e04\u0e42\u0e19\u0e42\u0e25\u0e22\u0e35\u0e2a\u0e32\u0e23\u0e2a\u0e19\u0e40\u0e17\u0e28\u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e2a\u0e37\u0e48\u0e2d\u0e2a\u0e32\u0e23 \u0e01\u0e23\u0e21\u0e1b\u0e48\u0e32\u0e44\u0e21\u0e49\" \/>\n<meta property=\"article:published_time\" content=\"2023-02-02T09:00:18+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-07-20T04:26:20+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.forest.go.th\/it\/wp-content\/uploads\/sites\/21\/2023\/02\/k8s-ansible.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"683\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Wee\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Wee\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 \u0e19\u0e32\u0e17\u0e35\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.forest.go.th\\\/it\\\/blog\\\/install-kubernetes-using-ansible-role-lablabs-rke2\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.forest.go.th\\\/it\\\/blog\\\/install-kubernetes-using-ansible-role-lablabs-rke2\\\/\"},\"author\":{\"name\":\"Wee\",\"@id\":\"https:\\\/\\\/www.forest.go.th\\\/it\\\/#\\\/schema\\\/person\\\/5dbc1c984434569a24da99df80b51bc2\"},\"headline\":\"\u0e01\u0e32\u0e23\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07 Kubernetes cluster \u0e42\u0e14\u0e22\u0e43\u0e0a\u0e49 Ansible (role lablabs.rke2)\",\"datePublished\":\"2023-02-02T09:00:18+00:00\",\"dateModified\":\"2023-07-20T04:26:20+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.forest.go.th\\\/it\\\/blog\\\/install-kubernetes-using-ansible-role-lablabs-rke2\\\/\"},\"wordCount\":135,\"commentCount\":2,\"publisher\":{\"@id\":\"https:\\\/\\\/www.forest.go.th\\\/it\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.forest.go.th\\\/it\\\/blog\\\/install-kubernetes-using-ansible-role-lablabs-rke2\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.forest.go.th\\\/it\\\/wp-content\\\/uploads\\\/sites\\\/21\\\/2023\\\/02\\\/k8s-ansible.png\",\"keywords\":[\"ansible\",\"k8s\",\"kubernetes\",\"rke2\"],\"articleSection\":[\"\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23\u0e04\u0e27\u0e32\u0e21\u0e23\u0e39\u0e49\"],\"inLanguage\":\"th\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.forest.go.th\\\/it\\\/blog\\\/install-kubernetes-using-ansible-role-lablabs-rke2\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.forest.go.th\\\/it\\\/blog\\\/install-kubernetes-using-ansible-role-lablabs-rke2\\\/\",\"url\":\"https:\\\/\\\/www.forest.go.th\\\/it\\\/blog\\\/install-kubernetes-using-ansible-role-lablabs-rke2\\\/\",\"name\":\"\u0e01\u0e32\u0e23\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07 Kubernetes cluster \u0e42\u0e14\u0e22\u0e43\u0e0a\u0e49 Ansible (role lablabs.rke2) - \u0e28\u0e39\u0e19\u0e22\u0e4c\u0e40\u0e17\u0e04\u0e42\u0e19\u0e42\u0e25\u0e22\u0e35\u0e2a\u0e32\u0e23\u0e2a\u0e19\u0e40\u0e17\u0e28\u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e2a\u0e37\u0e48\u0e2d\u0e2a\u0e32\u0e23 \u0e01\u0e23\u0e21\u0e1b\u0e48\u0e32\u0e44\u0e21\u0e49\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.forest.go.th\\\/it\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.forest.go.th\\\/it\\\/blog\\\/install-kubernetes-using-ansible-role-lablabs-rke2\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.forest.go.th\\\/it\\\/blog\\\/install-kubernetes-using-ansible-role-lablabs-rke2\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.forest.go.th\\\/it\\\/wp-content\\\/uploads\\\/sites\\\/21\\\/2023\\\/02\\\/k8s-ansible.png\",\"datePublished\":\"2023-02-02T09:00:18+00:00\",\"dateModified\":\"2023-07-20T04:26:20+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.forest.go.th\\\/it\\\/blog\\\/install-kubernetes-using-ansible-role-lablabs-rke2\\\/#breadcrumb\"},\"inLanguage\":\"th\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.forest.go.th\\\/it\\\/blog\\\/install-kubernetes-using-ansible-role-lablabs-rke2\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"th\",\"@id\":\"https:\\\/\\\/www.forest.go.th\\\/it\\\/blog\\\/install-kubernetes-using-ansible-role-lablabs-rke2\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.forest.go.th\\\/it\\\/wp-content\\\/uploads\\\/sites\\\/21\\\/2023\\\/02\\\/k8s-ansible.png\",\"contentUrl\":\"https:\\\/\\\/www.forest.go.th\\\/it\\\/wp-content\\\/uploads\\\/sites\\\/21\\\/2023\\\/02\\\/k8s-ansible.png\",\"width\":1024,\"height\":683,\"caption\":\"\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07 Kubernetes \u0e42\u0e14\u0e22\u0e43\u0e0a\u0e49 Ansible\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.forest.go.th\\\/it\\\/blog\\\/install-kubernetes-using-ansible-role-lablabs-rke2\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.forest.go.th\\\/it\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u0e01\u0e32\u0e23\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07 Kubernetes cluster \u0e42\u0e14\u0e22\u0e43\u0e0a\u0e49 Ansible (role lablabs.rke2)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.forest.go.th\\\/it\\\/#website\",\"url\":\"https:\\\/\\\/www.forest.go.th\\\/it\\\/\",\"name\":\"\u0e28\u0e39\u0e19\u0e22\u0e4c\u0e40\u0e17\u0e04\u0e42\u0e19\u0e42\u0e25\u0e22\u0e35\u0e2a\u0e32\u0e23\u0e2a\u0e19\u0e40\u0e17\u0e28\u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e2a\u0e37\u0e48\u0e2d\u0e2a\u0e32\u0e23 \u0e01\u0e23\u0e21\u0e1b\u0e48\u0e32\u0e44\u0e21\u0e49\",\"description\":\"\u0e43\u0e2b\u0e49\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e14\u0e49\u0e32\u0e19\u0e40\u0e17\u0e04\u0e42\u0e19\u0e42\u0e25\u0e22\u0e35\u0e2a\u0e32\u0e23\u0e2a\u0e19\u0e40\u0e17\u0e28\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.forest.go.th\\\/it\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.forest.go.th\\\/it\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"th\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.forest.go.th\\\/it\\\/#organization\",\"name\":\"\u0e28\u0e39\u0e19\u0e22\u0e4c\u0e40\u0e17\u0e04\u0e42\u0e19\u0e42\u0e25\u0e22\u0e35\u0e2a\u0e32\u0e23\u0e2a\u0e19\u0e40\u0e17\u0e28\u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e2a\u0e37\u0e48\u0e2d\u0e2a\u0e32\u0e23 \u0e01\u0e23\u0e21\u0e1b\u0e48\u0e32\u0e44\u0e21\u0e49\",\"url\":\"https:\\\/\\\/www.forest.go.th\\\/it\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"th\",\"@id\":\"https:\\\/\\\/www.forest.go.th\\\/it\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.forest.go.th\\\/it\\\/wp-content\\\/uploads\\\/sites\\\/21\\\/2023\\\/02\\\/new-rfd-web-logo-it.png\",\"contentUrl\":\"https:\\\/\\\/www.forest.go.th\\\/it\\\/wp-content\\\/uploads\\\/sites\\\/21\\\/2023\\\/02\\\/new-rfd-web-logo-it.png\",\"width\":720,\"height\":200,\"caption\":\"\u0e28\u0e39\u0e19\u0e22\u0e4c\u0e40\u0e17\u0e04\u0e42\u0e19\u0e42\u0e25\u0e22\u0e35\u0e2a\u0e32\u0e23\u0e2a\u0e19\u0e40\u0e17\u0e28\u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e2a\u0e37\u0e48\u0e2d\u0e2a\u0e32\u0e23 \u0e01\u0e23\u0e21\u0e1b\u0e48\u0e32\u0e44\u0e21\u0e49\"},\"image\":{\"@id\":\"https:\\\/\\\/www.forest.go.th\\\/it\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.forest.go.th\\\/it\\\/#\\\/schema\\\/person\\\/5dbc1c984434569a24da99df80b51bc2\",\"name\":\"Wee\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"th\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/01458eaaaec34a4081d440b97161c1d5752ffb67e2dbd149e4eed7deb34715da?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/01458eaaaec34a4081d440b97161c1d5752ffb67e2dbd149e4eed7deb34715da?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/01458eaaaec34a4081d440b97161c1d5752ffb67e2dbd149e4eed7deb34715da?s=96&d=mm&r=g\",\"caption\":\"Wee\"},\"url\":\"https:\\\/\\\/www.forest.go.th\\\/it\\\/blog\\\/author\\\/wees\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"\u0e01\u0e32\u0e23\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07 Kubernetes cluster \u0e42\u0e14\u0e22\u0e43\u0e0a\u0e49 Ansible (role lablabs.rke2) - \u0e28\u0e39\u0e19\u0e22\u0e4c\u0e40\u0e17\u0e04\u0e42\u0e19\u0e42\u0e25\u0e22\u0e35\u0e2a\u0e32\u0e23\u0e2a\u0e19\u0e40\u0e17\u0e28\u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e2a\u0e37\u0e48\u0e2d\u0e2a\u0e32\u0e23 \u0e01\u0e23\u0e21\u0e1b\u0e48\u0e32\u0e44\u0e21\u0e49","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.forest.go.th\/it\/blog\/install-kubernetes-using-ansible-role-lablabs-rke2\/","og_locale":"th_TH","og_type":"article","og_title":"\u0e01\u0e32\u0e23\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07 Kubernetes cluster \u0e42\u0e14\u0e22\u0e43\u0e0a\u0e49 Ansible (role lablabs.rke2) - \u0e28\u0e39\u0e19\u0e22\u0e4c\u0e40\u0e17\u0e04\u0e42\u0e19\u0e42\u0e25\u0e22\u0e35\u0e2a\u0e32\u0e23\u0e2a\u0e19\u0e40\u0e17\u0e28\u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e2a\u0e37\u0e48\u0e2d\u0e2a\u0e32\u0e23 \u0e01\u0e23\u0e21\u0e1b\u0e48\u0e32\u0e44\u0e21\u0e49","og_description":"Kubernetes \u0e40\u0e1b\u0e47\u0e19\u0e0b\u0e2d\u0e1f\u0e15\u0e4c\u0e41\u0e27\u0e23\u0e4c\u0e42\u0e2d\u0e40\u0e1e\u0e19\u0e0b\u0e2d\u0e23\u0e4c\u0e2a\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e2a\u0e23\u0e49\u0e32\u0e07 \u0e02\u0e22\u0e32\u0e22\u0e02\u0e19\u0e32\u0e14 [&hellip;]","og_url":"https:\/\/www.forest.go.th\/it\/blog\/install-kubernetes-using-ansible-role-lablabs-rke2\/","og_site_name":"\u0e28\u0e39\u0e19\u0e22\u0e4c\u0e40\u0e17\u0e04\u0e42\u0e19\u0e42\u0e25\u0e22\u0e35\u0e2a\u0e32\u0e23\u0e2a\u0e19\u0e40\u0e17\u0e28\u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e2a\u0e37\u0e48\u0e2d\u0e2a\u0e32\u0e23 \u0e01\u0e23\u0e21\u0e1b\u0e48\u0e32\u0e44\u0e21\u0e49","article_published_time":"2023-02-02T09:00:18+00:00","article_modified_time":"2023-07-20T04:26:20+00:00","og_image":[{"width":1024,"height":683,"url":"https:\/\/www.forest.go.th\/it\/wp-content\/uploads\/sites\/21\/2023\/02\/k8s-ansible.png","type":"image\/png"}],"author":"Wee","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Wee","Est. reading time":"4 \u0e19\u0e32\u0e17\u0e35"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.forest.go.th\/it\/blog\/install-kubernetes-using-ansible-role-lablabs-rke2\/#article","isPartOf":{"@id":"https:\/\/www.forest.go.th\/it\/blog\/install-kubernetes-using-ansible-role-lablabs-rke2\/"},"author":{"name":"Wee","@id":"https:\/\/www.forest.go.th\/it\/#\/schema\/person\/5dbc1c984434569a24da99df80b51bc2"},"headline":"\u0e01\u0e32\u0e23\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07 Kubernetes cluster \u0e42\u0e14\u0e22\u0e43\u0e0a\u0e49 Ansible (role lablabs.rke2)","datePublished":"2023-02-02T09:00:18+00:00","dateModified":"2023-07-20T04:26:20+00:00","mainEntityOfPage":{"@id":"https:\/\/www.forest.go.th\/it\/blog\/install-kubernetes-using-ansible-role-lablabs-rke2\/"},"wordCount":135,"commentCount":2,"publisher":{"@id":"https:\/\/www.forest.go.th\/it\/#organization"},"image":{"@id":"https:\/\/www.forest.go.th\/it\/blog\/install-kubernetes-using-ansible-role-lablabs-rke2\/#primaryimage"},"thumbnailUrl":"https:\/\/www.forest.go.th\/it\/wp-content\/uploads\/sites\/21\/2023\/02\/k8s-ansible.png","keywords":["ansible","k8s","kubernetes","rke2"],"articleSection":["\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23\u0e04\u0e27\u0e32\u0e21\u0e23\u0e39\u0e49"],"inLanguage":"th","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.forest.go.th\/it\/blog\/install-kubernetes-using-ansible-role-lablabs-rke2\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.forest.go.th\/it\/blog\/install-kubernetes-using-ansible-role-lablabs-rke2\/","url":"https:\/\/www.forest.go.th\/it\/blog\/install-kubernetes-using-ansible-role-lablabs-rke2\/","name":"\u0e01\u0e32\u0e23\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07 Kubernetes cluster \u0e42\u0e14\u0e22\u0e43\u0e0a\u0e49 Ansible (role lablabs.rke2) - \u0e28\u0e39\u0e19\u0e22\u0e4c\u0e40\u0e17\u0e04\u0e42\u0e19\u0e42\u0e25\u0e22\u0e35\u0e2a\u0e32\u0e23\u0e2a\u0e19\u0e40\u0e17\u0e28\u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e2a\u0e37\u0e48\u0e2d\u0e2a\u0e32\u0e23 \u0e01\u0e23\u0e21\u0e1b\u0e48\u0e32\u0e44\u0e21\u0e49","isPartOf":{"@id":"https:\/\/www.forest.go.th\/it\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.forest.go.th\/it\/blog\/install-kubernetes-using-ansible-role-lablabs-rke2\/#primaryimage"},"image":{"@id":"https:\/\/www.forest.go.th\/it\/blog\/install-kubernetes-using-ansible-role-lablabs-rke2\/#primaryimage"},"thumbnailUrl":"https:\/\/www.forest.go.th\/it\/wp-content\/uploads\/sites\/21\/2023\/02\/k8s-ansible.png","datePublished":"2023-02-02T09:00:18+00:00","dateModified":"2023-07-20T04:26:20+00:00","breadcrumb":{"@id":"https:\/\/www.forest.go.th\/it\/blog\/install-kubernetes-using-ansible-role-lablabs-rke2\/#breadcrumb"},"inLanguage":"th","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.forest.go.th\/it\/blog\/install-kubernetes-using-ansible-role-lablabs-rke2\/"]}]},{"@type":"ImageObject","inLanguage":"th","@id":"https:\/\/www.forest.go.th\/it\/blog\/install-kubernetes-using-ansible-role-lablabs-rke2\/#primaryimage","url":"https:\/\/www.forest.go.th\/it\/wp-content\/uploads\/sites\/21\/2023\/02\/k8s-ansible.png","contentUrl":"https:\/\/www.forest.go.th\/it\/wp-content\/uploads\/sites\/21\/2023\/02\/k8s-ansible.png","width":1024,"height":683,"caption":"\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07 Kubernetes \u0e42\u0e14\u0e22\u0e43\u0e0a\u0e49 Ansible"},{"@type":"BreadcrumbList","@id":"https:\/\/www.forest.go.th\/it\/blog\/install-kubernetes-using-ansible-role-lablabs-rke2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.forest.go.th\/it\/"},{"@type":"ListItem","position":2,"name":"\u0e01\u0e32\u0e23\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07 Kubernetes cluster \u0e42\u0e14\u0e22\u0e43\u0e0a\u0e49 Ansible (role lablabs.rke2)"}]},{"@type":"WebSite","@id":"https:\/\/www.forest.go.th\/it\/#website","url":"https:\/\/www.forest.go.th\/it\/","name":"\u0e28\u0e39\u0e19\u0e22\u0e4c\u0e40\u0e17\u0e04\u0e42\u0e19\u0e42\u0e25\u0e22\u0e35\u0e2a\u0e32\u0e23\u0e2a\u0e19\u0e40\u0e17\u0e28\u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e2a\u0e37\u0e48\u0e2d\u0e2a\u0e32\u0e23 \u0e01\u0e23\u0e21\u0e1b\u0e48\u0e32\u0e44\u0e21\u0e49","description":"\u0e43\u0e2b\u0e49\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e14\u0e49\u0e32\u0e19\u0e40\u0e17\u0e04\u0e42\u0e19\u0e42\u0e25\u0e22\u0e35\u0e2a\u0e32\u0e23\u0e2a\u0e19\u0e40\u0e17\u0e28","publisher":{"@id":"https:\/\/www.forest.go.th\/it\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.forest.go.th\/it\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"th"},{"@type":"Organization","@id":"https:\/\/www.forest.go.th\/it\/#organization","name":"\u0e28\u0e39\u0e19\u0e22\u0e4c\u0e40\u0e17\u0e04\u0e42\u0e19\u0e42\u0e25\u0e22\u0e35\u0e2a\u0e32\u0e23\u0e2a\u0e19\u0e40\u0e17\u0e28\u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e2a\u0e37\u0e48\u0e2d\u0e2a\u0e32\u0e23 \u0e01\u0e23\u0e21\u0e1b\u0e48\u0e32\u0e44\u0e21\u0e49","url":"https:\/\/www.forest.go.th\/it\/","logo":{"@type":"ImageObject","inLanguage":"th","@id":"https:\/\/www.forest.go.th\/it\/#\/schema\/logo\/image\/","url":"https:\/\/www.forest.go.th\/it\/wp-content\/uploads\/sites\/21\/2023\/02\/new-rfd-web-logo-it.png","contentUrl":"https:\/\/www.forest.go.th\/it\/wp-content\/uploads\/sites\/21\/2023\/02\/new-rfd-web-logo-it.png","width":720,"height":200,"caption":"\u0e28\u0e39\u0e19\u0e22\u0e4c\u0e40\u0e17\u0e04\u0e42\u0e19\u0e42\u0e25\u0e22\u0e35\u0e2a\u0e32\u0e23\u0e2a\u0e19\u0e40\u0e17\u0e28\u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e2a\u0e37\u0e48\u0e2d\u0e2a\u0e32\u0e23 \u0e01\u0e23\u0e21\u0e1b\u0e48\u0e32\u0e44\u0e21\u0e49"},"image":{"@id":"https:\/\/www.forest.go.th\/it\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.forest.go.th\/it\/#\/schema\/person\/5dbc1c984434569a24da99df80b51bc2","name":"Wee","image":{"@type":"ImageObject","inLanguage":"th","@id":"https:\/\/secure.gravatar.com\/avatar\/01458eaaaec34a4081d440b97161c1d5752ffb67e2dbd149e4eed7deb34715da?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/01458eaaaec34a4081d440b97161c1d5752ffb67e2dbd149e4eed7deb34715da?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/01458eaaaec34a4081d440b97161c1d5752ffb67e2dbd149e4eed7deb34715da?s=96&d=mm&r=g","caption":"Wee"},"url":"https:\/\/www.forest.go.th\/it\/blog\/author\/wees\/"}]}},"jetpack_featured_media_url":"https:\/\/www.forest.go.th\/it\/wp-content\/uploads\/sites\/21\/2023\/02\/k8s-ansible.png","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.forest.go.th\/it\/wp-json\/wp\/v2\/posts\/3139","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.forest.go.th\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.forest.go.th\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.forest.go.th\/it\/wp-json\/wp\/v2\/users\/181"}],"replies":[{"embeddable":true,"href":"https:\/\/www.forest.go.th\/it\/wp-json\/wp\/v2\/comments?post=3139"}],"version-history":[{"count":27,"href":"https:\/\/www.forest.go.th\/it\/wp-json\/wp\/v2\/posts\/3139\/revisions"}],"predecessor-version":[{"id":3192,"href":"https:\/\/www.forest.go.th\/it\/wp-json\/wp\/v2\/posts\/3139\/revisions\/3192"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.forest.go.th\/it\/wp-json\/wp\/v2\/media\/3165"}],"wp:attachment":[{"href":"https:\/\/www.forest.go.th\/it\/wp-json\/wp\/v2\/media?parent=3139"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.forest.go.th\/it\/wp-json\/wp\/v2\/categories?post=3139"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.forest.go.th\/it\/wp-json\/wp\/v2\/tags?post=3139"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}