Kubernetes
Kubernetes là một nền tảng mã nguồn mở giúp tự động hóa quá trình triển khai, quản lý và mở rộng ứng dụng dưới dạng container, đóng vai trò như một công cụ điều phối container (Container Orchestration Engine).
Trong Kubernetes, Cluster là một tập hợp các máy chủ (node) hoạt động cùng nhau để chạy các ứng dụng container hóa. Một cluster bao gồm ít nhất một Master Node (điều phối và quản lý) và nhiều Worker Node (thực thi workload). Cluster giúp đảm bảo tính sẵn sàng, mở rộng linh hoạt và quản lý tài nguyên hiệu quả.
Khởi tạo Cluster
- Bước 1: Chọn Cluster trên thanh Sidebar

- Bước 2: Chọn chức năng tạo Cluster bên phải màn hình. Hãy click vào nút "Create"

Bước 3: Tại trang tạo Cluster hãy điền đầy đủ thông tin cơ bản sao cho hợp lệ
Lựa chọn "Location"
Tại mục "Config Cluster": nhập tên mô tả, lựa chọn version và lựa chọn CNI Plugin
Tại mục "Config network": người dùng có thể lựa chọn public hoặc private
Với lựa chọn public, người dùng sẽ được cung cấp một ip tự động
Với lựa chọn private, người dùng sẽ phải chọn subnet muốn kết nối
Khi lựa chọn "Specify Custom Pod CIDR", đồng nghĩa với việc chỉ định một dải địa chỉ IP (CIDR) tùy chỉnh cho các Pod trong một Kubernetes cluster. Điều này giúp cho người dùng có thể kiểm soát tốt không gian IP mà Pod có thể sử dụng. Khi sử dụng, bạn người dùng hãy điền ip chỉ định vào ô nhập.
Bước 4: Với mục "Config cluster capacity" người dùng hoàn toàn có thể config pool, số lượng pool muốn khởi tạo trong K8S theo mong muốn
- Nhập name
- Lựa chọn node type và package đi kèm
- Nhập storage type
- Lựa chọn enable autoscale
- Nếu không tích vào lựa chọn thì người dùng cần nhập số node mong muốn
- Nếu tích vào lựa chọn thì người dùng cần nhập min, max số node
Bước 5: Kiểm tra tóm tắt thông tin config bao gồm thông tin K8S và các node pool
Bước 6: Xác thực thanh toán và ấn lưu thông tin để tạo K8S tại "Create Kubernetes Cluster"
Bước 7: Sau khi tạo thành công, K8S vừa tạo sẽ được hiển thị
Xóa K8S
- Chọn xóa K8S mong muốn từ action icon "Delete", bấm vào xóa. Lưu ý, hành động xóa không thể khôi phục, hãy chắc chắn cho hành động này

<img src="/resources/static/images_k8s/k8s_delete_popup.png" alt="K8S Delete">
Hướng dẫn kết nối Kubernetes cluster
Sau khi tạo xong K8S với trạng thái "Provisioned", người dùng hoàn toàn có thể kết nối đến K8S để kiểm tra và quản lý.
- Bước 1: Tải xuống file cấu hình của K8S: file chứa thông tin API endpoint, thông tin xác thực. Bấm download để tải file cấu hình về máy

Bước 2: Thiết lập môi trường của kubeconfig - sử dụng file cấu hình vừa tải
Bước 3: Kiểm tra trạng thái kết nối bằng câu lệnh
kubectl --kubeconfig=test.kubeconfig get pods -A
Giao diện sẽ hiển thị như hình

