Lable và Taint
Lable
Label là một tính năng quan trọng trong Kubernetes, được sử dụng để tổ chức và quản lý các đối tượng một cách hiệu quả. Bạn có thể gán các cặp key-value cho các đối tượng Kubernetes như Pod, Node, Service, Deployment, v.v. Cụ thể:
Mỗi Lable là một cặp key-value: Key (khoá) là một chuỗi ký tự dùng để xác định tên của lable. Value (giá trị) là một chuỗi ký tự tùy chọn, cung cấp thông tin chi tiết về lable.
Key và value phải tuân theo các quy tắc đặt tên: Key và value không được chứa dấu khoảng trắng, ký tự đặc biệt ngoài (-, _,.).
Lable có thể được sử dụng cho nhiều mục đích khác nhau, bao gồm:
Phân loại các đối tượng dựa trên các tiêu chí như environment, version, status, v.v.
Theo dõi và quản lý các đối tượng trong cụm Kubernetes.
Ví dụ:
app: nginx
- Lable này cho biết đối tượng có liên quan đến ứng dụng Nginx.environment: production
- Lable này cho biết đối tượng thuộc về môi trường production.version: 1.7.2
- Lable này cho biết đối tượng có liên quan đến phiên bản 1.7.2.
Tạo Lable
Để tạo Lable cho một Node Group, bạn hãy thực hiện theo hướng dẫn sau:
Bước 1: Truy cập vào https://vks.console.vngcloud.vn/overview
Bước 2: Tại Cluster đã khởi tạo trước đó, hãy chọn Create a Node group.
Bước 3: Tại màn hình khởi tạo Node Group, chúng tôi đã thiết lập thông tin cho Node Group của bạn. Bạn có thể giữ các giá trị mặc định này hoặc điều chỉnh các thông số mong muốn cho Node Group của bạn. Tại mục Node Group Metadata Setting, bạn cần:
Nhập key cho lable của bạn. Key phải bắt đầu và kết thúc bằng chữ hoặc số và bao gồm các ký tự a-z, A-Z, 0-9, -, _, . tối đa 253 ký tự. Ngoài ra bạn có thể nhập key là một DNS subdomain ví dụ: example.com/my-app
Nhập value cho key tương ứng này.
Bước 5: Chọn Create Node Group. Hãy chờ vài phút để chúng tôi khởi tạo Node Group của bạn, trạng thái của Node Group lúc này là Creating.
Bước 6: Khi trạng thái Node Group là Active, bạn có thể xem thông tin Node Group bằng cách chọn vào Node Group Name tại màn hình chính.
Hoặc bạn có thể tạo Lable thông qua kubectl theo câu lệnh:
Bạn có thể kiểm tra lại lable vừa tạo qua lệnh:
Ví dụ kết quả cho lệnh này sẽ như sau:
Sử dụng Lable với nodeSelector
nodeSelector là một tham số được sử dụng trong PodSpec để chỉ định rằng Pod chỉ nên được lên lịch trên các Node có lable cụ thể. Điều này hữu ích khi bạn muốn chạy Pod trên các Node có tài nguyên hoặc thuộc tính cụ thể.
Tạo tệp tin my-pod.yaml chứa nội dung như sau:
Trong ví dụ này, Pod my-pod
chỉ được lên lịch trên các Node có lable disktype: ssd
và region: hcm03
.
Triển khai Pod trên Cluster của bạn:
Taint
Taint là một tính năng quan trọng trong Kubernetes, đóng vai trò như một cơ chế để đánh dấu các Node và kiểm soát việc lên lịch Pod trên những Node đó. Khác với Label thông thường, Taint được sử dụng để chỉ định các thuộc tính đặc biệt của Node và thực thi các hành động cụ thể khi Pod không đáp ứng các điều kiện được xác định bởi Taint. Cụ thể:
Cụ thể:
Mỗi Taint bao gồm:
Key (khoá) là một chuỗi ký tự dùng để xác định tên của taint.
Value (giá trị) là một chuỗi ký tự tùy chọn, cung cấp thông tin chi tiết về taint.
Effect:
NoSchedule: Ngăn Pod không có Toleration tương ứng được lên lịch trên Node.
NoExecute: Cho phép Pod được lên lịch trên Node nhưng Pod sẽ không được thực thi.
PreferNoSchedule: Kubernetes sẽ cố gắng ưu tiên không lên lịch Pod lên Node có Taint này.
Key và value phải tuân theo các quy tắc đặt tên: Key và value không được chứa dấu khoảng trắng, ký tự đặc biệt ngoài (-, _,.).
Toleration: Để Pod có thể được lên lịch và chạy trên Node có Taint, Pod cần có Toleration tương ứng. Toleration được khai báo trong PodSpec bằng cách sử dụng
tolerations
field. Ví dụ:
Mối quan hệ giữa Taint và Toleration: Khi Kubernetes lên lịch Pod, Kubernetes sẽ so khớp các Taint của Node với các Toleration của Pod. Pod chỉ được lên lịch trên Node nếu có Toleration cho tất cả các Taint của Node đó.
Ví dụ:
node.role.kubernetes.io/master:NoSchedule - ngăn các Pod thông thường được chạy trên Node này.
Tạo Taint
Để tạo Taint cho một Node Group, bạn hãy thực hiện theo hướng dẫn sau:
Bước 1: Truy cập vào https://vks.console.vngcloud.vn/overview
Bước 2: Tại Cluster đã khởi tạo trước đó, hãy chọn Create a Node group.
Bước 3: Tại màn hình khởi tạo Node Group, chúng tôi đã thiết lập thông tin cho Node Group của bạn. Bạn có thể giữ các giá trị mặc định này hoặc điều chỉnh các thông số mong muốn cho Node Group của bạn. Tại mục Node Group Metadata Setting, bạn cần:
Nhập key cho taint của bạn. Key phải bắt đầu và kết thúc bằng chữ hoặc số và bao gồm các ký tự a-z, A-Z, 0-9, -, _, . tối đa 253 ký tự. Ngoài ra bạn có thể nhập key là một DNS subdomain ví dụ: example.com/my-app
Nhập value cho key tương ứng này.
Chọn 1 trong 3 loại effect: NoSchedule, NoExecute, PreferNoSchedule.
Bước 5: Chọn Create Node Group. Hãy chờ vài phút để chúng tôi khởi tạo Node Group của bạn, trạng thái của Node Group lúc này là Creating.
Bước 6: Khi trạng thái Node Group là Active, bạn có thể xem thông tin Node Group bằng cách chọn vào Node Group Name tại màn hình chính.
Hoặc bạn có thể tạo Taint thông qua kubectl theo câu lệnh:
Ví dụ sử dụng Taint:
Giả sử bạn có một Node master
được sử dụng cho mục đích quản lý và bạn muốn ngăn các Pod thông thường được chạy trên Node này. Bạn có thể sử dụng Taint như sau:
Để Pod có thể chạy trên Node master
, Pod cần có Toleration tương ứng:
Last updated