Bắt đầu với Kubernetes: A kubectl Cheat Sheet
Kubectl là một công cụ dòng lệnh được thiết kế để quản lý các đối tượng và cụm Kubernetes. Nó cung cấp giao diện dòng lệnh để thực hiện các hoạt động phổ biến như tạo và mở rộng quy mô Triển khai, chuyển đổi ngữ cảnh và truy cập shell trong một containers đang chạy.Cách sử dụng Hướng dẫn này:
- Hướng dẫn này ở định dạng ghi chú với các đoạn dòng lệnh độc lập.
- Đây không phải là danh sách đầy đủ các lệnh kubectl, nhưng chứa nhiều thao tác và trường hợp sử dụng phổ biến. Để tham khảo kỹ hơn, hãy tham khảo Tài liệu tham khảo Kubectl
- Chuyển đến bất kỳ phần nào có liên quan đến nhiệm vụ bạn đang cố gắng hoàn thành.
Yêu cầu
- Để sử dụng kubectl, bạn cần một cụm Kubernetes có sẵn cho mình. Để tìm hiểu cách tạo một cụm Kubernetes từ đầu, bạn có thể tham khảo Cách tạo một cụm Kubernetes bằng Kubeadm trên Ubuntu 18.04 . Ngoài ra, bạn có thể cung cấp một cụm Kubernetes được quản lý trong vài phút bằng cách sử dụng DigitalOcean Kubernetes. Để bắt đầu tạo cụm Kubernetes DigitalOcean, hãy tham khảo Cách tạo cụm Kubernetes bằng Control panel .
- Bạn cũng cần một máy từ xa để cài đặt và chạy kubectl. kubectl có thể chạy trên nhiều hệ điều hành khác nhau.
Triển khai mẫu
Để chứng minh một số hoạt động và lệnh trong bảng lừa đảo này, ta sẽ sử dụng Triển khai mẫu chạy 2 bản sao của Nginx:
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         ports:         - containerPort: 80  Copy paste  file  kê khai này vào file  có tên nginx-deployment.yaml .
Cài đặt kubectl
 Lưu ý: Các lệnh này chỉ được thử nghiệm trên máy Ubuntu 18.04 . Để tìm hiểu cách cài đặt kubectl trên các hệ điều hành khác, hãy tham khảo Cài đặt và  Cài đặt  kubectl từ tài liệu Kubernetes.
Trước tiên, hãy cập nhật index gói local của bạn và cài đặt các phụ thuộc :
- sudo apt-get update && sudo apt-get install -y apt-transport-https 
Sau đó, thêm khóa Google Cloud GPG vào APT và cung cấp gói kubectl cho hệ thống của bạn:
- curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - 
- echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list 
- sudo apt-get update 
Cuối cùng, cài đặt kubectl:
- sudo apt-get install -y kubectl 
Kiểm tra xem cài đặt thành công bằng version :
- kubectl version 
Cài đặt tính năng tự động hoàn thành Shell
 Lưu ý: Các lệnh này chỉ được thử nghiệm trên máy Ubuntu 18.04 . Để tìm hiểu cách  cài đặt  tính năng tự động hoàn thành trên các hệ điều hành khác, hãy tham khảo Cài đặt và  Cài đặt  kubectl từ tài liệu Kubernetes.
kubectl bao gồm một tập lệnh tự động hoàn thành shell mà bạn có thể cung cấp cho phần mềm tự động hoàn thành shell hiện có của hệ thống.
Cài đặt kubectl Autocompletion
Trước tiên, hãy kiểm tra xem bạn đã cài đặt bash-complete chưa :
- type _init_completion 
Bạn sẽ thấy một số kết quả tập lệnh.
 Tiếp theo, source tập lệnh tự động hoàn thành kubectl trong file  ~/.bashrc của bạn:
- echo 'source <(kubectl completion bash)' >>~/.bashrc 
- . ~/.bashrc 
Ngoài ra , bạn có thể thêm tập lệnh hoàn thành vào thư /etc/bash_completion.d :
- kubectl completion bash >/etc/bash_completion.d/kubectl 
Sử dụng
 Để sử dụng tính năng tự động hoàn thành, hãy nhấn TAB để hiển thị các lệnh kubectl có sẵn:
