日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

kubectl logs -f tail 显示100_系统管理员应该知道的9个kubectl命令

發布時間:2024/9/27 windows 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 kubectl logs -f tail 显示100_系统管理员应该知道的9个kubectl命令 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

kubectl是Kubernetes的一個命令行管理工具,可用于Kubernetes上的應用部署和日常管理。本文列舉了9個常見的kubectl命令,并對每個命令進行了簡單扼要的介紹,供大家參考。同時,大家也可以通過文中連接獲取更詳細的介紹。如今,Kubernetes已成為IT基礎設施管理界的老大,這也意味著系統管理員需要對其管理非常熟悉。多年以來,我每天都在管理Kubernetes集群,所以我總結了一些可以幫助管理員簡化管理工作的技巧,供大家參考。我創建了一個備忘清單,用于分享kubectl相關的主題,以及我日常使用的kubectl管理命令。備忘清單分為多個小節,方便你判斷其是否適合于你的工作。我還在清單引入了一些標簽,方便你快速的查閱和使用。通過kubectl查詢,創建,編輯和刪除資源

熟悉一個命令行工具最安全的方式是提出問題(讀操作),而非發出命令(寫操作)。所以使用查詢相關的命令是一個很好的開始。Kubectl get?使用get命令可以列出當前集群上可用的資源清單。你可以通過get獲取到的資源包括:
  • Namespace

  • Pod

  • Node

  • Deployment

  • Service

  • Replicasets

每個get命令都可以提供集群中可用資源的詳細信息。比如,以下是get nodes命令的輸出,列出了Kubernetes的版本和狀態。

$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
minikube Ready master 9d v1.18.0

上面的命令,大部分都有簡寫版本。比如,你可以通過kubectl get namespaces或者kubectl get ns查詢namespaces信息(可查看備忘錄獲取完整列表)。

$ kubectl get ns
NAME STATUS AGE
charts Active 8d
default Active 9d
kube-node-lease Active 9d
kube-public Active 9d
kube-system Active 9d

每個get命令還可以通過-namespace或者-n參數指定對應的命名空間。當你想查看kube-system中的pods時將會非常有用,這些pods是Kubernetes自身運行時所必須的服務。

$ kubectl get pods -n kube-system
NAME READY STATUS RESTARTS AGE
coredns-66bff467f8-mjptx 1/1 Running 2 9d
coredns-66bff467f8-t2xcz 1/1 Running 2 9d
etcd-minikube 1/1 Running 1 9d
kube-apiserver-minikube 1/1 Running 1 9d
kube-controller-manager-minikube 1/1 Running 2 9d
kube-proxy-rpc9d 1/1 Running 1 9d
kube-scheduler-minikube 1/1 Running 2 9d
storage-provisioner 1/1 Running 1 9d

Kubectl create現在你已經查詢到了一些資源,接下來讓我創建資源。通過kubectl,你幾乎可以創建Kubernetes集群中任何類型的資源。一些資源在創建時,需要指定配置文件,namespace以及資源名稱。你可以創建的資源包括:
  • service

  • cronjob

  • deployment

  • job

  • namespace (ns)

例如,create namespace需要一個額外的參數指定namespace的名稱。

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

我們也可以通過cron創建連續運行的任務,很多使用Linux的朋友可能對此比較熟悉。下面我使用cronjob每隔5秒鐘返回一個"hello"。

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

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

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

Kubectl edit那么當我們創建資源后又想修改怎么辦呢?這個時候就需要kubectl edit了。當你執行這個命令時,你可以編輯集群中的任何資源,它將打開你的默認文本編輯器。而當我想編輯已經存在的cron任務時,則可以執行:

$ 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/v1beta1
kind: CronJob
metadata:
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秒:我們可以修改為25秒并保存退出:

之后,我們可以查看修改已經生效。

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

我們還可以通過以下方式使用另外的編輯器:

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

Kubectl delete至此,我們已經做了除刪除外的所有事情,下一步我們將進行刪除。我們前面編輯的cronjob是兩個cronjobs之一,下面我們將刪除其相關的所有資源。

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

需要提醒的是,不要刪除你不完全了解的任何內容。因為,資源刪除后將無法恢復,只能重新創建,因此,在執行此命令前請三思。Kubectl apply我在前面曾提到,有些命令需要配置文件,apply命令允許你通過配置文件將配置應用于你的資源。這些配置也可以通過標準輸入在命令行輸入,但是建議使用文件。我覺得這是一個進階命令,因為你需要知道如何使用你的集群,以及什么樣的配置文件可以應用于集群。舉個例子,我將Helm的基于角色的訪問控制(RBAC)配置用于服務賬戶。

$ kubectl apply -f commands.yaml
serviceaccount/tiller created
clusterrolebinding.rbac.authorization.k8s.io/tiller created

你可以應用幾乎任何所需的配置,但是你自己必須清楚這些配置,否則可能得到意想不到的結果。使用kubectl對Kubernetes進行故障排除

Describe會顯示你正在查看的資源的詳情,最常見的用例是查看一個Pod或節點, 以檢查是否有異常事件,或者資源是否即將耗盡。可以查看詳情的資源包括:
  • Nodes

  • Pods

  • Services

  • Deployments

  • Replica sets

  • Cronjobs

例如,我們可以查看前面示例中cronjob的詳情。

$ kubectl describe cronjob my-cron

以下是輸出結果的一部分。

Name: my-cron
Namespace: default
Labels:
Annotations:
Schedule: */5 * * * *
Concurrency Policy: Allow
Suspend: False
Successful Job History Limit: 3
Failed Job History Limit: 1
Starting Deadline Seconds:
Selector:
Parallelism:
Completions:
Pod Template:
Labels:
Containers:
my-cron:
Image: busybox
Port:
Host Port:

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-probe
127.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中有多個容器,因此你還可以在日志中使用-c 以便僅查看一個特定容器的日志。Kubectl exec與docker exec命令非常相似,你也可以通過exec命令進入到容器中對應用程序進行問題定位。如果Pod的日志沒有幫助你定位到問題時,這個功能就會很有用。在使用exec命令時,必須以你在Pod內使用的shell作為命令的最后一個參數。

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

Kubectl cp該命令用于在容器間復制文件和目錄,跟linux cp類似。可能這不是你每天都會使用的命令,但卻是我個人最喜歡的,用于在自動化失敗的緊急情況下進行備份恢復。以下是一個拷貝本地文件到容器的示例,其命令格式為kubectl cp :

$ kubectl cp commands_copy.txt charts/cherry-chart-88d49478c-dmcfv:commands.txt
$ kubectl exec -it cherry-chart-88d49478c-dmcfv -n charts -- /bin/bash
root@cherry-chart-88d49478c-dmcfv:/# ls
bin 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
$ ls
commands_copy.txt

關注公眾號『分布式實驗室』,回復命令,可下載kubectl命令清單。原文鏈接:https://opensource.com/article/20/5/kubectl-cheat-sheet基于Kubernetes的DevOps實戰培訓

基于Kubernetes的DevOps實戰培訓將于2020年6月19日在上海開課,3天時間帶你系統掌握Kubernetes,學習效果不好可以繼續學習。本次培訓包括:容器特性、鏡像、網絡;Kubernetes架構、核心組件、基本功能;Kubernetes設計理念、架構設計、基本功能、常用對象、設計原則;Kubernetes的數據庫、運行時、網絡、插件已經落地經驗;微服務架構、組件、監控方案等,點擊下方圖片或者閱讀原文鏈接查看詳情。

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的kubectl logs -f tail 显示100_系统管理员应该知道的9个kubectl命令的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。