???????$ 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
$ 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:busyboxPort:<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 cpKubectl cp 命令与 Linux cp 命令类似,用于容器之间复制文件和目录 。另外,该命令还能在自动化失败等紧急情况下进行恢复备份 。以下是将本地文件拷贝到容器的示例 。命令格式为:kubectl cp <
namespace/podname:/path/tofile> 。
推荐阅读
- Linux系统常用的文件管理命令
- 简单实用的监控系统安装调试全过程,新手入门基础知识
- Win7系统一直提示盗版怎么办「系统天地」
- Linux系统中的文件类型有哪几种?它们分别有什么作用?
- 定速巡航怎么用?
- 得闲饮茶不舍昼夜,饮茶禁忌不得不看
- 黑客常说的Kali Linux 是什么?附Kali Linux 系统安装详细教程
- 微信的操作系统之路
- Windows操作系统中的休眠模式和睡眠模式有什么区别?
- 2020如何一分钟快速重装系统