这是我转载的一个博主写的 K8s 常用命令大全,里面详细介绍了 K8s 的命令。如果看了我写的入门基础篇文章,想了解更多命令可以看以下的文章。


创建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运行在哪个命名空间上的命令:【不加 --all-namespaces就是仅查看当前所在命名空间的pod了】
结果中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详细用法参见:
语法
使用 查看
它的子命令
set 命令详情参见:
kubectl set resources 命令
语法:
例如:
kubectl set selector 命令
语法:
kubectl set image 命令
语法: ```c image (-f FILENAME | TYPE NAME) CONTAINER_NAME_1=CONTAINER_IMAGE_1 ... CONTAINER_NAME_N=CONTAINER_IMAGE_N ```
编辑Deployment nginx的一些信息
编辑service类型的nginx的一些信息
语法:
给名为foo的Pod添加label unhealthy=true
给名为foo的Pod修改label 为 ‘status’ / value ‘unhealthy’,且覆盖现有的value
给 namespace 中的所有 pod 添加 label
仅当resource-version=1时才更新 名为foo的Pod上的label
删除名为“bar”的label 。(使用“ - ”减号相连)
语法:
更新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
- 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命令。
但是直接使用命令一般不会成功,建议在要维护节点时,加上以下参数:
taint命令:用于给某个Node节点设置污点
1、污点 ( Taint ) 的组成
- 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中最近一小时内产生的所有日志
参数选项:
exec命令:进入容器进行交互,在容器中执行命令 语法:
命令选项:
attach命令:连接到一个正在运行的容器。
语法:
参数选项:
获取正在运行中的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是当前所处集群
设置默认的上下文【多集群切换】
使用:kubectl config get-contexts查看现在有的上下文【一般多集群才需要切换】
语法
如,我现在在context上,我切换到context1这个上下文上【也就切换到另一个集群了】
添加新的集群配置到 kubeconf 中,使用 basic auth 进行鉴权
使用特定的用户名和命名空间设置上下文。
打印客户端和服务端版本信息【详细版】
精简版【仅显示版本号】
docker plugin命令用于管理插件。
用法
Shell
编号 命令 描述
IP 操作系统 docker plugin create 从rootfs和配置创建一个插件。插件数据目录必须包含config.json和rootfs目录。 192.168.2.125 centos7.9 docker plugin enable 启用插件 docker plugin inspect 显示一个或多个插件的详细信息 docker plugin install 安装一个插件 docker plugin ls 列出所有插件 docker plugin push 将插件推送到注册表 docker plugin rm 删除一个或多个插件 docker plugin set 更改插件的设置 docker plugin upgrade 升级现有插件
通过文件名或控制台输入,对资源进行配置。 如果资源不存在,将会新建一个。可以使用 JSON 或者 YAML 格式。
语法:
将pod.json中的配置应用到pod
将控制台输入的JSON配置应用到Pod
参数选项:
语法:
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 通用的日志习惯和相关的日志级别在 这里 有相应的描述。
今天的文章 kubectl 命令(kubectl 常用命令)分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/49388.html