目录

三言两语,不如细心探索。
今天整理了一下kubectl 命令,希望此文,能帮助读者对kubectl 命令有一个初步的了解
文章标记颜色说明:
- 黄色:重要标题
- 红色:用来标记结论
- 绿色:用来标记一级论点
- 蓝色:用来标记二级论点
kubectl 作为客户端CLI工具,可以通过命令行的方式对Kubernetes集群进行操作。
kubectl命令行的语法如下:
$ kubectl [command] [TYPE] [NAME] [flags]
- command:子命令,用于操作Kubernetes集群资源对象的命令,例如create、delete、describe、get、apply等。
- TYPE:资源对象的类型,区分大小写,能以单数形式、复数形式或者简写形式表示。例如以下3种TYPE是等价的。
- NAME:资源对象的名称,区分大小写。如果不指定名称,则系统将返回属于TYPE的全部对象的列表,例如$ kubectl get pods将返回所有Pod的列表。
- flags:kubectl子命令的可选参数,例如使用“-s”指定apiserver的URL地址而不用默认值。
$ kubectl get pod podtest $ kubectl get pods podtest $ kubectl get po podtest
先介绍一下几个基础命令
- create
- delete
- get
- run
- expose
- set
- explain
- edit
create 命令:根据文件或者输入来创建资源
创建Deployment和Service资源
$ kubectl create -f test-deployment.yaml
$ kubectl create -f test-service.yaml
delete 命令:删除资源
根据yaml文件删除对应的资源,但是yaml文件并不会被删除,如下
$ kubectl delete -f test-deployment.yaml
$ kubectl delete -f test-service.yaml
可以通过具体的资源名称来进行删除,使用这个删除资源,同时删除deployment和service资源
$ kubectl delete 具体的资源名称
$ kubectl delete test-deploy
get 命令 :获得资源信息
$ kubectl get pod显示pod节点的标签信息
$ kubectl get pod --show-labels根据指定标签匹配到具体的pod
$ kubectl get pods -l app=demo查看pod详细信息,可以查看pod具体运行在哪个节点上
$ kubectl get pod -o wide
查看node节点列表
$ kubectl get node显示node节点的标签信息
$ kubectl get node --show-labels
查看服务的详细信息,显示了服务名称,类型,集群ip,端口,时间等信息
$ kubectl get svc $ kubectl get svc -n kube-system
查看所有的资源信息
$ kubectl get all $ kubectl get --all-namespaces
$ kubectl get ns $ kubectl get namespaces
查看已经部署了的所有应用,可以看到容器,以及容器所用的镜像,标签等信息
$ kubectl get deploy -o wide $ kubectl get deployments -o wide
run 命令:在集群中创建并运行一个或多个容器镜像。
语法:
run NAME --image=image [--env="key=value"] [--port=port] [--replicas=replicas] [--dry-run=bool] [--overrides=inline-json] [--command] -- [COMMAND] [args...]
示例:运行一个名称为nginx,副本数为3,标签为app=test,镜像为nginx:1.11,端口为80的容器实例
$ kubectl run nginx --replicas=3 --labels="app=test" --image=nginx:1.11 --port=80
explain 命令:用于显示资源文档信息
$ kubectl explain rs
edit 命令: 用于编辑资源信息
编辑Deployment nginx的一些信息
$ kubectl edit deployment nginx编辑service类型的nginx的一些信息
$ kubectl edit service/nginx
故障排查和调试命令:
- describe
- logs
- exec
- attach
- port-foward
- proxy
- cp
- auth
describe命令:显示特定资源的详细信息
查看test-nginx pod的详细状态
$ kubectl describe pod test-nginx
logs命令:用于在pod中打印一个容器的日志
执行
kubectl logs -h可以查看kubectl logs的帮助信息
语法:
- kubectl logs [-f] [-p] POD [-c CONTAINER]
-f:
- --follow[=false]: 指定是否持续输出日志
- --interactive[=true]: 如果为true,当需要时提示用户进行输入。默认为true
- --limit-bytes=0: 输出日志的最大字节数。默认无限制
-p:
- --previous[=false]: 如果为true,输出pod中曾经运行过,但目前已终止的容器的日志
- --since=0: 仅返回相对时间范围,如5s、2m或3h,之内的日志。默认返回所有日志。只能同时使用since和since-time中的一种
- --since-time="": 仅返回指定时间(RFC3339格式)之后的日志。默认返回所有日志。只能同时使用since和since-time中的一种
- --tail=-1: 要显示的最新的日志条数。默认为-1,显示所有的日志
- --timestamps[=false]: 在日志中包含时间戳
-c:
- --container="": 容器名
返回仅包含一个容器的pod nginx的日志快照
$ kubectl logs nginx
返回pod test中已经停止的容器web-test的日志快照
$ kubectl logs -p -c test web-1# 持续输出pod ruby中的容器web-1的日志 $ kubectl logs -f -c ruby web-1 # 仅输出pod nginx中最近的20条日志 $ kubectl logs --tail=20 nginx # 输出pod nginx中最近一小时内产生的所有日志 $ kubectl logs --since=1h nginx
exec命令:用于进入pod中查看pod内部信息
kubectl exec -it podName -c containerName -n namespace -- shell comand
-c: --container="": 容器名。如果未指定,使用pod中的一个容器。 -p: --pod="": Pod名。 -i: --stdin[=false]: 将控制台输入发送到容器。 -t: --tty[=false]: 将标准输入控制台作为容器的控制台输入。
示例:
# 默认在pod test的第一个容器中运行“date”并获取输出
$ kubectl exec test date
# 在pod test的容器ruby-container中运行“date”并获取输出
$ kubectl exec test -c ruby-container date
# 切换到终端模式,将控制台输入发送到pod test的ruby-container的“bash”命令,并将其输出到控制台/
# 错误控制台的信息发送回客户端。
$ kubectl exec test -c ruby-container -i -t -- bash -il
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。
我想用ruby编写一个小的命令行实用程序并将其作为gem分发。我知道安装后,Guard、Sass和Thor等某些gem可以从命令行自行运行。为了让gem像二进制文件一样可用,我需要在我的gemspec中指定什么。 最佳答案 Gem::Specification.newdo|s|...s.executable='name_of_executable'...endhttp://docs.rubygems.org/read/chapter/20 关于ruby-在Ruby中编写命令行实用程序
这里是Ruby新手。完成一些练习后碰壁了。练习:计算一系列成绩的字母等级创建一个方法get_grade来接受测试分数数组。数组中的每个分数应介于0和100之间,其中100是最大分数。计算平均分并将字母等级作为字符串返回,即“A”、“B”、“C”、“D”、“E”或“F”。我一直返回错误:avg.rb:1:syntaxerror,unexpectedtLBRACK,expecting')'defget_grade([100,90,80])^avg.rb:1:syntaxerror,unexpected')',expecting$end这是我目前所拥有的。我想坚持使用下面的方法或.join,
在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList()Obt
嗨~大家好,这里是可莉!今天给大家带来的是7个C语言的经典基础代码~那一起往下看下去把【程序一】打印100到200之间的素数#includeintmain(){ inti; for(i=100;i 【程序二】输出乘法口诀表#includeintmain(){inti;for(i=1;i 【程序三】判断1000年---2000年之间的闰年#includeintmain(){intyear;for(year=1000;year 【程序四】给定两个整形变量的值,将两个值的内容进行交换。这里提供两种方法来进行交换,第一种为创建临时变量来进行交换,第二种是不创建临时变量而直接进行交换。1.创建临时变量来
我从Ubuntu服务器上的RVM转移到rbenv。当我使用RVM时,使用bundle没有问题。转移到rbenv后,我在Jenkins的执行shell中收到“找不到命令”错误。我内爆并删除了RVM,并从~/.bashrc'中删除了所有与RVM相关的行。使用后我仍然收到此错误:rvmimploderm~/.rvm-rfrm~/.rvmrcgeminstallbundlerecho'exportPATH="$HOME/.rbenv/bin:$PATH"'>>~/.bashrcecho'eval"$(rbenvinit-)"'>>~/.bashrc.~/.bashrcrbenvversions
基础版云数据库RDS的产品系列包括基础版、高可用版、集群版、三节点企业版,本文介绍基础版实例的相关信息。RDS基础版实例也称为单机版实例,只有单个数据库节点,计算与存储分离,性价比超高。说明RDS基础版实例只有一个数据库节点,没有备节点作为热备份,因此当该节点意外宕机或者执行重启实例、变更配置、版本升级等任务时,会出现较长时间的不可用。如果业务对数据库的可用性要求较高,不建议使用基础版实例,可选择其他系列(如高可用版),部分基础版实例也支持升级为高可用版。基础版与高可用版的对比拓扑图如下所示。优势 性能由于不提供备节点,主节点不会因为实时的数据库复制而产生额外的性能开销,因此基础版的性能相对于
我有一个问题。我想从另一个ruby脚本运行一个ruby脚本并捕获它的输出信息,同时让它也输出到屏幕。亚军#!/usr/bin/envrubyprint"Enteryourpassword:"password=gets.chompputs"Hereisyourpassword:#{password}"我运行的脚本文件:开始.rboutput=`runner`putsoutput.match(/Hereisyour(password:.*)/).captures[0].to_s正如您在此处看到的那样,存在问题。在start.rb的第一行,屏幕是空的。我在运行程序中看不到“输入您的密
有这样的事吗?我想在Ruby程序中使用它。 最佳答案 试试这个http://csl.sublevel3.org/jp2a/此外,Imagemagick可能还有一些东西 关于ruby-是否有将图像文件转换为ASCII艺术的命令行程序或库?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/6510445/
如何在Ruby的if语句中检查bash命令的返回值(true/false)。我想要这样的东西,if("/usr/bin/fswscell>/dev/null2>&1")has_afs="true"elsehas_afs="false"end它会提示以下错误含义,它总是返回true。(irb):5:warning:stringliteralincondition正确的语法是什么?更新:/usr/bin/fswscell寻找afs安装和运行状态。它会抛出这样的字符串,Thisworkstationbelongstocell如果afs没有运行,命令以状态1退出 最