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
-
command
là một thao tác bạn muốn thực hiện, nhưcreate
-
type
làtype
tài nguyên Kubernetes, nhưdeployment
-
name
làname
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 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