Kubernetes trên Windows Server: Từ Docker Container đến Orchestration ở quy mô lớn
Kubernetes là gì?
Kubernetes (K8s) là nền tảng giúp điều phối Container Orchestration (mã nguồn mở) được phát triển bởi Google và hiện được Cloud Native Computing Foundation (CNCF) quản lý. Trong bài viết trước, chúng ta đã biết rằng nếu Docker giải quyết bài toán chạy một vài Container trên một máy chủ, thì Kubernetes giải quyết bài toán:
Kubernetes Cluster là gì?
Kubernetes hoạt động theo mô hình Cluster. Một Kubernetes Cluster sẽ bao gồm Master/Control Plane và Worker Nodes. Các Worker Nodes có thể là các máy chủ Linux Servers hoặc Windows Servers. Điều này cho phép doanh nghiệp chạy các ứng dụng đa nền tảng (Win/Linux) trong cùng một cụm Kubernetes.
Master (Control Plane) là gì?
Control Plane là "bộ não" của Kubernetes. Nó chịu trách nhiệm
kube-apiserver
Là cổng giao tiếp trung tâm của Kubernetes. Mọi lệnh như kubectl apply, kubectl get, kubectl delete...đều đi qua API Server.
Scheduler
Scheduler quyết định Pod sẽ được triển khai trên Worker Node nào.
Ví dụ trong tình huống Node A còn nhiều RAM còn Node B CPU đang quá tải, thì bộ định thời Scheduler sẽ chọn Node A để chạy workload.
Controller Manager
Có chức nằng liên tục giám sát trạng thái của Cluster. Ví dụ Người quản trị yêu cầu replicas = 3. Nếu một Pod bị lỗi, Controller sẽ tự động tạo Pod mới để luôn duy trì 3 Pod. Đây chính là cơ chế Self-Healing nổi tiếng của Kubernetes.
Worker Node là gì?
Worker Node là nơi thực tế chạy các ứng dụng Container.
Mỗi Worker Node thường bao gồm:
Kubelet
Agent chạy trên từng Node. Nhiệm vụ là nhận chỉ thị từ Control Plane; Khởi động Container; Theo dõi Pod; Báo cáo trạng thái về Cluster.
Kube-proxy
Quản lý Network Services như Service IP, Load Balancing, Routing giữa các Pods...
Container Runtime
Chịu trách nhiệm chạy Container. Ví dụ như Docker, containerd, CRI-O.
Kubernetes Pod là gì?
Đây là khái niệm quan trọng nhất khi học Kubernetes. Kubernetes quản lý Pod, không quản lý Container trực tiếp. Pod là đơn vị triển khai nhỏ nhất trong Kubernetes. Một Pod có thể chứa một hoặc nhiều Container. Các Container bên trong cùng một Pod có thể chia sẻ Network Namespace hoặc chia sẻ phần dung lượng ổ cứng Storage. Nó cũng có thể giao tiếp với nhau thông qua qua localhost.
Ví dụ về Pod
Một ứng dụng Web có thể gồm:
Container 1: Website Frontend
Container 2: Logging Agent
Container 3: Sidecar Proxy
Tất cả có thể cùng nằm trong một Pod.
Workload trong Kubernetes
Một ứng dụng hiện đại thường không chỉ có một Container. Ví dụ:
Hệ thống E-Commerce sẽ bao gồm Frontend Containers, Backend API Containers, Authentication Containers, Logging Containers, Monitoring Containers. Các Container này có thể được phân phối trên nhiều Worker Nodes khác nhau. Kubernetes sử dụng Pod để đóng gói và quản lý các workload này.
Quy trình triển khai Kubernetes trên Windows
Bước 1: Tạo Kubernetes Master
Thông thường Control Plane được triển khai trên Linux.
Công cụ phổ biến:
kubeadm init
Kubeadm giúp:
Kubernetes yêu cầu một giải pháp mạng hỗ trợ:
Bước 3: Tham gia Worker Nodes
Sau khi Control Plane được tạo, các Worker Nodes sẽ join Cluster:
kubeadm join
Worker Nodes có thể là Linux Server hoặc Windows Server.
Bước 4: Triển khai và quản lý tài nguyên Kubernetes
Sử dụng:
kubectl
Ví dụ:
Tạo Deployment:
kubectl apply -f app.yaml
Xem Pods:
kubectl get pods
Xem Nodes:
kubectl get nodes
Xóa tài nguyên:
kubectl delete deployment app
Kubernetes trên Windows Server
Microsoft chính thức hỗ trợ Windows Worker Nodes trong Kubernetes. Kubernetes 1.14 hỗ trợ Windows Server 2019, Windows Server version 1809 trở lên. Tuy nhiên chúng ta cần lưu ý:
Windows Server hiện chỉ hỗ trợ vai trò Worker Node. Còn Control Plane vẫn chủ yếu chạy trên Linux. Mô hình phổ biến hiện nay:
Linux Control Plane
↓
Windows Worker Nodes
Linux Worker Nodes
Điều này cho phép doanh nghiệp:
Triển khai Kubernetes On-Premises khá phức tạp. Chúng ta phải lo về Control Plane, Networking, Certificate, Upgrades, Security, High Availability, Storage Integration...Do đó nhiều doanh nghiệp lựa chọn Azure Kubernetes Service (AKS). AKS giúp quản lý Control Plane, vấn đề nâng cấp Upgrades, Monitoring, vấn đề mở rộng Scaling, vá lỗi Security Patching... Team IT tập trung vào ứng dụng thay vì quản lý hạ tầng Kubernetes.
Tóm tắt bài Kubernetes trên Win.
Kubernetes là nền tảng điều phối Container ở quy mô lớn, được xây dựng theo kiến trúc Cluster gồm Master/Control Plane và các Worker Nodes chạy trên Linux hoặc Windows. Thay vì quản lý Container trực tiếp, Kubernetes sử dụng Pod như đơn vị triển khai cơ bản, cho phép phân phối tải workload trên nhiều máy chủ và tự động hóa việc mở rộng, khôi phục và quản lý ứng dụng. Kể từ Kubernetes 1.14, Windows Server 2019 và Windows Server version 1809 trở lên được hỗ trợ như các Worker Nodes, mở ra khả năng chạy đồng thời Windows Containers và Linux Containers trong cùng một hệ sinh thái Kubernetes hiện đại.
Cám ơn các bạn đã đọc.
Kubernetes là gì?
Kubernetes (K8s) là nền tảng giúp điều phối Container Orchestration (mã nguồn mở) được phát triển bởi Google và hiện được Cloud Native Computing Foundation (CNCF) quản lý. Trong bài viết trước, chúng ta đã biết rằng nếu Docker giải quyết bài toán chạy một vài Container trên một máy chủ, thì Kubernetes giải quyết bài toán:
- Chạy hàng trăm hoặc hàng nghìn Container
- Tự động phân phối workload trên nhiều máy chủ
- Tự động mở rộng (Scaling)
- Tự phục hồi (Self-Healing)
- Cập nhật ứng dụng mà không gián đoạn dịch vụ (Rolling Update)
Kubernetes Cluster là gì?
Kubernetes hoạt động theo mô hình Cluster. Một Kubernetes Cluster sẽ bao gồm Master/Control Plane và Worker Nodes. Các Worker Nodes có thể là các máy chủ Linux Servers hoặc Windows Servers. Điều này cho phép doanh nghiệp chạy các ứng dụng đa nền tảng (Win/Linux) trong cùng một cụm Kubernetes.
Master (Control Plane) là gì?
Control Plane là "bộ não" của Kubernetes. Nó chịu trách nhiệm
- Quản lý toàn bộ Cluster
- Tiếp nhận yêu cầu triển khai ứng dụng
- Quyết định Container sẽ chạy trên Node nào
- Giám sát trạng thái của Cluster
- Tự động khôi phục khi xảy ra lỗi
kube-apiserver
Là cổng giao tiếp trung tâm của Kubernetes. Mọi lệnh như kubectl apply, kubectl get, kubectl delete...đều đi qua API Server.
Scheduler
Scheduler quyết định Pod sẽ được triển khai trên Worker Node nào.
Ví dụ trong tình huống Node A còn nhiều RAM còn Node B CPU đang quá tải, thì bộ định thời Scheduler sẽ chọn Node A để chạy workload.
Controller Manager
Có chức nằng liên tục giám sát trạng thái của Cluster. Ví dụ Người quản trị yêu cầu replicas = 3. Nếu một Pod bị lỗi, Controller sẽ tự động tạo Pod mới để luôn duy trì 3 Pod. Đây chính là cơ chế Self-Healing nổi tiếng của Kubernetes.
Worker Node là gì?
Worker Node là nơi thực tế chạy các ứng dụng Container.
Mỗi Worker Node thường bao gồm:
Kubelet
Agent chạy trên từng Node. Nhiệm vụ là nhận chỉ thị từ Control Plane; Khởi động Container; Theo dõi Pod; Báo cáo trạng thái về Cluster.
Kube-proxy
Quản lý Network Services như Service IP, Load Balancing, Routing giữa các Pods...
Container Runtime
Chịu trách nhiệm chạy Container. Ví dụ như Docker, containerd, CRI-O.
Kubernetes Pod là gì?
Đây là khái niệm quan trọng nhất khi học Kubernetes. Kubernetes quản lý Pod, không quản lý Container trực tiếp. Pod là đơn vị triển khai nhỏ nhất trong Kubernetes. Một Pod có thể chứa một hoặc nhiều Container. Các Container bên trong cùng một Pod có thể chia sẻ Network Namespace hoặc chia sẻ phần dung lượng ổ cứng Storage. Nó cũng có thể giao tiếp với nhau thông qua qua localhost.
Ví dụ về Pod
Một ứng dụng Web có thể gồm:
Container 1: Website Frontend
Container 2: Logging Agent
Container 3: Sidecar Proxy
Tất cả có thể cùng nằm trong một Pod.
Workload trong Kubernetes
Một ứng dụng hiện đại thường không chỉ có một Container. Ví dụ:
Hệ thống E-Commerce sẽ bao gồm Frontend Containers, Backend API Containers, Authentication Containers, Logging Containers, Monitoring Containers. Các Container này có thể được phân phối trên nhiều Worker Nodes khác nhau. Kubernetes sử dụng Pod để đóng gói và quản lý các workload này.
Quy trình triển khai Kubernetes trên Windows
Bước 1: Tạo Kubernetes Master
Thông thường Control Plane được triển khai trên Linux.
Công cụ phổ biến:
kubeadm init
Kubeadm giúp:
- Khởi tạo Cluster
- Tạo Control Plane
- Quản lý Nodes
Kubernetes yêu cầu một giải pháp mạng hỗ trợ:
- Pod-to-Pod Communication
- Service Routing
- Routable Cluster Subnets
- Flannel
- Open vSwitch (OvS)
- OVN
- ToR Integration
- Linux CNI Plugins
Bước 3: Tham gia Worker Nodes
Sau khi Control Plane được tạo, các Worker Nodes sẽ join Cluster:
kubeadm join
Worker Nodes có thể là Linux Server hoặc Windows Server.
Bước 4: Triển khai và quản lý tài nguyên Kubernetes
Sử dụng:
kubectl
Ví dụ:
Tạo Deployment:
kubectl apply -f app.yaml
Xem Pods:
kubectl get pods
Xem Nodes:
kubectl get nodes
Xóa tài nguyên:
kubectl delete deployment app
Kubernetes trên Windows Server
Microsoft chính thức hỗ trợ Windows Worker Nodes trong Kubernetes. Kubernetes 1.14 hỗ trợ Windows Server 2019, Windows Server version 1809 trở lên. Tuy nhiên chúng ta cần lưu ý:
Windows Server hiện chỉ hỗ trợ vai trò Worker Node. Còn Control Plane vẫn chủ yếu chạy trên Linux. Mô hình phổ biến hiện nay:
Linux Control Plane
↓
Windows Worker Nodes
Linux Worker Nodes
Điều này cho phép doanh nghiệp:
- Chạy ứng dụng .NET Framework trên Windows Containers
- Chạy Microservices Linux trong cùng Cluster
- Từng bước hiện đại hóa hệ thống Legacy
Triển khai Kubernetes On-Premises khá phức tạp. Chúng ta phải lo về Control Plane, Networking, Certificate, Upgrades, Security, High Availability, Storage Integration...Do đó nhiều doanh nghiệp lựa chọn Azure Kubernetes Service (AKS). AKS giúp quản lý Control Plane, vấn đề nâng cấp Upgrades, Monitoring, vấn đề mở rộng Scaling, vá lỗi Security Patching... Team IT tập trung vào ứng dụng thay vì quản lý hạ tầng Kubernetes.
Tóm tắt bài Kubernetes trên Win.
Kubernetes là nền tảng điều phối Container ở quy mô lớn, được xây dựng theo kiến trúc Cluster gồm Master/Control Plane và các Worker Nodes chạy trên Linux hoặc Windows. Thay vì quản lý Container trực tiếp, Kubernetes sử dụng Pod như đơn vị triển khai cơ bản, cho phép phân phối tải workload trên nhiều máy chủ và tự động hóa việc mở rộng, khôi phục và quản lý ứng dụng. Kể từ Kubernetes 1.14, Windows Server 2019 và Windows Server version 1809 trở lên được hỗ trợ như các Worker Nodes, mở ra khả năng chạy đồng thời Windows Containers và Linux Containers trong cùng một hệ sinh thái Kubernetes hiện đại.
Cám ơn các bạn đã đọc.