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

7d991a7c20408438a6b71d6ef9d2e3f8.png

kubectl是Kubernetes的一个命令行管理工具,可用于Kubernetes上的应用部署和日常管理。本文列举了9个常见的kubectl命令,并对每个命令进行了简单扼要的介绍,供大家参考。同时,大家也可以通过文中连接获取更详细的介绍。如今,Kubernetes已成为IT基础设施管理界的老大,这也意味着系统管理员需要对其管理非常熟悉。多年以来,我每天都在管理Kubernetes集群,所以我总结了一些可以帮助管理员简化管理工作的技巧,供大家参考。我创建了一个备忘清单,用于分享kubectl相关的主题,以及我日常使用的kubectl管理命令。备忘清单分为多个小节,方便你判断其是否适合于你的工作。我还在清单引入了一些标签,方便你快速的查阅和使用。通过kubectl查询,创建,编辑和删除资源

55ab33cf95e92416ca8dc61e100819e2.png

熟悉一个命令行工具最安全的方式是提出问题(读操作),而非发出命令(写操作)。所以使用查询相关的命令是一个很好的开始。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秒:d0df861bb1c2718287443db888d730f0.png我们可以修改为25秒并保存退出:

6bc7f4fe84e65b7cdf43df22f230ea42.png

之后,我们可以查看修改已经生效。

$ 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进行故障排除

55ab33cf95e92416ca8dc61e100819e2.png

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

55ab33cf95e92416ca8dc61e100819e2.png

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实战培训

55ab33cf95e92416ca8dc61e100819e2.png

基于Kubernetes的DevOps实战培训将于2020年6月19日在上海开课,3天时间带你系统掌握Kubernetes,学习效果不好可以继续学习。本次培训包括:容器特性、镜像、网络;Kubernetes架构、核心组件、基本功能;Kubernetes设计理念、架构设计、基本功能、常用对象、设计原则;Kubernetes的数据库、运行时、网络、插件已经落地经验;微服务架构、组件、监控方案等,点击下方图片或者阅读原文链接查看详情。

0f78b4e9db53415bc8aad3a2574ce31b.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/525897.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器视觉技术及应用_工业机器人视觉技术的应用前景

工业机器人和视觉相当于拥有一双“眼睛”,可以更灵活地完全代替人类的工作。工业机器人视觉分为二维和三维。通过三维视觉,可以对物体进行三维扫描,获得物体的三维信息。通过精确的算法定位,可以更准确的控制生产过程中材料的使用…

mysql setup w_MySql的安装及配置详细指引!

一、安装My Sql数据库1.1,首先下载MySQL与HeidiSQL工具,双击打开后可以看到名为”mysql-5.0.22-win32 Setup.exe”的安装程序,双击执行该程序。1.2,打开安装向导后,单击”Next”继续下一步。1.3 选择安装类型,如果没有…

mysql安装下载的缓存文件_mysql的安装

linux版ubuntu安装mysql从官方提供的mysql-apt-config.deb包进行APT源设置下载完成以后,默认apt源保存在了Downloads目录下。通过终端切换目录到Downloads目录下执行一下命令:cd Downloads/sudo dpkg -i mysql-apt-config_0.8.12-1_all.deb按下方向键选择…

python3.0实例_python3.0 模拟用户登录,三次错误锁定的实例

python用户登录三次锁定怎么修改1.normal_user是存放用户id及密码的文件 2.lock_file是存放被锁定的用户id的文档,默认为空. 3.程序会对normal_user里的合法用户id进行判断,若连续输入用户id错误达三次程序直接退出. 4.程序会输入对正确用户名后的密码进行判断,输入密码有3次机…

安卓9与10的系统要求_代码开源!支持RISC-V架构的安卓系统终于来了!

文章来源:芯片开放社区,作者:OCC编辑万里征途迈出第一步,基于RISC-V的安卓10系统来了。点击链接查案演示视频: 平头哥芯片开放社区(OCC)​occ.t-head.cn今天,平头哥完成了安卓10对RISC-V的移植并开源了全部…

trie树 mysql_Trie树详解(转)

特别声明本文只是一篇笔记类的文章,所以不存在什么抄袭之类的。以下为我研究时参考过的链接(有很多,这里我只列出我记得的):1、字典树的概念字典树,因为它的搜索快捷的特性被单词搜索系统使用,故又称单词查找树。它是一…

mysql 主键 最佳实践_设计套路:Mysql主键的选取

最近在对一些大表进行优化,发现主键和索引设计都有争议,就此从原理上分析主键设计该如何选取。Mysql的数据结构Mysql是由B树构成,搞清楚下面两个问题,就知道为什么用B树了。1.BTree是为磁盘或者其他直接存取辅助设备而设计的一种平…

