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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

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

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

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

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

  • Pod

  • Node

  • Deployment

  • Service

  • Replicasets

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

$ 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參數(shù)指定對應(yīng)的命名空間。當(dāng)你想查看kube-system中的pods時將會非常有用,這些pods是Kubernetes自身運行時所必須的服務(wù)。

$ 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現(xiàn)在你已經(jīng)查詢到了一些資源,接下來讓我創(chuàng)建資源。通過kubectl,你幾乎可以創(chuàng)建Kubernetes集群中任何類型的資源。一些資源在創(chuàng)建時,需要指定配置文件,namespace以及資源名稱。你可以創(chuàng)建的資源包括:
  • service

  • cronjob

  • deployment

  • job

  • namespace (ns)

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

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

我們也可以通過cron創(chuàng)建連續(xù)運行的任務(wù),很多使用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那么當(dāng)我們創(chuàng)建資源后又想修改怎么辦呢?這個時候就需要kubectl edit了。當(dāng)你執(zhí)行這個命令時,你可以編輯集群中的任何資源,它將打開你的默認(rèn)文本編輯器。而當(dāng)我想編輯已經(jīng)存在的cron任務(wù)時,則可以執(zhí)行:

$ 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: {}

調(diào)度間隔設(shè)被為15秒:我們可以修改為25秒并保存退出:

之后,我們可以查看修改已經(jīng)生效。

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

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

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

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

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

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

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

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

Describe會顯示你正在查看的資源的詳情,最常見的用例是查看一個Pod或節(jié)點, 以檢查是否有異常事件,或者資源是否即將耗盡??梢圆榭丛斍榈馁Y源包括:
  • Nodes

  • Pods

  • Services

  • Deployments

  • Replica sets

  • Cronjobs

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

$ kubectl describe cronjob my-cron

以下是輸出結(jié)果的一部分。

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內(nèi)部應(yīng)用程序發(fā)生的事件,而logs則提供了Kubernetes中Pod相關(guān)的詳細(xì)信息。了解這種區(qū)別可以幫助你有效地對應(yīng)用程序和kubernetes本身的問題進(jìn)行定位分析,因為二者并不相同。

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

以上命令的部分輸出結(jié)果如下。

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來過濾掉不相關(guān)的信息,或者查看特定事件。比如這里kube-probe可能是不相關(guān)的,所以我們用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命令進(jìn)入到容器中對應(yīng)用程序進(jìn)行問題定位。如果Pod的日志沒有幫助你定位到問題時,這個功能就會很有用。在使用exec命令時,必須以你在Pod內(nèi)使用的shell作為命令的最后一個參數(shù)。

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

Kubectl cp該命令用于在容器間復(fù)制文件和目錄,跟linux cp類似??赡苓@不是你每天都會使用的命令,但卻是我個人最喜歡的,用于在自動化失敗的緊急情況下進(jìn)行備份恢復(fù)。以下是一個拷貝本地文件到容器的示例,其命令格式為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

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

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

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。