- kubectl TAB TAB 
Outputannotate       apply          autoscale      completion     cordon         delete         drain          explain        kustomize      options        port-forward   rollout        set            uncordon api-resources  attach         certificate    config         cp             describe . . . Bạn cũng có thể hiển thị các lệnh có sẵn sau khi nhập một phần lệnh:
- kubectl d TAB 
Outputdelete    describe  diff      drain Kết nối, cấu hình và sử dụng các khung cảnh
Đang kết nối
 Để kiểm tra xem kubectl có thể xác thực và truy cập vào cụm Kubernetes của bạn hay không, hãy sử dụng cluster-info :
- kubectl cluster-info 
Nếu kubectl có thể xác thực thành công với cụm của bạn, bạn sẽ thấy kết quả sau:
OutputKubernetes master is running at https://kubernetes_master_endpoint CoreDNS is running at https://coredns_endpoint  To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'. kubectl được  cấu hình  bằng cách sử dụng tệp cấu hình kubeconfig . Theo mặc định, kubectl sẽ tìm kiếm một file  có tên là config trong folder  $HOME/.kube . Để thay đổi điều này, bạn có thể đặt biến môi trường $KUBECONFIG thành file  kubeconfig tùy chỉnh hoặc chuyển vào file  tùy chỉnh tại thời điểm thực thi bằng cách sử dụng cờ --kubeconfig :
- kubectl cluster-info --kubeconfig=path_to_your_kubeconfig_file 
Lưu ý: Nếu bạn đang sử dụng cụm Kubernetes được quản lý, nhà cung cấp dịch vụ  cloud  của bạn nên cung cấp file  kubeconfig cho bạn.
 Nếu bạn không muốn sử dụng cờ --kubeconfig với mọi lệnh và không có file  ~/.kube/config , hãy tạo một folder  có tên ~/.kube trong folder  chính của bạn nếu nó chưa tồn tại, và sao chép vào file  kubeconfig, đổi tên nó thành config :
- mkdir ~/.kube 
- cp your_kubeconfig_file ~/.kube/config 
Bây giờ, hãy chạy cluster-info    để kiểm tra kết nối của bạn.
Sửa đổi cấu hình kubectl của bạn
 Bạn cũng có thể sửa đổi cấu hình  của bạn  bằng cách sử dụng bộ kubectl config .
 Để xem cấu hình kubectl của bạn, hãy sử dụng lệnh phụ view :
- kubectl config view 
OutputapiVersion: v1 clusters: - cluster:     certificate-authority-data: DATA+OMITTED . . . Sửa đổi cụm
 Để tìm nạp danh sách các cụm được xác định trong kubeconfig của bạn, hãy sử dụng get-clusters :
- kubectl config get-clusters 
OutputNAME do-nyc1-sammy Để thêm một cụm vào cấu hình của bạn, hãy sử dụng lệnh con set-cluster :
- kubectl config set-cluster new_cluster --server=server_address --certificate-authority=path_to_certificate_authority 
Để xóa một cụm khỏi cấu hình của bạn, hãy sử dụng delete-cluster :
 Lưu ý: Thao tác này chỉ xóa cụm khỏi cấu hình của bạn và không xóa cụm Kubernetes thực.
- kubectl config delete-cluster 
Sửa đổi user
 Bạn có thể thực hiện các thao tác tương tự cho  user  bằng cách sử dụng set-credentials :
- kubectl config set-credentials username --client-certificate=/path/to/cert/file --client-key=/path/to/key/file 
Để xóa  user  khỏi cấu hình của bạn, bạn có thể chạy unset :
- kubectl config unset users.username 
Bối cảnh
 Một ngữ cảnh trong Kubernetes là một đối tượng chứa một tập hợp các tham số truy cập cho cụm của bạn. Nó bao gồm một cluster , namespace và bộ ba user . Các khung cảnh cho phép bạn nhanh chóng chuyển đổi giữa các  group  cấu hình cụm khác nhau.
 Để xem ngữ cảnh hiện tại của bạn, bạn có thể sử dụng current-context :
