日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

作者:才云 Caicloud K8sMeetup社區

新出爐的 kubectl 備忘單,可以幫助大家了解有關 Kubernetes 命令行實用程序的有用命令。

作者:Jessica Cherry

翻譯:Bach(才云)

校對:星空下的文仔(才云)、bot(才云)

kubectl 是 Kubernetes 的一個命令行管理工具,可用于 Kubernetes 上的應用部署和日常管理。本文列舉了 9 個常見的 kubectl 命令,并總結了一些使用技巧,希望可以幫助系統管理員簡化管理工作。

系統管理員不得不掌握的 9 個 kubectl 命令

 

K8sMeetup

使用 Kubectl 查詢、創建、編輯和刪除資源

對于剛開始使用命令行工具的開發者,最保險的方法是提出問題(讀取操作),而不是發出命令(寫入操作),所以從使用 get 命令開始是個不錯的選擇。

Kubectl get

使用 get 命令可以獲取當前集群中可用的資源列表,包括:

  • Namespace
  • Pod
  • Node
  • Deployment
  • Service
  • ReplicaSet

每個 get 命令都能提供集群中可用資源的詳細信息。例如 get nodes 命令就提供了 Kubernetes 的狀態和版本。

$ kubectl get nodesNAME       STATUS   ROLES    AGE   VERSIONminikube   Ready    master   9d    v1.18.0

這些命令大多數還具有簡寫版本。例如,要獲取命名空間,可以使用 kubectl get namespaces 或者 kubectl get ns 命令:

$ kubectl get nsNAME              STATUS   AGEcharts            Active   8ddefault           Active   9dkube-node-lease   Active   9dkube-public       Active   9dkube-system       Active   9d

每個 get 命令都可以使用 –namespace 或 -n 參數指定對應的命名空間。這點對于查看 kube-system 中的 Pods 會非常有用,因為這些 Pods 是 Kubernetes 自身運行所需的服務。

$ kubectl get pods -n kube-systemNAME                               READY   STATUS    RESTARTS   AGEcoreDNS-66bff467f8-mjptx           1/1     Running   2          9dcoredns-66bff467f8-t2xcz           1/1     Running   2          9detcd-minikube                      1/1     Running   1          9dkube-apiserver-minikube            1/1     Running   1          9dkube-controller-manager-minikube   1/1     Running   2          9dkube-proxy-rpc9d                   1/1     Running   1          9dkube-scheduler-minikube            1/1     Running   2          9dstorage-provisioner                1/1     Running   1          9d
Kubectl create

可以查詢資源后,下一步是創建資源。我們可以用 kubectl 在集群中創建任何類型的資源,包括:

  • Service
  • Cronjob
  • Deployment
  • Job
  • Namespace(ns)

其中,一些資源的創建需要設置配置文件、命名空間以及資源名稱。例如,創建命名空間就需要一個額外參數來指定命名空間。

$ kubectl create ns hello-therenamespace/hello-there created

linux 里可以使用 cron 創建定時運行的任務。同樣的,這里我們使用 cronjob 每五秒鐘返回一次“hello”。

???????
$ kubectl create cronjob my-cron --image=busybox --schedule="*/5 * * * *" -- echo hellocronjob.batch/my-namespaced-cron created

我們也可以使用 cronjob 的簡寫版本 cj。

???????
$ kubectl create cj my-existing-cron --image=busybox --schedule="*/15 * * * *" -- echo hellocronjob.batch/my-existing-cron created
Kubectl edit

當我們創建好資源后,如果需要修改,該怎么辦?這時候就需要 kubectl edit 命令了。

我們可以用這個命令編輯集群中的任何資源。它會打開默認文本編輯器。如果我們要編輯現有的 cron job,則可以執行:

 
$ kubectl edit cronjob/my-existing-cron

我們要編輯的配置如下:

???????
# 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: batch/v1beta1kind: CronJobmetadata:  creationTimestamp: "2020-04-19T16:06:06Z"  managedFields:  - apiVersion: batch/v1beta1    fieldsType: FieldsV1    fieldsV1:      f:spec:        f:concurrencyPolicy: {}        f:failedJobsHistoryLimit: {}        f:jobTemplate:          f:metadata:            f:name: {}          f:spec:            f:template:              f:spec:                f:containers:                  k:{"name":"my-new-cron"}:                    .: {}                    f:command: {}                    f:image: {}                    f:imagePullPolicy: {}

原本調度間隔設置為 15 秒:

系統管理員不得不掌握的 9 個 kubectl 命令

 

我們將其更改為每 25 秒:

系統管理員不得不掌握的 9 個 kubectl 命令

 

編寫完成后,可以看到修改已生效。

???????
$ kubectl edit cronjob/my-existing-croncronjob.batch/my-existing-cron edited

另外,我們可以通過 KUBE_EDITOR 命令來使用其他編輯器。

 
$ KUBE_EDITOR="nano" kubectl edit cronjob/my-existing-cron
Kubectl delete

學會了以上命令后,下面我們將進行刪除操作。剛剛編輯的 cronjob 是兩個 cronjobs 之一,現在我們刪除整個資源。

???????
$ kubectl delete cronjob my-existing-croncronjob.batch "my-existing-cron" deleted

需要注意的是,如果不知道資源是否有關聯信息,最好不要刪除。因為刪除后無法恢復,只能重新創建。

Kubectl Apply

上文提到,某些命令需要配置文件,而 apply 命令可以在集群內調整配置文件應用于資源。雖然也可以通過命令行 standard in (STNIN) 來完成,但 apply 命令更好一些,因為它可以讓你知道如何使用集群,以及要應用哪種配置文件。作為示例,下文會將 Helm 的基于角色的訪問控制(RBAC)配置用于服務帳戶。