Hướng dẫn tích hợp với LoadBalancer
Gói LB
STT | Loại LB | Tên của flavor LB |
---|---|---|
1 | ACTIVE_STANDBY | 10000rps-300Mbps-10TBdatatransfer-active-standby |
2 | ACTIVE_STANDBY | 4000rps-300Mbps-10TBdatatransfer-active-standby |
3 | ACTIVE_STANDBY | 2000rps-300Mbps-5TBdatatransfer-active-standby |
4 | ACTIVE_STANDBY | 1500rps-300Mbps-5TBdatatransfer-active-standby |
5 | SINGLE | 10000rps-300Mbps-10TBdatatransfer-standalone |
6 | SINGLE | 4000rps-300Mbps-10TBdatatransfer-standalone |
7 | SINGLE | 2000rps-300Mbps-5TBdatatransfer-standalone |
8 | SINGLE | 1500rps-300Mbps-5TBdatatransfer-standalone |
Annotation
Tên annotation | Require | Các giá trị | Mô tả |
---|---|---|---|
kubernetes.omzcloud.vn/load-balancer-flavor |
true | Gói LB | Tên của flavor lb trên CMP service |
kubernetes.omzcloud.vn/load-balancer-network-type |
true | internal, external | Loại network |
kubernetes.omzcloud.vn/listener-protocol |
true | TERMINATED_HTTPS, HTTPS, HTTP, TCP, UDP | Giao thức mà listener của lb sẽ lắng nghe |
kubernetes.omzcloud.vn/load-balancer-algorithm |
true | LEAST_CONNECTIONS, ROUND_ROBIN, SOURCE_IP | Thuật toán của lb |
kubernetes.omzcloud.vn/load-balancer-session-persistence |
false | SOURCE_IP, HTTP_COOKIE, APP_COOKIE | Session persistence của pool |
kubernetes.omzcloud.vn/load-balancer-cookie-name |
false | SOURCE_IP, HTTP_COOKIE, APP_COOKIE | Nếu có annotation session-persistence và giá trị của nó là APP_COOKIE thì mới cần điền cookie name |
kubernetes.omzcloud.vn/vpc-subnet-id |
true | ID cmp của Subnet mà lb sẽ được tạo | |
kubernetes.omzcloud.vn/tls-certificate-id |
true | Nếu chọn Listener là TERMINATED_HTTPS thì bắt buộc | |
kubernetes.omzcloud.vn/terminated-ssl |
false | Giá trị: boolean value, true - nếu enable terminated SSL, false - nếu offload https. Dùng terminated-ssl: "true" thì bắt buộc kubernetes.omzcloud.vn/listener-protocol: "TERMINATED_HTTPS" | |
kubernetes.omzcloud.vn/listener-client-data-timeout kubernetes.omzcloud.vn/listner-tcp-inspect-timeout kubernetes.omzcloud.vn/listener-member-connect-timeout kubernetes.omzcloud.vn/listener-member-data-timeout kubernetes.omzcloud.vn/listener-connection-limit |
true | Các tham số cấu hình cho listener, nếu listener sử dụng protocol là UDP thì ko cần các trường này | |
kubernetes.omzcloud.vn/listener-allowed-cidr |
false | 10.0.0.0/8, 172.16.0.0/16, 192.168.0.0/16 | Dải ip cho phép của listener |
kubernetes.omzcloud.vn/listener-tls-cipher |
Khi báo tls cipher khi kubernetes.omzcloud.vn/terminated-ssl là "true" | ||
kubernetes.omzcloud.vn/listener-x-forwarded-for kubernetes.omzcloud.vn/listener-x-forwarded-proto kubernetes.omzcloud.vn/listener-x-forwarded-port |
true | Các trường boolean value, khi listener là terminated SSL hoặc HTTP (require condition) | |
kubernetes.omzcloud.vn/pool-protocol |
false | - Cấu hình protocol cho pool: HTTP, HTTPS, TCP, UDP - Listener protocol: HTTP ⇔ Pool protocol: HTTP - Listener protocol: HTTPS ⇔ Pool protocol: HTTPS, TCP - Listener protocol: TCP ⇔ Pool protocol: HTTP, HTTPS, TCP - Listener protocol: UDP ⇔ Pool protocol: UDP - Listener protocol: TERMINATED_HTTPS ⇔ Pool protocol: HTTP |
Tích hợp
Bước 1: Thiết lập môi trường kubeconfig. Xem hướng dẫn chi tiết tại Hướng dẫn kết nối với kubernetes cluster
Bước 2: Tạo một file test_lb.yaml chứa cấu hình file Loadbalancer. Tìm hiểu thêm tại Annotation và Gói LB
Ví dụ: Tạo Loadbalancer
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: nginx-service-2
annotations:
kubernetes.omzcloud.vn/load-balancer-flavor: "10000rps-300Mbps-10TBdatatransfer-active-standby"
spec:
type: LoadBalancer
selector:
app: nginx
ports:
- protocol: TCP
port: 80 # Cổng bên ngoài
targetPort: 80 # Cổng của container
name: test-80
Bước 3: Apply cấu hình bằng lệnh, từ đó sẽ xuất hiện loadbalancer bạn vừa tạo trên hệ thống
kubectl --kubeconfig=/root/quyen/test.kubeconfig create -f /root/quyen/test_lb.yaml
Lưu ý, bạn hoàn toàn có thể kiểm tra trạng thái hoạt động của con Loadbalancer vừa tạo trên giao diện của OMZ Cloud. Chi tiết hướng dẫn tại Loadbalancer.
Hướng dẫn tích hợp với volume
Bước 1: Tạo cluster, chờ cluster provisioned
Bước 2: Tạo volume trên có size mong muốn, lấy volume_id, ví dụ volume_id là aaaaa
(size và id có thể thay đổi)
Bước 3: Tạo file test_pv.yaml
có nội dung như sau: thay đổi trường volumeHandle bằng id của volume trên cmp
apiVersion: v1
kind: PersistentVolume
metadata:
name: omzcloudpv
spec:
accessModes:
- ReadWriteOnce
capacity:
storage: "20" # bằng với size của volume
claimRef:
apiVersion: v1
kind: PersistentVolumeClaim
name: testpvc
namespace: default
csi:
driver: volume.csi.omzcloud.vn
fsType: ext4
volumeHandle: aaaaa # id của volume trên cmp
storageClassName: ssd
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: testpvc
namespace: default
spec:
storageClassName: ssd
accessModes:
- ReadWriteOnce
resources:
requests:
storage: "20" # bằng với size của volume
---
apiVersion: v1
kind: Pod
metadata:
name: simple-pod
labels:
app: simple-app
spec:
containers:
- name: simple-container
image: nginx:latest
volumeMounts:
- mountPath: "/usr/share/nginx/html" # Nơi gắn PVC vào trong container
name: storage-volume
volumes:
- name: storage-volume
persistentVolumeClaim:
claimName: testpvc # Tên PVC đã được tạo trước
Bước 4: Chạy cấu hình trên với lệnh để có thể attach volume
kubectl --kubeconfig=test.kubeconfig apply -f /root/test_pv.yaml
Bước 5: Kiểm tra kết quả xem trạng thái của pod có tên simple-pod
đã running hay chưa
kubectl --kubeconfig=test.kubeconfig get pods -A
Detach Volume
Sau khi đã attach volume theo hướng dẫn, người dùng có thể dùng câu lệnh để detach như sau:
kubectl --kubeconfig=test.kubeconfig delete -f /root/test_pv.yaml