- kubectl config current-context 
Outputdo-nyc1-sammy Để xem danh sách tất cả các ngữ cảnh đã  cấu hình , hãy chạy get-contexts :
- kubectl config get-contexts 
OutputCURRENT   NAME            CLUSTER         AUTHINFO              NAMESPACE *         do-nyc1-sammy   do-nyc1-sammy   do-nyc1-sammy-admin Để đặt bối cảnh, hãy sử dụng set-context :
- kubectl config set-context context_name --cluster=cluster_name --user=user_name --namespace=namespace 
Bạn có thể chuyển đổi giữa các ngữ cảnh với ngữ cảnh use-context :
- kubectl config use-context context_name 
OutputSwitched to context "do-nyc1-sammy" Và bạn có thể xóa ngữ cảnh với delete-context :
- kubectl config delete-context context_name 
Sử dụng Không gian tên
 Không gian tên trong Kubernetes là một sự trừu tượng cho phép bạn chia nhỏ cụm  của bạn  thành nhiều cụm ảo . Bằng cách sử dụng Không gian tên, bạn có thể phân chia tài nguyên cụm giữa nhiều  group  và phạm vi đối tượng một cách thích hợp. Ví dụ, bạn có thể có một prod Namespace cho  dung lượng  công việc production , và một dev Namespace cho sự phát triển và thử nghiệm  dung lượng  công việc.
 Để tìm nạp và in danh sách tất cả các Không gian tên trong cụm của bạn, hãy sử dụng get namespace :
- kubectl get namespace 
OutputNAME              STATUS   AGE default           Active   2d21h kube-node-lease   Active   2d21h kube-public       Active   2d21h kube-system       Active   2d21h Để đặt Không gian tên cho ngữ cảnh hiện tại của bạn, hãy sử dụng set-context --current :
- kubectl config set-context --current --namespace=namespace_name 
Để tạo không gian tên, hãy sử dụng create namespace :
- kubectl create namespace namespace_name 
Outputnamespace/sammy created Tương tự, để xóa không gian tên, hãy sử dụng delete namespace :
 Cảnh báo: Xóa Không gian tên sẽ xóa mọi thứ trong Không gian tên, bao gồm cả việc đang chạy Triển khai,  Group  và  dung lượng  công việc khác. Chỉ chạy lệnh này nếu bạn chắc chắn rằng bạn muốn giết bất kỳ thứ gì đang chạy trong Không gian tên hoặc nếu bạn đang xóa Không gian tên trống.
- kubectl delete namespace namespace_name 
Để lấy tất cả Pods trong một Namespace nhất định hoặc để thực hiện các hoạt động khác về tài nguyên trong một Namespace đưa ra, hãy chắc chắn để bao gồm các --namespace cờ:
- kubectl get pods --namespace=namespace_name 
Quản lý tài nguyên Kubernetes
Cú pháp chung
Cú pháp chung cho hầu hết các lệnh quản lý kubectl là:
- kubectl command type name flags 
Ở đâu
-  commandlà một thao tác bạn muốn thực hiện, nhưcreate
-  typelàtypetài nguyên Kubernetes, nhưdeployment
-  namelànamecủa tài nguyên, nhưapp_frontend
-  flagslà bất kỳ cờ tùy chọn nào bạn muốn đưa vào
 Ví dụ: lệnh sau truy xuất thông tin về Triển khai có tên app_frontend :
- kubectl get deployment app_frontend 
Quản lý khai báo và kubectl apply
Cách tiếp cận được đề xuất để quản lý dung lượng công việc trên Kubernetes là dựa vào thiết kế khai báo của cụm càng nhiều càng tốt. Điều này nghĩa là thay vì chạy một loạt lệnh để tạo, cập nhật, xóa và khởi động lại Pods đang chạy, bạn nên xác định dung lượng công việc, dịch vụ và hệ thống bạn muốn chạy trong file kê khai YAML và cung cấp các file này cho Kubernetes, sẽ xử lý phần còn lại.
 Trong thực tế, điều này  nghĩa là  sử kubectl apply lệnh kubectl apply , lệnh này áp dụng một cấu hình cụ thể cho một tài nguyên nhất định. Nếu tài nguyên đích không tồn tại, thì Kubernetes sẽ tạo tài nguyên. Nếu tài nguyên đã tồn tại, Kubernetes sẽ lưu bản sửa đổi hiện tại và cập nhật tài nguyên theo cấu hình mới. Cách tiếp cận khai báo này tồn tại trái ngược với cách tiếp cận bắt buộc chạy kubectl create , kubectl edit và kubectl scale set các lệnh để quản lý tài nguyên. Để tìm hiểu thêm về các cách quản lý tài nguyên Kubernetes khác nhau, hãy tham khảo Quản lý đối tượng Kubernetes từ tài liệu Kubernetes.
