<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"> <path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path> </svg> <p>这是我转载的一个博主写的 K8s 常用命令大全,里面详细介绍了 K8s 的命令。如果看了我写的入门基础篇文章,想了解更多命令可以看以下的文章。</p>
讯享网
创建Deployment和Service资源
讯享网
根据yaml文件删除对应的资源,但是yaml文件并不会被删除,这样更加高效
也可以通过具体的资源名称来进行删除,使用这个删除资源,同时删除deployment和service资源
讯享网
查看所有ns空间的pod
一样效果,都是查看所有命名空间的pod【可以加上
查看指定命名空间 pod 列表
查看所有命名空间
讯享网
在-n跟上命名空间【如果不知道为什么要指定,接着往下看即可】
查看pod列表
这个命令查看的默认名称是:kube-public
讯享网
但如果pod不是运行在kube-public上,就需要指定名称才能查看了,否则报错。
查看pod报错:No resources found in kube-public namespace.
上面说过,如果pod运行的空间不是kube-public,直接执行 kubectl get pod就会报错,这时候需要加上-n并跟上命名名称【这个名称就是上面看到的NAMESPACE】
讯享网
显示pod节点的标签信息
根据指定标签匹配到具体的pod
讯享网
查看node节点列表
显示node节点的标签信息
讯享网
查看pod详细信息,也就是可以查看pod具体运行在哪个节点上(ip地址信息)
查看服务的详细信息,显示了服务名称,类型,集群ip,端口,时间等信息
讯享网
查看所有命名空间
查看所有pod所属的命名空间
讯享网
查看所有pod所属的命名空间并且查看都在哪些节点上运行
查看目前所有的replica set,显示了所有的pod的副本数,以及他们的可用数量以及状态等信息
讯享网
查看已经部署了的所有应用,可以看到容器,以及容器所用的镜像,标签等信息
查看事件【get ev】
具体使用场景未知,我是在做【Kubernetes】k8s的健康性检查详细说明中readiness probe时候使用到这个命令了,记录一下。
讯享网
语法:
更详细用法参见:
创建一个nginx服务并且暴露端口让外界可以访问
讯享网
更多expose详细用法参见:
语法
使用 查看
它的子命令
- env
- image
- resources
- selector
- serviceaccount
- subject。
set 命令详情参见:
kubectl set resources 命令
语法:

讯享网
- 这个命令用于设置资源的一些范围限制。
- 资源对象中的Pod可以指定计算资源需求(CPU-单位m、内存-单位Mi),即使用的最小资源请求(Requests),限制(Limits)的最大资源需求,Pod将保证使用在设置的资源数量范围。
- 对于每个Pod资源,如果指定了Limits(限制)值,并省略了Requests(请求),则Requests默认为Limits的值。
- 可用资源对象包括(支持大小写):replicationcontroller、deployment、daemonset、job、replicaset。
kubectl set selector 命令
- 设置资源的 selector(选择器)。如果在调用"set selector"命令之前已经存在选择器,则新创建的选择器将覆盖原来的选择器。
- selector必须以字母或数字开头,最多包含63个字符,可使用:字母、数字、连字符" - " 、点".“和下划线” _ "。如果指定了–resource-version,则更新将使用此资源版本,否则将使用现有的资源版本。
- 注意:目前selector命令只能用于Service对象。
讯享网
kubectl set image 命令
- 用于更新现有资源的容器镜像。
- 可用资源对象包括:pod (po)、replicationcontroller (rc)、deployment (deploy)、daemonset (ds)、job、replicaset (rs)。
讯享网
编辑Deployment nginx的一些信息
编辑service类型的nginx的一些信息
讯享网
- label 必须以字母或数字开头,可以使用字母、数字、连字符、点和下划线,最长63个字符。
- 如果 --overwrite 为 true,则可以覆盖已有的label,否则尝试覆盖label将会报错。
- 如果指定了--resource-version,则更新将使用此资源版本,否则将使用现有的资源版本。
给名为foo的Pod添加label unhealthy=true
讯享网
给名为foo的Pod修改label 为 ‘status’ / value ‘unhealthy’,且覆盖现有的value
给 namespace 中的所有 pod 添加 label
讯享网
仅当resource-version=1时才更新 名为foo的Pod上的label
删除名为“bar”的label 。(使用“ - ”减号相连)
讯享网
- Annotations由key/value组成。
- Annotations的目的是存储辅助数据,特别是通过工具和系统扩展操作的数据,更多介绍在这里。
- 如果–overwrite为true,现有的annotations可以被覆盖,否则试图覆盖annotations将会报错。
- 如果设置了–resource-version,则更新将使用此resource version,否则将使用原有的resource version。
更新Pod“foo”,设置annotation “description”的value “my frontend”,如果同一个annotation多次设置,则只使用最后设置的value值
讯享网
根据“pod.json”中的type和name更新pod的annotation
更新Pod"foo",设置annotation“description”的value“my frontend running nginx”,覆盖现有的值
讯享网
更新 namespace中的所有pod
只有当resource-version为1时,才更新pod ‘foo’
讯享网
通过删除名为“description”的annotations来更新pod ‘foo’。 不需要 -overwrite flag。
BASH
讯享网
ZSH
- 可用资源包括:deployments,daemonsets。
- 子命令:
- history(查看历史版本)
- pause(暂停资源)
- resume(恢复暂停资源)
- status(查看资源状态)
- undo(回滚版本)
讯享网
回滚到之前的deployment
查看daemonet的状态
讯享网
该命令创建了一个新的RC, 然后一次更新一个pod方式逐步使用新的PodTemplate,最终实现Pod滚动更新,new-controller.json需要与之前RC在相同的namespace下。
语法:
使用frontend-v2.json中的新RC数据更新frontend-v1的pod
讯享网
使用JSON数据更新frontend-v1的pod
其他的一些滚动更新
讯享网
scale也可以指定多个前提条件,如:当前副本数量或 --resource-version ,进行伸缩比例设置前,系统会先验证前提条件是否成立。这个就是弹性伸缩策略。
语法:
将名为foo中的pod副本数设置为3。
讯享网
将由“foo.yaml”配置文件中指定的资源对象和名称标识的Pod资源副本设为3
如果当前副本数为2,则将其扩展至3。
讯享网
设置多个RC中Pod副本数量
指定Deployment、ReplicaSet或ReplicationController,并创建已经定义好资源的自动伸缩器。使用自动伸缩器可以根据需要自动增加或减少系统中部署的pod数量。
语法:
讯享网
使用 Deployment “foo”设定,使用默认的自动伸缩策略,指定目标CPU使用率,使其Pod数量在2到10之间
使用RC“foo”设定,使其Pod的数量介于1和5之间,CPU使用率维持在80%
讯享网
查看集群的初始化信息【pod使用镜像和网段等】