???????
$ kubectl apply -f commands.yamlserviceaccount/tiller createdclusterrolebinding.rbac.authorization.k8s.io/tiller created

我們可以應用幾乎任何配置,但是一定要明確所要應用的配置,否則可能會引發意料之外的后果。

K8sMeetup

使用 Kubectl 對 Kubernetes 進行故障排除

Kubectl describe

describe 命令可以查看資源的詳細信息。比較常見的用法是查看一個 Pod 或節點信息,以檢查是否有異常、資源是否耗盡。

該命令可以查看的資源包括:

  • Nodes
  • Pods
  • Services
  • Deployments
  • Replica sets
  • Cronjobs

舉個例子,我們用 describe 命令查看上文集群中 cronjob 的詳細信息。

 
$ kubectl describe cronjob my-cron

以下是部分信息:

???????
Name:                         my-cronNamespace:                    defaultLabels:                       <none>Annotations:                  <none>Schedule:                     */5 * * * *Concurrency Policy:           AllowSuspend:                      FalseSuccessful Job History Limit: 3Failed Job History Limit:     1Starting Deadline Seconds:    <unset>Selector:                     <unset>Parallelism:                  <unset>Completions:                  <unset>Pod Template:  Labels: <none>  Containers:   my-cron:    Image:     busybox    Port:      <none>    Host Port: <none>
Kubectl logs

雖然 describe 命令可以讓你知道 Pod 內部應用程序發生的事,但 logs 命令可以提供 Kubernetes 中 Pod 的更多詳細信息。了解這種區別可以幫助開發者更好地對應用程序內部以及 Kubernetes 內部發生的問題,并進行故障排除,這二者往往并不相同。

 
$ kubectl logs cherry-chart-88d49478c-dmcfv -n charts

以上命令的部分輸出結果如下:

??????
172.17.0.1 - - [19/Apr/2020:16:01:15 +0000] "GET / HTTP/1.1" 200 612 "-" "kube-probe/1.18" "-"172.17.0.1 - - [19/Apr/2020:16:01:20 +0000] "GET / HTTP/1.1" 200 612 "-" "kube-probe/1.18" "-"172.17.0.1 - - [19/Apr/2020:16:01:25 +0000] "GET / HTTP/1.1" 200 612 "-" "kube-probe/1.18" "-"172.17.0.1 - - [19/Apr/2020:16:01:30 +0000] "GET / HTTP/1.1" 200 612 "-" "kube-probe/1.18" "-"172.17.0.1 - - [19/Apr/2020:16:01:35 +0000] "GET / HTTP/1.1" 200 612 "-" "kube-probe/1.18" "-"172.17.0.1 - - [19/Apr/2020:16:01:40 +0000] "GET / HTTP/1.1" 200 612 "-" "kube-probe/1.18" "-"172.17.0.1 - - [19/Apr/2020:16:01:45 +0000] "GET / HTTP/1.1" 200 612 "-" "kube-probe/1.18" "-"172.17.0.1 - - [19/Apr/2020:16:01:50 +0000] "GET / HTTP/1.1" 200 612 "-" "kube-probe/1.18" "-"172.17.0.1 - - [19/Apr/2020:16:01:55 +0000] "GET / HTTP/1.1" 200 612 "-" "kube-probe/1.18" "-"

grep 命令可以過濾無關信息或查看特定事件。例如,下面的 kube-probe 可能是無關信息,我們用 grep 命令對其進行過濾。

??????
$ kubectl logs cherry-chart-88d49478c-dmcfv -n charts | grep -vie kube-probe127.0.0.1 - - [10/Apr /2020:23:01:55 +0000] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:75.0) Gecko/20100101 Firefox/75.0" “-”

在有些部署中,存在一個 Pod 有多個容器的情況,因此我們可以在 logs 命令中使用 -c <容器名稱>,以查找指定容器的日志。

Kubectl exec

與 Docker exec 命令相似,exec 命令也可以在容器中直接對應用程序進行故障排除。尤其當 Pod 的日志無法定位問題時, 它會特別好用。另外要注意的是,使用 exec 命令時,必須要以 Pod 內使用的 shell 作為命令的最后一個參數。

???????
$ kubectl exec -it cherry-chart-88d49478c-dmcfv -n charts -- /bin/bashroot@cherry-chart-88d49478c-dmcfv:/#
Kubectl cp

Kubectl cp 命令與 Linux cp 命令類似,用于容器之間復制文件和目錄。另外,該命令還能在自動化失敗等緊急情況下進行恢復備份。

以下是將本地文件拷貝到容器的示例。命令格式為:kubectl cp <
namespace/podname:/path/tofile>。

????
$ kubectl cp commands_copy.txt charts/cherry-chart-88d49478c-dmcfv:commands.txt$ kubectl exec -it cherry-chart-88d49478c-dmcfv -n charts -- /bin/bashroot@cherry-chart-88d49478c-dmcfv:/# lsbin  boot  commands.txt  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

下面是將容器內的文件拷貝到本地計算機上的示例。命令格式為:kubectl cp <
namespace/podname:/path/tofile>。

??????
$ kubectl cp charts/cherry-chart-88d49478c-dmcfv:commands.txt commands_copy.txt$ lscommands_copy.txt

以上就是今天 K8sMeetup 中國社區推薦的內容,祝大家周末愉快!

分享到:
標簽:命令 kubectl
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定