Thứ tư, 18/09/2019 | 00:00 GMT+7

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:

nginx-deploy.yaml
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
Output
annotate 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
Output
delete 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:

Output
Kubernetes 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
Output
apiVersion: 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
Output
NAME 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
Output
do-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
Output
CURRENT 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
Output
Switched 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
Output
NAME 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
Output
namespace/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

  • command là một thao tác bạn muốn thực hiện, như create
  • typetype tài nguyên Kubernetes, như deployment
  • namename của tài nguyên, như app_frontend
  • flags là 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 editkubectl 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
Output
deployment.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
Output
Waiting 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
Output
NAME 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 pauserollout 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
Output
deployment.extensions/nginx-deployment paused
  • kubectl rollout resume deployment/nginx-deployment
Output
deployment.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 :

nginx-deploy.yaml
. . . 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
Output
deployment.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
Output
deployment.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
Output
deployment.apps/nginx-deployment created (dry-run)

Bây giờ ta có thể tạo đối tượng:

  • kubectl create -f nginx-deployment.yaml
Output
deployment.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
Output
deployment.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 :

triển khai nginx
# 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
Output
NAME 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}}'
Output
deployment.extensions/nginx-deployment patched

Bây giờ ta có thể kiểm tra các thay đổi:

  • kubectl get deployment/nginx-deployment
Output
NAME 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
Output
service/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
Output
NAME 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
Output
NAME 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ư CONTAINERSIMAGES .

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
Output
Name: 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
Output
nginx-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
Output
root@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-t và thay thế lệnh bạn muốn chạy thay vì /bin/bash :

  • kubectl exec nginx-deployment-8859878f8-7gfw9 ls
Output
bin 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
Output
10.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
Output
Forwarding 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
Output
Starting 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 

Tags:

Các tin liên quan