java tostring格式化日期_java日期格式化SimpleDateFormat的使用详解

日期和时间格式由 日期和时间模式字符串 指定。在 日期和时间模式字符串 中,未加引号的字母 A 到 Z 和 a 到 z 被解释为模式字母,用来表示日期或时间字符串元素。文本可以使用单引号 () 引起来,以免进行解释。所有其他字符均不解释&#xff1…

ul 原点显示_CSS+HTML ul li列表原点如何相连

方案一:html参与考试《第一期模拟考试》3小时50分钟学习文档《LDO电路设计规范》3小时50分钟学习文档《LDO电路设计规范》3小时50分钟Css:*{margin:0;padding:0;}ul{margin:100px;padding:0;list-style: none;}ul li{position:relative;padding-left: 30px;padding-bottom: 20p…

java并发执行一个方法_JAVA的执行并发原理

VolatileVolatile关键字用于确保共享数据的可见性与有序性,但是并不能保证方法的原子性,在程序中对Volatile关键字使用得当的话,它比synchronized的使用和执行成本会更低,因为他不会引起线程的上下文切换和调度。先讲一下重排序&a…

java.util. 什么意思_java.util中,util是什么意义

展开全部1. util包的框架常用的集合类主要636f70793231313335323631343130323136353331333431343630实现两个“super接口”而来:Collection和Map。1.1 Collection有两个子接口:List和SetList特点是元素有序,且可重复。实现的常用集合类有Arra…

java测试用例编写_TestNG测试用例编写和执行

编写TestNG用例测试基本上包括以下步骤:编写业务逻辑针对业务逻辑中涉及的方法编写测试类,在代码中插入TestNG的注解直接执行测试类或者添加一个testng.xml文件运行 TestNG.下面我们介绍一个完整的例子来测试一个逻辑类;1.创建一个pojo类Empl…

好爽 java_Intellij是进行scala开发的一个非常好用的工具,可以非常轻松查看scala源码,当然用它来开发Java也是很爽的,之前一直在用scala ide和ec...

Intellij是进行scala开发的一个非常好用的工具,可以非常轻松查看scala源码,当然用它来开发Java也是很爽的,之前一直在用scala ide和eclipse,现在换成intellij简直好用到飞起,但是有些人不知道怎么用intellij去创建一个…

linux服务器安装php7_CentOS 7 下 PHP 7.1.12 安装配置

Linux系统:CentOS 7记录在CentOS 7 下 PHP 7.1.12 安装配置的过程。先安装相关依赖包yum installpcre pcre-devel zlib zlib-devel openssl openssl-devel gd gd-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel e2fsprogs e2fsprogs-dev…

commvault备份mysql,备份MySQL数据库的4种方式

备份MySQL数据库的4种方式前言我们试着想一想, 在生产环境中什么最重要?如果我们服务器的硬件坏了可以维修或者换新, 软件问题可以修复或重新安装,但是如果数据没了呢?这可能是最恐怖的事情了吧, 我感觉在生产环境中应该没有什么比数据跟更为重要.那么我…

php $app-run(),Thinkphp 5.x 应用启动 App::run()

在上文加载完配置等一系列工作之后,进入App::run(),在run()方法中,首先通过自动加载机制拿到 Request 的一个实例接着 $config self::initCommon()初始化公共配置,先是 addNamespace 添加app当前所在的命名空间,然后 …

php react-native,React-Native+Mobx实现商城APP

这次给大家带来React-NativeMobx实现商城APP,React-NativeMobx实现商城APP的注意事项有哪些,下面就是实战案例,一起来看一下。最近一直在学习微信小程序,在学习过程中,看到了 wxapp-mall这个微信小程序的项目&#xff…

matlab axis 用法,MATLAB中regionprops的用法

Matlab图像处理函数:regionprops这里给出在Matlab图像处理工具箱中非常重要的一个图像分析函数:regionprops。顾名思义:它的用途是get the properties of region,即用来度量图像区域属性的函数。语法STATS regionprops(L,propert…

emlog_toolkit.php,emlog 4.0版本IIS6下伪静态划定规矩

emlog默许不能生成静态文件,不过彷佛有生成静态页面的相干插件,该插件博客吧先不研讨,本日博客簿要引见的是emlog 4.0版本在IIS6环境下的伪静态划定规矩,人人都晓得,经由过程伪静态能够让博客文章网址变得对搜索引擎越…

api.php phpcms,phpcms程序api怎么写接口

易站通,带你玩转PHPCMS建站程序,让你更快的熟悉该程序下面让我们来学习吧phpcms api怎么写接口?最近自己开发了一套crm系统,想着如果将来能卖出去,能不能再界面动态调用自己网站的推荐信息,算是一种广告吧&…