Triển khai
 Ví dụ: để triển khai Nginx Deployment mẫu cho cụm của bạn, hãy sử dụng apply và cung cấp đường dẫn đến file  kê nginx-deployment.yaml :
- kubectl apply -f nginx-deployment.yaml 
Outputdeployment.apps/nginx-deployment created Cờ -f được sử dụng để chỉ định tên file  hoặc URL chứa cấu hình hợp lệ. Nếu bạn muốn apply tất cả các file  kê khai từ một folder , bạn có thể sử dụng cờ -k :
- kubectl apply -k manifests_dir 
Bạn có thể theo dõi trạng thái phát hành bằng rollout status :
- kubectl rollout status deployment/nginx-deployment 
OutputWaiting for deployment "nginx-deployment" rollout to finish: 1 of 2 updated replicas are available... deployment "nginx-deployment" successfully rolled out Một thay thế cho rollout status là lệnh kubectl get , cùng với cờ -w (watch):
- kubectl get deployment -w 
OutputNAME               READY   UP-TO-DATE   AVAILABLE   AGE nginx-deployment   0/2     2            0           3s nginx-deployment   1/2     2            1           3s nginx-deployment   2/2     2            2           3s Sử dụng tính năng rollout pause và rollout resume , bạn có thể tạm dừng và tiếp tục giới thiệu Triển khai:
- kubectl rollout pause deployment/nginx-deployment 
Outputdeployment.extensions/nginx-deployment paused - kubectl rollout resume deployment/nginx-deployment 
Outputdeployment.extensions/nginx-deployment resumed Sửa đổi triển khai đang chạy
 Nếu bạn muốn sửa đổi Triển khai đang chạy, bạn có thể  áp dụng các thay đổi  đối với file  kê khai của nó và sau đó chạy lại kubectl apply để áp dụng bản cập nhật. Ví dụ:  ta  sẽ sửa đổi file  nginx-deployment.yaml để thay đổi số lượng bản sao từ 2 thành 3 :
. . . spec:   replicas: 3   selector:     matchLabels:       app: nginx . . . Lệnh kubectl diff cho phép bạn thấy sự khác biệt giữa các tài nguyên hiện đang chạy và các thay đổi được đề xuất trong file  cấu hình được cung cấp:
- kubectl diff -f nginx-deployment.yaml 
Bây giờ cho phép Kubernetes thực hiện cập nhật bằng cách sử apply :
- kubectl apply -f nginx-deployment.yaml 
Chạy một get deployment khác sẽ xác nhận việc thêm một bản sao thứ ba.
 Nếu bạn chạy lại apply mà không sửa đổi file  kê khai, Kubernetes sẽ phát hiện ra rằng không có thay đổi nào được thực hiện và sẽ không thực hiện bất kỳ hành động nào.
 Sử dụng rollout history bạn có thể thấy danh sách các bản sửa đổi trước đó của Triển khai:
- kubectl rollout history deployment/nginx-deployment 
Outputdeployment.extensions/nginx-deployment REVISION  CHANGE-CAUSE 1         <none>  Với việc rollout undo , bạn có thể hoàn nguyên một Triển khai về bất kỳ bản sửa đổi nào trước đó của nó:
- kubectl rollout undo deployment/nginx-deployment --to-revision=1 
Xóa triển khai
 Để xóa một Triển khai đang chạy, hãy sử dụng kubectl delete :
