Bài hướng dẫn hôm nay sẽ hướng dẫn sử dụng K8S bằng cách sử dụng câu lệnh thay vì UI trên web.
Có rất nhiều ưu điểm, tránh phụ thuộc quá nhiều vào giao diện web.
Có 2 lựa chọn để thực hiện:
- Sử dụng Cloud Shell
- Active cloud shell theo hướng dẫn này
- Trong cloud shell đã có sẵn gcloud và kubectl (Kubernetes command-line tool)
- Sử dụng **Command-line tools locally **
- Install gcloud cho máy local của bạn tại đây
- Sử dụng gcloud cài kubectl
1 2 | gcloud components install kubectl |
Nếu trong quá trình cài bị lỗi, có thể theo hướng dẫn này
Các bước chuẩn bị đã xong, bây giờ vào phần chính.
- Cấu hình các tham số mặc định của google-cloud
1 2 | gcloud init |
theo hướng bạn chọn các thông số phù hợp
- Đăng nhập google account cho lần đầu
- Chọn default project
- Chọn default zone (chứa default region) trong ví dụ này mình chọn zone us-central1-a nằm trong us-central1
Sau khi config xong banj cos thể xem lại thông tin của mình
1 2 | gcloud config list |
sẽ có kết quả như sau (*** là mình che thông tin cá nhân)
1 2 3 4 5 6 7 8 9 | [compute] region = us-central1 zone = us-central1-a [core] account = ***@gmail.com disable_usage_reporting = True project = *** |
- Tạo 1 cluster, trong ví dụ này mình sẽ tạo autopilot cluster, my-cluster là tên của cluster
1 2 | gcloud container clusters create-auto my-cluster --region us-central1 |
Chờ khoẳng 5p để hệ thống tạo cluster
3. Connect cluster
1 2 3 4 5 6 | gcloud container clusters get-credentials my-cluster --region us-central1 message Fetching cluster endpoint and auth data. kubeconfig entry generated for my-cluster. |
- Tạo deployment từ sample image : nginx:latest lấy từ dockerhub
1 2 3 4 | kubectl create deployment hello-app --image=nginx:latest deployment.apps/hello-app created |
- Tạo HorizontalPodAutoscaler cho deployment, giúp auto scale (dự vào % sử dụng CPU, hệ thống sẽ tự động scale)
1 2 | kubectl autoscale deployment hello-app --cpu-percent=80 --min=1 --max=5 |
Có thể kiểm tra các Pods được tạo
1 2 | kubectl get pods |
- Các pod được tạo ra, chạy trên mạng nội bộ, cần phải cho phép bên ngoài có thể sử dụng được các service này.
Chúng ta đi đến bước tạo service.
Do nginx chạy port 80 nên –target-port = 80
Mở liên kế từ bên ngoài, port 8080 –port 8080
Kiểu expose LoadBalancer (khi ta có nhiều pod, các request sẽ được phân chia vào các pod)
1 2 | kubectl expose deployment hello-app --name=hello-app-service --type=LoadBalancer --port 8080 --target-port 80 |
- Kiểm tra các service đã được tạo
1 2 | kubectl get service |
output
1 2 3 4 | NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE hello-app-service LoadBalancer 10.62.1.116 <pending> 8080:31699/TCP 29s kubernetes ClusterIP 10.62.0.1 <none> 443/TCP 49m |
Ban đầu external-ip là
chờ 1 chút. check lại, hệ thống sẽ khởi tạo và gán external ip cho service, khi đó việc tạo service sẽ thực hiện được.
1 2 3 4 | NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE hello-app-service LoadBalancer 10.62.1.116 35.184.165.64 8080:31699/TCP 25m kubernetes ClusterIP 10.62.0.1 <none> 443/TCP 73m |
Trong trường hợp của mình, mình đã có thể truy cập vào web
http://35.184.165.64:8080/
- Khi muốn update version mới của image new_image
1 2 | kubectl set image deployment/hello-app nginx=nginx:1.16.1 |
- Khi không sử dụng có thể delete service và cluster
1 2 3 | kubectl delete service hello-app-service gcloud container clusters delete hello-cluster --region us-central1 |