बेयरमेटल पर k3s इंस्टॉलेशन - चरण-दर-चरण मार्गदर्शन और टेर्राफॉर्म के साथ
होमलैब क्लस्टर पर छोटे k3s कubernetis का इंस्टॉलेशन
यहाँ एक 3-नोड K3s क्लस्टर की स्थापना का चरण-दर-चरण मार्गदर्शन है, जो बेयर-मेटल सर्वर पर किया जाता है (1 मास्टर + 2 वर्कर्स)।
इस गाइड का मानना है कि आप हर सर्वर पर एक मिनिमल Linux स्थापना से शुरू कर रहे हैं (उदाहरण के लिए, Ubuntu 22.04 या Debian), और आप अपने कंट्रोल प्लेन और वर्कलोड्स को सेल्फ-होस्ट करना चाहते हैं।
K3s एक हल्का संस्करण क्यूबर्नेट्स है, जो इस छोटे होमलैब के लिए अच्छी तरह से उपयुक्त है।
⚙️ क्लस्टर टोपोलॉजी
नोड नाम | भूमिका | होस्टनेम/आईपी |
---|---|---|
master-1 |
सर्वर (कंट्रोल प्लेन) | 192.168.1.100 |
worker-1 |
एजेंट (वर्कर नोड) | 192.168.1.101 |
worker-2 |
एजेंट (वर्कर नोड) | 192.168.1.102 |
✅ पूर्वापेक्षाएँ
🧱 हार्डवेयर (न्यूनतम):
- CPU: 2 कोर
- RAM: 2GB+ प्रति नोड
- डिस्क: 20GB+ प्रति नोड
🛠 ओएस आवश्यकताएँ:
- Linux (Ubuntu 22.04, Debian 12, आदि)
curl
,ssh
, औरsudo
स्थापित- रूट या सुदो एक्सेस
🧼 साफ नेटवर्किंग:
-
सुनिश्चित करें कि सभी नोड्स एक दूसरे को आईपी या होस्टनेम द्वारा रिज़ॉल्व और पिंग कर सकते हैं।
-
स्वैप को डिसएबल करें:
sudo swapoff -a sudo sed -i '/ swap / s/^/#/' /etc/fstab
🚀 चरण-दर-चरण स्थापना
📍चरण 1: कंट्रोल प्लेन पर K3s स्थापित करें (master-1)
curl -sfL https://get.k3s.io | sh -
स्थापना के बाद:
sudo cat /var/lib/rancher/k3s/server/node-token
- यह आपको जॉइन टोकन देता है जो वर्कर नोड्स के लिए आवश्यक है।
सुनिश्चित करें कि क्लस्टर चल रहा है:
sudo kubectl get nodes
k3s
में एकkubectl
शामिल है जोk3s kubectl
के रूप में स्थापित किया गया है याkubectl
के रूप में सिमलिंक किया गया है।
📍चरण 2: K3s एजेंट्स स्थापित करें (worker-1 & worker-2)
हर वर्कर नोड पर दोहराएं:
<MASTER_IP>
और <NODE_TOKEN>
को चरण 1 से प्राप्त मानों से बदलें।
curl -sfL https://get.k3s.io | K3S_URL=https://192.168.1.100:6443 K3S_TOKEN=<NODE_TOKEN> sh -
उदाहरण:
K3S_URL=https://192.168.1.100:6443 \
K3S_TOKEN=K10abcde123456789::server:abcde123456789 \
sh -c "$(curl -sfL https://get.k3s.io)"
📍चरण 3: master-1 से क्लस्टर की पुष्टि करें
kubectl get nodes
आपको यह देखना चाहिए:
NAME STATUS ROLES AGE VERSION
master-1 Ready control 5m v1.29.2+k3s1
worker-1 Ready <none> 2m v1.29.2+k3s1
worker-2 Ready <none> 2m v1.29.2+k3s1
🔐 (वैकल्पिक) हाई अवेलेबिलिटी (HA) सक्षम करें
प्रोडक्शन-जैसी HA के लिए (होम लैब में वैकल्पिक):
- एक बाहरी DB का उपयोग करें (उदाहरण के लिए, MySQL/PostgreSQL/etcd)।
--server
फ्लैग और साझा DB के साथ कई सर्वर नोड्स चलाएं।- देखें: K3s HA डॉक
🧪 एक डिप्लॉयमेंट का परीक्षण करें
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=LoadBalancer
kubectl get svc
curl http://<worker-ip>:<port>
के माध्यम से एक्सेस करें या MetalLB के लिए बाहरी LoadBalancer IPs सेट अप करें।
🧰 उपयोगी नोट्स
-
Kubeconfig:
/etc/rancher/k3s/k3s.yaml
- इसे अपने लोकल मशीन पर कॉपी करें और
export KUBECONFIG=...
करें ताकि आप दूर से प्रबंधन कर सकें।
- इसे अपने लोकल मशीन पर कॉपी करें और
-
Systemd Services:
sudo systemctl status k3s
sudo systemctl status k3s-agent
(वर्कर्स पर)
💡 अतिरिक्त (वैकल्पिक)
-
K9s: टर्मिनल UI Kubernetes प्रबंधन के लिए:
brew install k9s
याsudo snap install k9s
-
डैशबोर्ड: मैनिफेस्ट्स के साथ सक्षम करें:
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
-
MetalLB: बेयर-मेटल के लिए लोड बैलेंसिंग समर्थन जोड़ें:
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.13.10/config/manifests/metallb-native.yaml
📦 क्लीनअप
K3s को हटाने के लिए:
# मास्टर पर:
/usr/local/bin/k3s-uninstall.sh
# वर्कर पर:
/usr/local/bin/k3s-agent-uninstall.sh
Terraform के साथ 3-नोड बेयर-मेटल K3s क्लस्टर स्थापित करें
यहाँ एक Terraform टेम्पलेट है जो एक 3-नोड बेयर-मेटल K3s क्लस्टर प्रोविजन करने में मदद करता है, मानकर कि आप पहले से प्रोविजन किए गए Linux सर्वर (उदाहरण के लिए, अपने LAN/होम लैब में) को SSH और Ansible के माध्यम से प्रबंधित कर रहे हैं। Terraform Ansible प्लेबुक्स को चलाएगा ताकि K3s स्थापित की जा सके।
🧱 अनुमान
-
आपके पास पहले से ही हैं:
- 3 सर्वर फिक्स्ड आईपी के साथ, SSH के माध्यम से एक्सेस योग्य।
- SSH एक्सेस (की-आधारित)।
- स्थानीय रूप से Terraform और Ansible स्थापित।
-
टारगेट OS: Ubuntu/Debian (कस्टमाइज़ किया जा सकता है)।
-
आप Terraform
local-exec
या Ansible प्रोविजनर प्लगिन का उपयोग कर रहे हैं (हम यहाँ पोर्टेबिलिटी के लिएlocal-exec
का उपयोग करेंगे)।
📁 डायरेक्टरी संरचना
k3s-cluster/
├── main.tf
├── inventory.ini
├── ansible/
│ └── install_k3s.yml
└── variables.tf
📄 variables.tf
variable "master_ip" {
default = "192.168.1.100"
}
variable "worker_ips" {
default = ["192.168.1.101", "192.168.1.102"]
}
variable "ssh_user" {
default = "your_user"
}
variable "ssh_private_key" {
default = " /.ssh/id_rsa"
}
📄 main.tf
provider "null" {}
resource "null_resource" "install_k3s" {
provisioner "local-exec" {
command = "ANSIBLE_HOST_KEY_CHECKING=False ansible-playbook -i inventory.ini ansible/install_k3s.yml --private-key ${var.ssh_private_key} -u ${var.ssh_user}"
}
triggers = {
always_run = "${timestamp()}"
}
}
📄 inventory.ini
[masters]
192.168.1.100
[workers]
192.168.1.101
192.168.1.102
[all:vars]
ansible_python_interpreter=/usr/bin/python3
📄 ansible/install_k3s.yml
---
- hosts: masters
become: yes
tasks:
- name: Install k3s master
shell: |
curl -sfL https://get.k3s.io | sh -
- name: Get node-token
shell: cat /var/lib/rancher/k3s/server/node-token
register: node_token
delegate_to: localhost
- hosts: workers
become: yes
tasks:
- name: Join worker to cluster
shell: |
curl -sfL https://get.k3s.io | K3S_URL=https://{{ hostvars['192.168.1.100']['ansible_host'] }}:6443 K3S_TOKEN={{ hostvars['192.168.1.100']['node_token']['stdout'] }} sh -
नोट: आपको आईपी या टोकन चर एक्सेस के आधार पर Ansible संस्करणों के अनुसार ट्वीक करने की आवश्यकता हो सकती है। आप मास्टर पर टोकन जनरेट कर सकते हैं और वर्कर स्थापना चलाने से पहले इसे एक फाइल में सेव कर सकते हैं।
🚀 कैसे चलाएं
k3s-cluster/
डायरेक्टरी से:
terraform init
terraform apply
🧰 सुधार (वैकल्पिक)
- डायनेमिक इन्वेंटरी जनरेशन का उपयोग करें (उदाहरण के लिए, DHCP/dnsmasq से)।
- Ansible के माध्यम से MetalLB डिप्लॉयमेंट जोड़ें।
- होस्टनेम और HA फीचर्स जोड़ें।
- Ansible रोल जैसे
xanmanning.k3s
के साथ बदलें अधिक लचीलापन के लिए।
उपयोगी लिंक्स
- https://k3s.io/
- क्यूबर्नेट्स चीटशीट
- Kubespray के साथ Kubernetes स्थापित करें
- Terraform चीटशीट - उपयोगी कमांड्स और उदाहरण
- क्यूबर्नेट्स डिस्ट्रीब्यूशन - kubeadm, k3s, MicroK8s, Minikube, Talos Linux और RKE2 का त्वरित अवलोकन
- 3-नोड होमलैब के लिए Kubernetes डिस्ट्रीब्यूशन की तुलना
- Ubuntu 24.04 की स्थापना & उपयोगी उपकरण
- डॉकर चीटशीट
- डॉकर कॉम्पोज चीटशीट - उदाहरणों के साथ सबसे उपयोगी कमांड्स