- kubectl delete -f nginx-deployment.yaml 
Outputdeployment.apps "nginx-deployment" deleted Quản lý mệnh lệnh
Bạn cũng có thể sử dụng một tập hợp các lệnh bắt buộc để trực tiếp thao tác và quản lý các tài nguyên Kubernetes.
Tạo triển khai
 Sử dụng create để tạo một đối tượng từ file , URL hoặc STDIN.  Lưu ý  không giống như apply , nếu một đối tượng có cùng tên đã tồn tại, hoạt động sẽ không thành công. Cờ --dry-run cho phép bạn xem trước kết quả của thao tác mà không thực sự thực hiện nó:
- kubectl create -f nginx-deployment.yaml --dry-run 
Outputdeployment.apps/nginx-deployment created (dry-run) Bây giờ ta có thể tạo đối tượng:
- kubectl create -f nginx-deployment.yaml 
Outputdeployment.apps/nginx-deployment created Sửa đổi triển khai đang chạy
 Sử dụng scale để chia tỷ lệ số lượng bản sao cho Triển khai từ 2 đến 4:
- kubectl scale --replicas=4 deployment/nginx-deployment 
Outputdeployment.extensions/nginx-deployment scaled Bạn có thể chỉnh sửa bất kỳ đối tượng nào tại chỗ bằng cách sử dụng kubectl edit . Thao tác này sẽ mở file  kê khai của đối tượng trong  editor  mặc định của bạn:
- kubectl edit deployment/nginx-deployment 
Bạn sẽ thấy file kê khai sau trong editor của bạn :
# Please edit the object below. Lines beginning with a '#' will be ignored, # and an empty file will abort the edit. If an error occurs while saving this file will be # reopened with the relevant failures. # apiVersion: extensions/v1beta1 kind: Deployment . . .  spec:   progressDeadlineSeconds: 600   replicas: 4   revisionHistoryLimit: 10   selector:     matchLabels: . . . Thay đổi giá trị replicas từ 4 thành 2 , sau đó  lưu file  .
 Bây giờ chạy một get để kiểm tra những thay đổi:
- kubectl get deployment/nginx-deployment 
OutputNAME               READY   UP-TO-DATE   AVAILABLE   AGE nginx-deployment   2/2     2            2           6m40s Ta đã tăng quy mô Triển khai thành công xuống còn 2 bản sao ngay lập tức. Bạn có thể cập nhật hầu hết các trường của đối tượng Kubernetes theo cách tương tự.
 Một lệnh hữu ích khác để sửa đổi các đối tượng tại chỗ là kubectl patch . Sử dụng patch , bạn có thể cập nhật nhanh các trường của đối tượng mà không cần phải mở  editor   của bạn . patch cũng cho phép cập nhật phức tạp hơn với các chiến lược hợp nhất và vá khác nhau. Để tìm hiểu thêm về những điều này, hãy tham khảo Cập nhật đối tượng API tại chỗ bằng cách sử dụng bản vá kubectl .
 Lệnh sau sẽ vá đối tượng nginx-deployment để cập nhật trường replicas từ 2 lên 4 ; deploy là viết tắt của đối tượng deployment .
