溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Kubernetes管理員必備的kubectl命令有哪些

發布時間:2021-11-11 15:23:58 來源:億速云 閱讀:155 作者:小新 欄目:云計算

這篇文章給大家分享的是有關Kubernetes管理員必備的kubectl命令有哪些的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

Kubernetes是當今基礎架構的主導技術,這意味著系統管理員需要熟悉其管理。多年來,筆者一直堅持每天管理Kubernetes集群,并且總結了一些技巧,希望可以幫助其他人簡化他們的管理。

筆者在這里分享9個有關kubectl的命令,主要說明筆者每天用來管理Kubernetes集群的正常運行的命令。筆者將它們分為幾部分,以幫助讀者確定是否應將它們用于某些任務。筆者還以長號和簡寫形式包含了一些標志,以幫助讀者更快地使用它們。

1. 使用Kubectl獲?。╣et)、創建(create)、編輯(edit)和刪除(delete)資源

從命令行實用程序開始,最安全的地方是提問(讀操作)而不是發出命令(寫操作)。有用的get命令可以使您滾動起來。

命令1:Kubectl get

使用get可以獲取集群中當前擁有的資源列表。您可以獲得的資源類型包括:

?Namespace

?Pod

?Node

?Deployment

?Service

?ReplicaSets

每個選項都提供有關群集中可用資源的詳細信息。例如,這是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            Active8ddefaultActive9dkube-node-lease   Active9dkube-public       Active9dkube-system       Active9d

每個get命令都可以使用–namespace或-n標志集中于給定的命名空間。當您想要查看kube-system中的Pod時,筆者會特別提供幫助,這是運行Kubernetes本身所需的服務。

$ kubectl get pods -n kube-systemNAME                               READY   STATUS    RESTARTS   AGEcoredns-66bff467f8-mjptx1/1Running29dcoredns-66bff467f8-t2xcz1/1Running29detcd-minikube1/1Running19dkube-apiserver-minikube1/1Running19dkube-controller-manager-minikube1/1Running29dkube-proxy-rpc9d1/1Running19dkube-scheduler-minikube1/1Running29dstorage-provisioner1/1Running19d

命令2:Kubectl create

使用kubectl,您幾乎可以在集群中創建任何類型的資源。其中一些資源確實需要配置文件和命名空間來設置資源以及名稱。您可以創建的資源包括:

?service

?cronjob

?deployment

?job

?namespace (ns)

因此,創建create namespace需要另一個參數來命名命名空間。

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

我們也可以使用cron命令來連續創建運行作業,就像許多Linux朋友會熟悉的那樣。在這里,我們使用cronjob命令每五秒鐘回顯一次“ hello”。

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

您也可以使用簡化版的命令cj而不是cronjob。

$kubectl create cj my-existing-cron --image=busybox --schedule="*/15 * * * *"--echohellocronjob.batch/my-existing-cron created

命令3:Kubectl edit

那么,當筆者們創建某些東西并想要更新時會發生什么呢?這就是kubectl edit的作用。

運行此命令時,可以編輯集群中的任何資源。它將打開您的默認文本編輯器。因此,我們將編輯現有的cronjob,我們可以運行:

$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秒一次:

Kubernetes管理員必備的kubectl命令有哪些

我們將其更改為每25秒寫入一次資源:

Kubernetes管理員必備的kubectl命令有哪些

編寫完成后,我們可以看到它已更改。

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

如果要使用其他編輯器,可以使用此KUBE_EDITOR語法添加來覆蓋它。

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

命令4:Kubectl delete

到目前為止,除了將其完全刪除之外,我們已經做了所有事情,這就是我們下一步要做的。我們剛剛編輯的cronjob是兩個cronjobs之一,因此現在我們將刪除整個資源。

$ kubectldeletecronjobmy-existing-croncronjob.batch"my-existing-cron"deleted

作為警告,切勿刪除你所不知道的所有相關信息的內容。一旦資源被刪除,就無法恢復。您將不得不重新創建它,因此在運行此命令之前請三思。

命令5:Kubectl apply