certificate命令:用于证书资源管理,授权等
例如,当有node节点要向master请求,那么是需要master节点授权的
讯享网
cluster-info 命令:显示集群信息
top 命令:用于查看资源的cpu,内存磁盘等资源的使用率
以前需要heapster,后替换为metrics-server 【如果不装这个服务,会有error报错】

安装metrics以后,error报错就成使用率展示了
我博客分类中有一篇是:k8s安装metric server和了解ns,想了解的可以自己去看看学习学习。

查看pod的使用情况
查看所有
讯享网
查看指定pod
查看node的使用情况
讯享网
cordon命令:用于标记某个节点不可调度
标记 my-node 为 unschedulable,禁止pod被调度过来。注意这时现有的pod还会继续运行,不会被驱逐。
uncordon命令:用于标签节点可以调度
与cordon相反,标记 my-node 为 允许调度。
讯享网
drain命令: 用于在维护期间排除节点。
drain字面意思为排水,实际就是把my-node的pod平滑切换到其他node,同时标记pod为unschedulable,也就是包含了cordon命令。
但是直接使用命令一般不会成功,建议在要维护节点时,加上以下参数:
- --ignore-daemonsets 忽略daemonset部署的pod
- --force 直接删除不由workload对象(Deployment、Job等)管理的pod
- --delete-local-data 直接删除挂载有本地目录(empty-dir方式)的pod
taint命令:用于给某个Node节点设置污点
1、污点 ( Taint ) 的组成
- 使用kubectl taint命令可以给某个Node节点设置污点,Node被设置上污点之后就和Pod之间存在了一种相斥的关系,可以让Node拒绝Pod的调度执行,甚至将Node已经存在的Pod驱逐出去
- 每个污点的组成如下: 每个污点有一个 key 和 value 作为污点的标签,其中 value 可以为空,effect 描述污点的作用。
- 当前 taint effect 支持如下三个选项:
- NoSchedule :表示k8s将不会将Pod调度到具有该污点的Node上
- NoExecute :表示k8s将不会将Pod调度到具有该污点的Node上,同时会将Node上已经存在的Pod驱逐出去
- PreferNoSchedule :表示k8s将尽量避免将Pod调度到具有该污点的Node上
2、污点的设置、查看和去除
设置污点
讯享网
节点说明中,查找Taints字段
去除污点
讯享网
describe命令:显示特定pod资源的详细信息
要先知道所有的命名空间,你的pod可能不是在默认default中
这时需要获取指定命名空间中的pod名称,如我获取ccx下的pod
讯享网
查看某个 pod的详细状态
得到上面的pod名称后,加上-n 后面跟上命名空间,如果不加-n,则是使用默认的命名空间,会报错。
语法:
如下
logs命令:用于在一个pod中打印一个容器的日志,如果pod中只有一个容器,可以省略容器名
语法:
讯享网
返回仅包含一个容器的pod nginx的日志快照
返回pod ruby中已经停止的容器web-1的日志快照
讯享网
持续输出pod ruby中的容器web-1的日志
仅输出pod nginx中最近的20条日志
讯享网
输出pod nginx中最近一小时内产生的所有日志
参数选项:

- -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中的一个容器。
- -p, --pod="": Pod名。
- -i, --stdin[=false]: 将控制台输入发送到容器。
- -t, --tty[=false]: 将标准输入控制台作为容器的控制台输入。
- 进入nginx容器,执行一些命令操作
attach命令:连接到一个正在运行的容器。
语法:
讯享网
参数选项:
- - `-c, --container=""`: 容器名。如果省略,则默认选择第一个 pod。
- - `-i, --stdin[=false]`: 将控制台输入发送到容器。
- - `-t, --tty[=false]`: 将标准输入控制台作为容器的控制台输入。
获取正在运行中的pod -7890的输出,默认连接到第一个容器
获取pod -7890中ruby-container的输出
讯享网
切换到终端模式,将控制台输入发送到pod -7890的ruby-container的“bash”命令,并将其结果输出到控制台
错误控制台的信息发送回客户端。
cp命令:拷贝文件或者目录到pod容器中
用于pod和外部的文件交换,类似于docker 的cp,就是将容器中的内容和外部的内容进行交换。
语法:
讯享网
拷贝宿主机本地文件夹到pod
指定namespace的拷贝pod文件到宿主机本地目录
讯享网
对于多容器pod,用-c指定容器名
打印当前集群支持的api版本
讯享网
显示全部的命令帮助提示
具体的子命令帮助,例如
讯享网
设置 kubectl 与哪个 Kubernetes 集群进行通信并修改配置信息。查看 使用 kubeconfig 跨集群授权访问 文档获取详情配置文件信息。
显示合并的 kubeconfig 配置信息
为啥要加个合并呢,是因为如果配置了多集群,那么这里面的配置信息是很多的,如下,我配置了2个集群的config文件内容就如下【我博客中有一篇是:【Kubernetes】k8s多集群切换【含上下文作用详解】,这里面说了如何配置多集群,感兴趣的可以去看看。
讯享网
同时使用多个 kubeconfig 文件并查看合并的配置
获取 e2e 用户的密码
讯享网
查看当前所处的上下文
查看多集群上下文等信息
CURRENT是当前所处集群
讯享网
设置默认的上下文【多集群切换】
如,我现在在context上,我切换到context1这个上下文上【也就切换到另一个集群了】
讯享网
添加新的集群配置到 kubeconf 中,使用 basic auth 进行鉴权
使用特定的用户名和命名空间设置上下文。
讯享网
打印客户端和服务端版本信息【详细版】
精简版【仅显示版本号】
讯享网
通过文件名或控制台输入,对资源进行配置。 如果资源不存在,将会新建一个。可以使用 JSON 或者 YAML 格式。
语法:
讯享网
将pod.json中的配置应用到pod
将控制台输入的JSON配置应用到Pod
讯享网
参数选项:
语法:
- -f, --filename=[]: 包含配置信息的文件名,目录名或者URL。
- --include-extended-apis[=true]: If true, include definitions of new APIs via calls to the API server. [default true]
- -o, --output="": 输出模式。"-o name"为快捷输出(资源/name).
- --record[=false]: 在资源注释中记录当前 kubectl 命令。
- -R, --recursive[=false]: Process the directory used in -f, --filename recursively. Useful when you want to manage related manifests organized within the same directory.
- --schema-cache-dir="~/.kube/schema": 非空则将API schema缓存为指定文件,默认缓存到’[root@master ~]#HOME/.kube/schema’
- --validate[=true]: 如果为true,在发送到服务端前先使用schema来验证输入。
Partially update a node using strategic merge patch
讯享网
Update a container’s image; spec.containers[*].name is required because it’s a merge key
语法:
讯享网
Replace a pod using the data in pod.json.
Replace a pod based on the JSON passed into stdin.
讯享网
Update a single-container pod’s image version (tag) to v4
Force replace, delete and then re-create the resource
讯享网
语法:
Convert ‘pod.yaml’ to latest version and print to stdout.
讯享网
Convert the live state of the resource specified by ‘pod.yaml’ to the latest version and print to stdout in json format.
Convert all files under current directory to latest version and create them all.
讯享网
要以特定格式将详细信息输出到终端窗口,可以将-o或–output 参数添加到支持的 kubectl 命令。

Kubectl 日志输出详细程度是通过 -v 或者 –v 来控制的,参数后跟了一个数字表示日志的级别。
Kubernetes 通用的日志习惯和相关的日志级别在 这里 有相应的描述。



版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/192806.html