- kubectl patch deploy nginx-deployment -p '{"spec": {"replicas": 4}}' 
Outputdeployment.extensions/nginx-deployment patched Bây giờ ta có thể kiểm tra các thay đổi:
- kubectl get deployment/nginx-deployment 
OutputNAME               READY   UP-TO-DATE   AVAILABLE   AGE nginx-deployment   4/4     4            4           18m Bạn cũng có thể tạo một Triển khai theo thứ bậc bằng cách sử dụng lệnh run . run sẽ tạo Triển khai bằng hình ảnh được cung cấp dưới dạng tham số:
- kubectl run nginx-deployment --image=nginx --port=80 --replicas=2 
Lệnh expose cho phép bạn nhanh chóng hiển thị Triển khai đang chạy với Dịch vụ Kubernetes, cho phép các kết nối từ bên ngoài cụm Kubernetes của bạn:
- kubectl expose deploy nginx-deployment --type=LoadBalancer --port=80 --name=nginx-svc 
Outputservice/nginx-svc exposed Ở đây,  ta  đã giới thiệu Triển khai nginx-deployment deploy như một Dịch vụ LoadBalancer, mở cổng 80 cho lưu lượng truy cập bên ngoài và hướng nó đến cổng container 80 .  Ta  đặt tên dịch vụ là nginx-svc . Sử dụng loại Dịch vụ LoadBalancer, bộ cân bằng tải trên  cloud  được Kubernetes tự động cung cấp và  cấu hình . Để lấy địa chỉ IP bên ngoài của Dịch vụ, hãy sử dụng get :
- kubectl get svc nginx-svc 
OutputNAME        TYPE           CLUSTER-IP      EXTERNAL-IP      PORT(S)        AGE nginx-svc   LoadBalancer   10.245.26.242   203.0.113.0   80:30153/TCP   22m Bạn có thể truy cập các containers  Nginx đang chạy bằng cách  chuyển  đến EXTERNAL-IP trong trình duyệt web  của bạn .
Kiểm tra dung lượng công việc và gỡ lỗi
Có một số lệnh bạn có thể sử dụng để biết thêm thông tin về dung lượng công việc đang chạy trong cụm của bạn.
Kiểm tra tài nguyên Kubernetes
 kubectl get tìm nạp một tài nguyên Kubernetes nhất định và hiển thị một số thông tin cơ bản liên quan đến nó:
- kubectl get deployment -o wide 
OutputNAME               READY   UP-TO-DATE   AVAILABLE   AGE   CONTAINERS   IMAGES   SELECTOR nginx-deployment   4/4     4            4           29m   nginx        nginx    app=nginx Vì  ta  không cung cấp tên Triển khai hoặc Không gian tên nên kubectl tìm nạp tất cả Triển khai trong Không gian tên hiện tại. Cờ -o cung cấp thông tin bổ sung như CONTAINERS và IMAGES .
 Ngoài việc get , bạn có thể sử dụng describe để tìm nạp mô tả chi tiết về tài nguyên và các tài nguyên liên quan:
- kubectl describe deploy nginx-deployment 
OutputName:                   nginx-deployment Namespace:              default CreationTimestamp:      Wed, 11 Sep 2019 12:53:42 -0400 Labels:                 run=nginx-deployment Annotations:            deployment.kubernetes.io/revision: 1 Selector:               run=nginx-deployment . . .  Tập hợp thông tin được trình bày sẽ thay đổi tùy theo loại tài nguyên. Bạn cũng có thể sử dụng lệnh này mà không cần chỉ định tên tài nguyên, trong trường hợp đó thông tin sẽ được cung cấp cho tất cả các tài nguyên thuộc loại đó trong Không gian tên hiện tại.
 explain cho phép bạn nhanh chóng kéo các trường có thể  cấu hình  cho một loại tài nguyên nhất định:
- kubectl explain deployment.spec 
Bằng cách thêm các trường bổ sung, bạn có thể đi sâu hơn vào phân cấp trường:
- kubectl explain deployment.spec.template.spec 
Có được quyền truy cập Shell vào containers
 Để có được quyền truy cập  shell  vào một containers  đang chạy, hãy sử dụng exec . Trước tiên, hãy tìm Pod có chứa containers  đang chạy mà bạn muốn truy cập:
- kubectl get pod 
Outputnginx-deployment-8859878f8-7gfw9   1/1     Running   0          109m nginx-deployment-8859878f8-z7f9q   1/1     Running   0          109m Hãy exec vào Pod đầu tiên. Kể từ Pod này chỉ có một container,  ta  không cần phải sử dụng -c cờ để xác định các  container   ta  muốn exec vào.
- kubectl exec -i -t nginx-deployment-8859878f8-7gfw9 -- /bin/bash 
Outputroot@nginx-deployment-8859878f8-7gfw9:/#  Đến đây bạn  có quyền truy cập shell vào containers  Nginx. Cờ -i chuyển STDIN đến containers  và -t cung cấp cho bạn một TTY tương tác. -- Dấu gạch ngang đóng  role  như một dấu phân cách cho lệnh kubectl và lệnh bạn muốn chạy bên trong containers . Trong trường hợp này,  ta  đang chạy /bin/bash .
 Để chạy các lệnh bên trong containers  mà không mở một  shell  đầy đủ, hãy bỏ qua cờ -i và -t và thay thế lệnh bạn muốn chạy thay vì /bin/bash :