之前,筆者提到過某些命令將需要配置文件。該apply命令允許您在集群內通過文件應用配置資源。這也可以通過命令行standard in (STDIN)來完成此操作,但是建議始終是按文件進行。

筆者認為該命令有些高級,因為您需要知道如何使用群集以及要應用哪種配置文件。對于此示例,筆者曾經使用來自Helm的基于角色訪問控制(RBAC)配置用于一個服務帳戶。

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

您可以應用幾乎任何所需的配置,但是始終需要確定要應用的配置,否則可能會看到意想不到的結果。

2. 使用Kubectl對Kubernetes進行故障排除

命令6:Kubectl describe

Describe顯示您正在查看的資源的詳細信息。最常見的用例是描述一個pod或節點,以檢查事件中是否有錯誤,或者資源是否太有限而無法使用。

您可以描述的資源包括:

?Nodes

?Pods

?Services

?Deployments

?Replica sets

?Cronjobs

在此示例中,我們可以從前面的示例中describe集群中當前的cronjob。

$ kubectldescribecronjob my-cron片段:Name:                         my-cronNamespace:defaultLabels:                       Annotations:                  Schedule:                     */5* * * *ConcurrencyPolicy:AllowSuspend:FalseSuccessful Job HistoryLimit:3FailedJob HistoryLimit:1StartingDeadlineSeconds:    Selector:                     <unset>Parallelism:                  <unset>Completions:                  <unset>PodTemplate:Labels:   Containers:   my-cron:    Image:     busyboxPort:      Host Port: 

命令7:Kubectl logs

雖然describe命令提供pod內應用程序發生的事件,但logs提供了與pod相關的Kubernetes內發生的事件詳細信息。理解這一區別可以幫助您解決應用程序內部和Kubernetes內部發生的問題,因為它們都是不被允許發生的相同問題。

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

片段:

172.17.0.1- - [19/Apr/2020:16:01:15+0000]"GET / HTTP/1.1"200612"-""kube-probe/1.18""-"172.17.0.1- - [19/Apr/2020:16:01:20+0000]"GET / HTTP/1.1"200612"-""kube-probe/1.18""-"172.17.0.1- - [19/Apr/2020:16:01:25+0000]"GET / HTTP/1.1"200612"-""kube-probe/1.18""-"172.17.0.1- - [19/Apr/2020:16:01:30+0000]"GET / HTTP/1.1"200612"-""kube-probe/1.18""-"172.17.0.1- - [19/Apr/2020:16:01:35+0000]"GET / HTTP/1.1"200612"-""kube-probe/1.18""-"172.17.0.1- - [19/Apr/2020:16:01:40+0000]"GET / HTTP/1.1"200612"-""kube-probe/1.18""-"172.17.0.1- - [19/Apr/2020:16:01:45+0000]"GET / HTTP/1.1"200612"-""kube-probe/1.18""-"172.17.0.1- - [19/Apr/2020:16:01:50+0000]"GET / HTTP/1.1"200612"-""kube-probe/1.18""-"172.17.0.1- - [19/Apr/2020:16:01:55+0000]"GET / HTTP/1.1"200612"-""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"200612"-""Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:75.0) Gecko/20100101 Firefox/75.0"“-”

由于某些部署在一個pod中有多個容器,您還可以對日志使用-c<container name>,從而只在一個特定容器中查找日志。

命令8:Kubectl exec

與docker exec命令非常相似,您也可以執行到容器中以直接對應用程序進行故障排除。當Pod中的日志沒有為您提供可能要調試的問題的答案時,此功能很有用。使用exec命令時,該行的末尾必須始終提供您在pod內使用的shell。

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

命令9:Kubectl cp

該命令用于在容器之間復制文件和目錄,就像Linux cp命令一樣。它不是您每天都會使用的東西,但是它是筆者個人最喜歡的,用于在自動化失敗時在緊急情況下提取或還原備份。

這是將本地文件復制到容器的示例。語法遵循kubectl cp <filename> <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 格式:

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

感謝各位的閱讀!關于“Kubernetes管理員必備的kubectl命令有哪些”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女