- vừa được xem lúc

Cài đặt k8s cluster từ A - Z

0 0 1

Người đăng: kiên phùng

Theo Viblo Asia

👋 Xin chào các bạn

Hôm nay mình sẽ chia sẻ cách setup cụm K8s từ A - Z.
Cấu hình yêu cầu: Tối thiểu 2G RAM20GB Disk.
Mình sẽ setup cụm trên 2 máy, có thể dùng máy ảo hoặc VPS đều được.

🖥️ Thông tin các Node

Node IP Hostname
k8s-master 192.168.1.111 k8s-master.local
k8s-worker1 192.168.1.112 k8s-worker1.local

📘 1. Kubernetes là gì?

Kubernetes (K8s) là một hệ thống để quản lý, điều phối các ứng dụng container trên nhiều máy chủ (cluster).

Nó cho phép bạn:

  • Scale tài nguyên linh hoạt
  • Update/Rollback dịch vụ
  • Tự động khôi phục ứng dụng

So với Docker Swarm, Kubernetes mạnh mẽ và mở rộng tốt hơn.


🧱 2. Kiến trúc tổng quan của Kubernetes

Hệ thống K8s bao gồm nhiều thành phần, dưới đây là sơ đồ minh họa và mô tả ngắn gọn:

K8s Architecture

  • etcd: Lưu cấu hình cluster
  • kube-apiserver: Cổng REST API cho K8s
  • kube-scheduler: Phân phối Pod
  • kube-controller-manager: Giám sát trạng thái cluster
  • kubelet: Quản lý Pod trên từng node
  • kube-proxy: Quản lý mạng và load balancing

⚙️ 3. Tiến hành cài đặt

✅ 3.1 Cập nhật hệ điều hành (trên tất cả các node)

sudo apt update
sudo apt upgrade -y
sudo reboot

✅ 3.2 Đặt hostname và cấu hình /etc/hosts

Trên master:

sudo hostnamectl set-hostname "k8s-master.local"

Trên worker:

sudo hostnamectl set-hostname "k8s-worker1.local"

Sửa file hosts trên cả 2 node:

sudo nano /etc/hosts

Thêm:

192.168.1.111 k8s-master.local k8s-master
192.168.1.112 k8s-worker1.local k8s-worker1

✅ 3.3 Tắt swap và cấu hình kernel

sudo swapoff -a
sudo nano /etc/fstab
# comment dòng swap:
#/swap.img none swap sw 0 0

Load kernel modules:

sudo tee /etc/modules-load.d/containerd.conf <<EOF
overlay
br_netfilter
EOF sudo modprobe overlay
sudo modprobe br_netfilter

Set kernel params:

sudo tee /etc/sysctl.d/kubernetes.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF sudo sysctl --system

✅ 3.4 Cài đặt Containerd

sudo apt install -y curl gnupg2 software-properties-common apt-transport-https ca-certificates
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/docker.gpg
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt update
sudo apt install -y containerd.io

Cấu hình containerd:

containerd config default | sudo tee /etc/containerd/config.toml >/dev/null 2>&1
sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/g' /etc/containerd/config.toml
sudo systemctl restart containerd
sudo systemctl enable containerd

✅ 3.5 Cài đặt Kubernetes tools

