[tip and trick] Scaledown/scaleup deamonset trên K8S

Đôi lúc muốn dừng chạy 1 số pod nào đó, nhưng lại ko muốn xóa nó đi, có thể chạy lại sau này.
Với deployment thì có thể set replica = 0 là xong, nhưng với deamonset thì ko được.

Có thể xài trick như sau:
Scaledown

kubectl -n <namespace> patch daemonset <daemonset name>  -p '{"spec": {"template": {"spec": {"nodeSelector": {"non-existing": "true"}}}}}'

Scale UP:

kubectl -n <namespace> patch daemonset <daemonset name>  --type json -p='[{"op": "remove", "path": "/spec/template/spec/nodeSelector/non-existing"}]'

 

Sử dụng docker – Xóa mù


Thuở xưa, thời còn mông muội, cả thế giới chỉ biết cài OS lên, nhét app vào rồi bấm chạy.
Khi phần cứng máy chủ trở nên rẻ tiền hơn, đồng thời, có những nhu cầu oái ăm phát sinh trong doanh nghiệp: một số app cần chạy độc lập –> mua máy khác cho nó chạy –> tăng số lượng phần cứng cần quản lý, lãng phí tài nguyên máy chủ do cái app đó dùng có tí tẹo tài nguyên mà không share cho con nào khác được. Và thế là Ảo hoá ra đời.
Như 1 sự cứu tinh, cho phép băm một máy chủ vật lý thành hàng chục OS độc lập chạy song song đồng thời , tương đương với 1 máy chủ vật lý được chia làm rất nhiều máy chủ con có cấu hình vừa đủ khác nhau cho từng nhu cầu. Việc này tận dụng tối đa khả năng sử dụng tài nguyên của doanh nghiệp, tiết kiệm tiền mua máy chủ cho hằng ha sa số công ty đang thắt lưng buộc bụng tìm kiếm lợi nhuận.
Tuy nhiên, không có gì hoàn hảo. Đối với doanh nghiệp to hơn 1 chút, họ cần tối ưu tài nguyên hơn nữa, chu trình phát triển phần mềm của họ muốn tối ưu tự động 1 cách tốt hơn nữa. Họ không muốn quan tâm tới đống máy chủ ảo lổn nhổn kia, chỉ muốn tập trung vào phát triển ứng dụng, triển khai nhanh chóng để đưa vào kinh doanh. Họ nhận ra rằng, nếu họ có 1000 máy chủ ảo giống nhau, thì họ tốn chi phí cho 1000 cái OS đang chạy, quá lãng phí. Và thế là lại có container ra đời.
Container giúp 1000 thằng ở trên dùng chung kernel của thằng OS trên máy vật lý, nhưng vẫn đảm bảo độc lập về mặt môi trường cho app chạy. Tức là, container chỉ là một cái hộp, bọc lấy cái app rồi đặt nó vào OS mà cái app đó cần. Mỗi app 1 hộp, trong hộp cài cắm những gì nó cần, và nó sẽ chỉ hoạt động trong cái hộp dành cho nó mà thôi. Những gì liên quan tới OS, phần cứng, tài nguyên, giờ đây sẽ có người khác lo cho nó. Kéo theo đó, container hiển nhiên nhẹ hơn rất nhiều so với máy ảo cồng kềnh, triển khai cũng nhanh hơn. Từ đây, mỗi 1 môi trường (OS) được gắn liền vào 1 app, quản lý thống nhất, dễ dàng và rẻ tiền hơn.

Docker là một platform để sử dụng container như thế.
– Cài đặt docker: Bấm vào đây
– Các khái niệm cơ bản về docker.
– Tạo một container centos:6.9 và cài đặt app.
– Lưu container để deploy tới nơi khác, hoặc backup.
– Image, docker file.
– Chu trình vòng đời của 1 container.
– Networking trong docker.

Cài đặt docker trên centos 6

yum install docker-io
service docker start

Nếu có lỗi không tìm thấy service docker, gõ lệnh docker thấy:

Segmentation Fault or Critical Error encountered. Dumping core and abort

Nguyên nhân do máy này đã cài đặt gói docker trước đó. Khi đó cần gỡ bỏ gói docker ra, cài lại:

yum -y remove docker.x86_64
yum install docker-io
service docker start