- kubectl exec nginx-deployment-8859878f8-7gfw9 ls 
Outputbin boot dev etc home lib lib64 media . . . Tìm nạp log
 Một lệnh hữu ích khác là logs , in log  cho  Group  và containers , bao gồm cả các containers  đã kết thúc.
 Để truyền log  đến  kết quả   terminal  của bạn, bạn có thể sử dụng cờ -f :
- kubectl logs -f nginx-deployment-8859878f8-7gfw9 
Output10.244.2.1 - - [12/Sep/2019:17:21:33 +0000] "GET / HTTP/1.1" 200 612 "-" "203.0.113.0" "-" 2019/09/16 17:21:34 [error] 6#6: *1 open() "/usr/share/nginx/html/favicon.ico" failed (2: No such file or directory), client: 10.244.2.1, server: localhost, request: "GET /favicon.ico HTTP/1.1", host: "203.0.113.0", referrer: "http://203.0.113.0" . . . Lệnh này sẽ tiếp tục chạy trong terminal  của bạn cho đến khi bị gián đoạn bằng CTRL+C Bạn có thể bỏ qua cờ -f nếu bạn muốn in  kết quả  log  và thoát ngay lập tức.
 Bạn cũng có thể sử dụng cờ -p để tìm nạp log  cho containers  đã kết thúc. Khi tùy chọn này được sử dụng trong Pod có phiên logs chứa đang chạy trước đó, logs sẽ in  kết quả  từ containers  đã kết thúc:
- kubectl logs -p nginx-deployment-8859878f8-7gfw9 
Cờ -c cho phép bạn chỉ định containers  mà bạn muốn tìm nạp log , nếu Pod có nhiều containers . Bạn có thể sử dụng cờ --all-containers=true để tìm nạp log  từ tất cả các containers  trong Pod.
Chuyển tiếp cổng và ủy quyền
 Để có được quyền truy cập mạng vào Pod, bạn có thể sử dụng port-forward :
- sudo kubectl port-forward pod/nginx-deployment-8859878f8-7gfw9 80:80 
OutputForwarding from 127.0.0.1:80 -> 80 Forwarding from [::1]:80 -> 80 Trong trường hợp này,  ta  sử dụng sudo vì cổng local  80 là cổng được bảo vệ. Đối với hầu hết các cổng khác, bạn có thể bỏ qua sudo và chạy lệnh kubectl  với quyền  là  user  hệ thống  của bạn .
 Ở đây  ta  chuyển tiếp cổng local  80 (trước dấu hai chấm) đến cổng  container  của Pod 80 (sau dấu hai chấm).
 Bạn cũng có thể sử dụng deploy/nginx-deployment làm loại tài nguyên và tên để chuyển tiếp. Nếu bạn làm điều này, cổng local  sẽ được chuyển tiếp đến Pod được chọn bởi Triển khai.
 Lệnh proxy  được dùng  để truy cập local   server  Kubernetes API:
- kubectl proxy --port=8080 
OutputStarting to serve on 127.0.0.1:8080 Trong một  shell  khác, sử dụng curl để khám phá API:
curl http://localhost:8080/api/ Output{   "kind": "APIVersions",   "versions": [     "v1"   ],   "serverAddressByClientCIDRs": [     {       "clientCIDR": "0.0.0.0/0",       "serverAddress": "203.0.113.0:443"     }   ] Đóng proxy bằng cách nhấn CTRL-C .
Kết luận
Hướng dẫn này bao gồm một số lệnh kubectl phổ biến hơn mà bạn có thể sử dụng khi quản lý cụm Kubernetes và dung lượng công việc bạn đã triển khai cho nó.
Bạn có thể tìm hiểu thêm về kubectl bằng cách tham khảo tài liệu tham khảo chính thức của Kubernetes.
Có nhiều lệnh và biến thể khác mà bạn có thể thấy hữu ích như một phần công việc của bạn với kubectl. Để tìm hiểu thêm về tất cả các tùy chọn có sẵn của bạn, bạn có thể chạy:
kubectl --help Các tin liên quan
 