Cài đặt Kubernetes các bạn nên làm theo tài liệu nhé. Tại thời điểm mình viết bài thì đã có v1.33. Các bạn chọn version phù hợp với mình nhé (https://kubernetes.io/blog/2023/08/15/pkgs-k8s-io-introduction/)

sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.28/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.28/deb/ /" | sudo tee /etc/apt/sources.list.d/kubernetes.list sudo apt update
sudo apt install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl

✅ 3.6 Khởi tạo cluster (chỉ chạy lệnh trên Master node)

sudo kubeadm init \ --pod-network-cidr=10.10.0.0/16 \ --control-plane-endpoint=k8s-master.local

Trong đó 10.10.0.0/16 là CIDR của pod network, bạn có thể thay theo nhu cầu.

Cấu hình kubectl:

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

Kiểm tra trạng thái:

kubectl cluster-info
kubectl get nodes

✅ 3.7 Thêm Worker node vào cluster (Chạy trên Worker node)

Chạy lệnh được tạo từ master như:

kubeadm join k8s-master.local:6443 --token abc123.456789abcdef \ --discovery-token-ca-cert-hash sha256:<your-hash>

Trên master kiểm tra:

kubectl get nodes

✅ 3.8 Cài đặt Calico (trên master)

curl https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/calico.yaml -O

Mở file và sửa CALICO_IPV4POOL_CIDR:

- name: CALICO_IPV4POOL_CIDR value: "10.10.0.0/16"

Cài calico:

kubectl apply -f calico.yaml

Kiểm tra pods:

kubectl get pods -n kube-system

📊 4. Cài đặt Kubernetes Dashboard và Kết luận

Cài đặt giao diện quản lý cho cluster là tùy chọn, giúp quản lý trực quan hơn. Thực hiện các lệnh sau để cài Dashboard bằng NodePort:

wget https://raw.githubusercontent.com/kubernetes/dashboard/master/aio/deploy/recommended.yaml
kubectl apply -f recommended.yaml
kubectl --namespace kubernetes-dashboard patch svc kubernetes-dashboard -p '{"spec": {"type": "NodePort"}}'
echo "spec: ports: - nodePort: 32000 port: 443 protocol: TCP targetPort: 8443" > nodeport_dashboard_patch.yaml
kubectl -n kubernetes-dashboard patch svc kubernetes-dashboard --patch "$(cat nodeport_dashboard_patch.yaml)"
kubectl get deployments -n kubernetes-dashboard
kubectl get pods -n kubernetes-dashboard
kubectl get svc -n kubernetes-dashboard Truy cập Dashboard qua địa chỉ: https://<IP_node>:32000 📈Kết luận 🎉 Vậy là chúng ta đã hoàn tất việc thiết lập một cụm Kubernetes cơ bản với **1 master** và **1 worker**, sử dụng **Calico** làm mạng Pod, đồng thời cài đặt thành công **Kubernetes Dashboard** để quản lý cụm dễ dàng và trực quan hơn. 👉 Bạn đã có nền tảng vững chắc để tiếp tục khám phá các tính năng nâng cao của Kubernetes như quản lý Secret, Persistent Volume, CI/CD, hoặc mở rộng cluster theo nhu cầu. Chúc bạn thành công và học tập vui vẻ! 🚀

Bình luận

Bài viết tương tự

- vừa được xem lúc

Phần 1: Giới thiệu về Kubernetes

Kubernetes là gì. Trang chủ: https://kubernetes.io/. Ai cần Kubernetes.

0 0 108

- vừa được xem lúc

Thực hành K8S trên Google Cloud

Kubernetes (K8S) trở nên quá phổ biến ở thời điểm hiện tại, ai cũng nói về nó. Trong bài hôm nay mình sẽ không đi quá nhiều vào các định nghĩa, mà đi thẳng vào thực tế để mọi người dễ hình dung.

0 0 48

- vừa được xem lúc

Kubernetes best practices - Liveness và Readiness Health checks

Mở đầu. Kubernetes cung cấp cho bạn một framework để chạy các hệ phân tán một cách mạnh mẽ.

0 0 61

- vừa được xem lúc

Kubernetes - deployment.yaml explained

Trong bài trước, mình có giới thiệu chạy các câu lệnh K8S bằng Command Line. Để tạo 1 deloyment đơn giản chỉ cần chạy lệnh.

0 0 96

- vừa được xem lúc

Tìm hiểu cơ bản về Kubernetes - K8s (Part 2): Minikube

Lời mở đầu. .

0 0 52

- vừa được xem lúc

ETCD - Bộ não của Kubernetes và cách cài đặt cụm ETCD Cluster (High Availability)

Hello anh em, sau vài ngày nghiên cứu đọc lại liệu cũng như cài cắm thủ công đủ thể loại, với vô số lỗi fail thì mình cũng cài đặt thành công cụm etcd cluster một cách thủ công. Trước giờ chuyên tạo c

0 0 53