Kubectl 常用命令汇总大全

kubectl 是 Kubernetes 自带的客户端,可以用它来直接操作 Kubernetes 集群。

 

从用户角度来说,kubectl 就是控制 Kubernetes 的驾驶舱,它允许你执行所有可能的 Kubernetes 操作;从技术角度来看,kubectl 就是 Kubernetes API 的一个客户端而已。

1. kubectl 命令摘要

基础命令(初级)Basic Commands(Beginner)

命令说明
kubectl create通过 yaml/json 文件或者标准输入创建一个资源对象,支持很多子命令 例如 namespace pod deployment service 等
kubectl expose将 yaml/json 文件中定义的资源对象的端口暴露给新的 service 资源对象
kubectl run创建并运行一个或多个容器镜像
kubectl set配置资源对象设置特定功能

基础命令(中级)Basic Commands(Intermediate)

命令说明
kubectl explain查看资源对象的详细信息(一般用一编写 yaml 的时候做一个提示 kubectl explain deployment 会出现 deployment 下面可以写的字段以及字段属性还有 可以逐级使用)
kubectl get获取一个或多个资源对象的信息
kubectl edit使用默认编辑器编辑服务器上定义的资源对象
kubectl delete通过 yaml/json 文件、标准舒服、资源名称或标签选择器来删除资源

部署命令 DeployCommands

命令说明
kubectl rollout资源管理对象的部署
kubectl rollout-update使用 rc(replication controller)来做滚动更新
kubectl scale扩容或者缩容 deployment replicaset replication contrller 等
kubectl autoscale自动设置在 k8s 系统中运行的 pod 数量(水平自动伸缩)

集群管理命令 Cluster Manager Commands

命令说明
kubectl cetificate修改证书资源对象
kubectl cluster-info查看集群信息
kubectl top显示资源 cpu 内存 存储使用情况
kubectl cordon标记节点为不可调度
kubectl uncordon指定节点为可调度
kubectl drain安全的驱逐节点的所有 pod
kubectl taint将一个或多个节点设置为污点

故障排查和调试命令 Troubleshooting adn Debugging Commands

命令说明
kubectl describe显示一个或多个资源对象的详细信息
kubectl logs输出 pod 资源对象中一个容器的日志
kubectl attach连接到一个运行的容器
kubectl exec在指定容器内执行命令
kubectl port-forward将本机指定端口映射到 pod 资源对象的端口
kubectl proxy将本机指定端口映射到 kube-apiserver
kubectl cp用于 pod 与主机交换文件
kubectl auth检查验证

高级命令 Advanced Commands

命令说明
kubectl diff对比本地 yaml/json 文件与 kube-apiserver 中运行的配置文件是否有差异
kubectl apply通过 yaml/json 文件 标准输入对资源进行配置更新或者创建
kubectl patch通过 patch 方式修改资源对象字段(补丁式)
kubectl replace通过 yaml/json 文件或者标准输入来替换资源对象
kubectl wait在一个或者多个资源上等待条件达成
kubectl convert转换 yaml/json 文件为不同的资源版本
kubectl kustomize定制 kubernetes 配置

设置命令 Settings Commands

命令说明
kubectl label增删改资源的标签
kubectl annotate更新一个或者多个资源对象的注释(annotaion)信息
kubectl completion命令自动补全

其他命令 Other Commands

命令说明
kubectl config管理 kubeconfig 配置文件
kubectl plugin运行命令行插件功能
kubectl version查看客户端服务端的系统版本信息
kubectl api-versions列出当前 kubernetes 系统支持的资源组和资源版本表现形式为/
kubectl api-resources列出当前 kubernetes 系统支持的 resource 资源列表
kubectl options查看支持的参数列表

2. 常见的 RESOURCE_NAME

名称缩写
all
certificatesigningrequests(缩写 csr)
clusterrolebindings
clusterrol
componentstatuses(缩写 cs)
configmaps(缩写 cm)
controllerrevisions
cronjobs
customresourcedefinition(缩写 crd)
daemonsets(缩写 ds)
deployments(缩写 deploy)
endpoints(缩写 ep)
events(缩写 ev)
horizontalpodautoscalers(缩写 hpa)
ingresses(缩写 ing)
jobs
limitranges(缩写 limits)
namespaces(缩写 ns)
networkpolicies(缩写 netpol)
nodes(缩写 no)
persistentvolumeclaims(缩写 pvc)
persistentvolumes(缩写 pv)
poddisruptionbudgets(缩写 pdb)
podpreset
pods(缩写 po)
podsecuritypolicies(缩写 psp)
podtemplates
replicasets(缩写 rs)
replicationcontrollers(缩写 rc)
resourcequotas(缩写 quota)
rolebindings
roles
secrets
serviceaccounts(缩写 sa)
services(缩写 svc)
statefulsets(缩写 sts)
storageclasses(缩写 sc)

3. kubectl 重要命令详解

kubectl create

通过配置文件名或 stdin 创建一个集群资源对象。支持 JSON 和 YAML 格式的文件。

语法:

kubectl create -f FILENAME

示例:

# 通过 pod.yml 文件创建一个 pod
kubectl create -f ./pod.yml# 通过 stdin 的 yml 创建一个 pod
cat pod.yml | kubectl create -f -# 为 gitlab-runner 在 namespace 下授权管理员角色
kubectl create rolebinding deploy-runner --clusterrole=cluster-admin --serviceaccount=deploy:default --namespace=hsh-pre-service

kubectl expose

将资源暴露为新的 Kubernetes Service。指定 deployment、service、replica set、replication controller 或 pod,并使用该资源的选择器作为指定端口上新服务的选择器。deployment 或 replica set 只有当其选择器可转换为 service 支持的选择器时,即当选择器仅包含 matchLabels 组件时才会作为暴露新的 Service。

语法:

kubectl expose (-f FILENAME | TYPE NAME) [--port=port] [--protocol=TCP|UDP] [--target-port=number-or-name] [--name=name] [--external-ip=external-ip-of-service] [--type=type]

示例:

# 为 rc 的 nginx 创建 service,并通过 service 的 80 端口转发至容器的 8000 端口上
kubectl expose rc nginx --port=80 --target-port=8000# 由 “nginx-controller.yml” 中指定的 type 和 name 标识的 rc 创建 service,并通过 service 的 80 端口转发至容器的 8000 端口上
kubectl expose -f nginx-controller.yml --port=80 --target-port=8000

kubectl get

获取一个或多个资源对象的信息。

语法:

kubectl get RESOURCE_NAME

示例:

# 查看 master 状态
kubectl get componentstatuses# 查看所有命名空间
kubectl get namespaces# 列出所有的 pods
kubectl get pods# 显示更多的 pods 列表信息(例如 pod 的 ip 和所处的 node)
kubectl get pods -o wide# 列出名字为 web 的 rc
kubectl get replicationcontroller web# 获取名字为 web-pod-13cd8 的 pod 的信息,并以 json 格式输出
kubectl get -o json pod web-pod-13cd8# 根据 pod 文件查找 pod,并以 json 格式输出
kubectl get -f pod.yaml -o json# 获取 pod 容器的状态
kubectl get -o template pod/kube-dns-795f5f6f9c-ldxxs --template {{.status.phase}}# 同时获取所有的 rc 和 service
kubectl get rc,services# 获取符合条件的所有 rc,svc,pod
kubectl get rc/web service/frontend pods/web-pod-13cd8# 获取所有 resource
kubectl get all

kubectl edit

使用默认编辑器 编辑服务器上定义的资源。使用命令行工具获取的任何资源都可以使用 edit 命令编辑。edit 命令会打开使用 KUBE_EDITOR,GIT_EDITOR 或者 EDITOR 环境变量定义的编辑器,可以同时编辑多个资源,但所编辑过的资源只会一次性提交。edit 除命令参数外还接受文件名形式。文件默认输出格式为 YAML。要以 JSON 格式编辑,请指定 “-o json” 选项。

语法:

kubectl edit (RESOURCE/NAME | -f FILENAME)

示例:

# 编辑名为 “docker-registry” 的 service
kubectl edit svc/docker-registry# 使用替代的编辑器
KUBE_EDITOR="nano" kubectl edit svc/docker-registry# 以 YAML 格式输出编辑 deployment “mydeployment”,并将修改的配置保存在 annotation 中
kubectl edit deployment/mydeployment -o yaml --save-config

kubectl delete

通过配置文件名、stdin、资源名称或label选择器来删除资源。支持 JSON 和 YAML 格式文件。可以只指定一种类型的参数:文件名、资源名称或 label 选择器。

注意:执行 delete 命令时不会检查资源版本,如果在执行 delete 操作时有人进行了更新操作,那么更新操作将连同资源一起被删除。

语法:

kubectl delete ([-f FILENAME] | TYPE [(NAME | -l label | --all)])

示例:

# 使用 pod.yml 中指定的资源类型和名称删除 pod
kubectl delete -f ./pod.yml# 根据传入 stdin 的 yml 所指定的类型和名称删除 pod
cat pod.json | kubectl delete -f -# 删除名为“foo”和“bar”的 pod 和 service
kubectl delete pod,service foo bar# 删除 Label 标签名为 name = myLabel 的 pod 和 service
kubectl delete pods,services -l name=myLabel# 强制删除 dead node上 的 pod
kubectl delete pod foo --grace-period=0 --force# 删除所有 pod
kubectl delete pods --all

kubectl rollout

对资源进行管理,可用资源包括:deployments daemonsets

包含下列子命令:

  • history(查看历史版本)

  • pause(暂停资源)

  • resume(恢复暂停资源)

  • status(查看资源状态)

  • undo(回滚版本)

语法:

kubectl rollout SUBCOMMAND

示例:

# 查看 deployment 的历史记录
kubectl rollout history deployment/abc# 查看 daemonset 修订版 revision=3 的详细信息
kubectl rollout history daemonset/abc --revision=3# 将 deployment 标记为暂停。只要 deployment 在暂停中,使用 deployment 更新将不会生效。
kubectl rollout pause deployment/nginx# 恢复已暂停的 deployment
kubectl rollout resume deployment/nginx# 查看 deployment 的状态
kubectl rollout status deployment/nginx# 回滚到之前的 deployment 版本
kubectl rollout undo deployment/abc
kubectl rollout undo --dry-run=true deployment/abc# 回滚到 daemonset 修订 revision=3 版本
kubectl rollout undo daemonset/abc --to-revision=3# 将名为 foo 中的 pod 副本数设置为 3
kubectl scale --replicas=3 rs/foo# 将由“foo.yaml”配置文件中指定的资源对象和名称标识的 Pod 资源副本设为 3
kubectl scale --replicas=3 -f foo.yaml# 如果 mysql 当前副本数为 2,则将其扩展至 3
kubectl scale --current-replicas=2 --replicas=3 deployment/mysql# 设置多个 RC 中 Pod 副本数量
kubectl scale --replicas=5 rc/foo rc/bar

kubectl describe

输出指定的一个/多个资源的详细信息,此命令组合调用多条 API,输出指定的一个或者一组资源的详细描述。

语法:

kubectl describe (-f FILENAME | TYPE [NAME_PREFIX | -l label] | TYPE/NAME)

示例:

# 描述一个 node
kubectl describe nodes kubernetes-minion-emt8.c.myproject.internal# 描述一个 pod
kubectl describe pods/nginx# 描述 pod.yml 中的资源类型和名称指定的 pod
kubectl describe -f pod.yml# 描述所有的 pod
kubectl describe pods# 描述所有包含 label 标签名为 name=myLabel 的 pod
kubectl describe po -l name=myLabel# 描述所有被 replication controller “frontend” 管理的 pod(rc 创建的 pod 都以 rc 的名字作为前缀)
kubectl describe pods frontend

kubectl logs

输出 pod 中一个容器的日志,如果 pod 只包含一个容器则可以省略容器名。

语法:

kubectl logs [-f] [-p] POD [-c CONTAINER]

示例:

# 返回仅包含一个容器的 pod nginx 的日志快照
kubectl logs nginx# 返回 pod ruby 中已经停止的容器 web-1 的日志快照
kubectl logs -p -c ruby 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

kubectl exec

在容器内部执行命令。

语法:

kubectl exec POD [-c CONTAINER] -- COMMAND [args...]

示例:

# 默认在 pod 123456-abcd 的第一个容器中运行“date”并获取输出
kubectl exec 123456-abcd date# 在 pod 123456-abcd 的容器 ruby-container 中运行“date”并获取输出
kubectl exec 123456-abcd -c ruby-container date# 切换到终端模式,将控制台输入发送到 pod 123456-abcd 的 ruby-container 的“bash”命令,并将其输出到控制台/错误控制台的信息发送回客户端
kubectl exec 123456-abcd -c ruby-container -i -t -- bash -il

kubectl apply

通过配置文件名或 stdin 创建一个集群资源对象。支持 JSON 和 YAML 格式的文件。

语法:

kubectl apply -f FILENAME

示例:

# 通过 pod.yml 文件创建一个 pod
kubectl apply -f ./pod.yml# 通过 stdin 的 yml 创建一个 pod
cat pod.yml | kubectl apply -f -

使用 kubectl create 和 kubectl apply 创建资源对象的区别

kubectl applykubectl create
根据 yaml 文件中包含的字段(yaml 文件可以只写需要改动的字段),直接升级集群中的现有资源对象首先删除集群中现有的所有资源,然后重新根据 yaml 文件(必须是完整的配置信息)生成新的资源对象
yaml 文件可以不完整,只写需要的字段yaml 文件必须是完整的配置字段内容
kubectl apply 只工作在 yaml 文件中的某些改动过的字段kubectl create 工作在 yaml 文件中的所有字段
在只改动了 yaml 文件中的某些声明时,而不是全部改动,你可以使用 kubectl apply在没有改动 yaml 文件时,使用同一个 yaml 文件执行命令 kubectl replace,将不会成功(fail 掉),因为缺少相关改动信息

kubectl label

更新(增加、修改或删除)资源上的 label(标签)。label 必须以字母或数字开头,可以使用字母、数字、连字符、点和下划线,最长63个字符。如果 --overwrite 为 true,则可以覆盖已有的 label,否则尝试覆盖 label 将会报错。如果指定了 --resource-version,则更新将使用此资源版本,否则将使用现有的资源版本。

语法:

kubectl label [--overwrite] (-f FILENAME | TYPE NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--resource-version=version]

示例:

# 给名为 foo 的 Pod 添加 label unhealthy=true
kubectl label pods foo unhealthy=true# 给名为 foo 的 Pod 修改 label 为 ‘status’ 的 value 值 ‘unhealthy’,且覆盖现有的 value
kubectl label --overwrite pods foo status=unhealthy# 给 namespace 中的所有 pod 添加 label
kubectl label pods --all status=unhealthy# 仅当 resource-version=1 时才更新名为 foo 的 Pod 上的 label
kubectl label pods foo status=unhealthy --resource-version=1# 删除名为 “bar” 的 label(使用“ - ”减号相连)
kubectl label pods foo bar-

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

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

相关文章

openEuler系统安装Visual Studio Code

openEuler系统安装Visual Studio Code 背景安装密钥和存储库更新包缓存并使用dnf安装包Fedora 22及以上版本旧版本使用yum 安装过程截图安装成功看桌面效果 背景 openEuler(openEuler-24.03-LTS)安装了麒麟UKUI桌面但是没有麒麟软件商店想安装Visual Studio Code 安装密钥和…

专业剪辑新选择!2024年TOP榜达芬奇剪辑软件VS三大劲敌的较量

到了2024年,科技飞快地进步,视频剪辑这一块儿也变了不少。老的剪辑方法一直被刷新,新的软件一个接一个冒出来,像达芬奇剪辑软件这样的,都成了拍视频的人的好伙伴。咱们今天就来聊聊这几款软件有啥神奇的,比…

安全基础学习-RC4加密算法

这里仅仅记录一些基础的概念。后期有需求进一步扩展。 RC4 是一种对称流加密算法,由罗恩里维斯特(Ron Rivest)于1987年设计。RC4 的设计目的是提供一种简单且高效的加密方法。尽管 RC4 曾经广泛使用,但它的安全性在现代已受到质疑…

Modbus 通信协议详解

目录 一、概述二、Modbus 的作用三、Modbus 的工作原理1、四种数据类型2、三种工作模式3、三类功能码3.1 标志功能码3.2 Modbus 封装接口3.3 异常 4、Modbus 协议层4.1 协议数据单元4.2 访问数据4.3 数据模型寻址4.3.1 数据寻址范围4.3.2 数据地址起始值 4.4 大数据类型4.4.1 位…

Java面试题———分布式篇

目录 1、什么是分布式事务 2、什么是CAP理论 3、为什么分布式系统中无法同时AC 4、什么是BASE理论 5、分布式事务的解决方案有哪些 6、Seata的架构是什么 7、XA模式的工作流程是什么 8、AT模型的工作原理是什么 9、TCC模型的工作原理是什么 1、什么是分布式事务 在分…

java:实现简单的验证码功能

效果 实现思路 验证码图片的url由后端的一个Controller生成,前端请求这个Controller接口的时候根据当前时间生成一个uuid,并把这个uuid在前端使用localStorage缓存起来,下一次还是从缓存中获取。 Controller生成验证码之后,把前…

spring-boot-3.2.6+spring-security-6.2.4+oauth2整合github示例

一、添加依赖 在 pom.xml 中添加如下依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"h…

【GD32】从零开始学GD32单片机 | PMU电源管理单元+深度睡眠和待机例程(GD32F470ZGT6)

1. 简介 PMU电源管理单元通俗讲就是用来管理MCU的电源域的&#xff0c;它主要有两个功能——电压监测和低功耗管理。在GD32中一共有3个电源域——VDD/VDDA域、1.2V域和备份域。 VDD/VDDA域主要供PMU控制器、ADC、DAC等外设使用&#xff1b;1.2V域就是大部分外设都会使用的电源域…

西安电子科技大学萌新智慧指南(校区篇)

本次是西安电子科技大学南校区【本部南校区】 刚刚进入校园 相信大家对校园环境还很陌生 接下来就用一张地图 带大家迅速了解一下南校区的构造 宿舍 学生宿舍主要分为三部分 竹园公寓 1-4 海棠公寓 5-10 丁香公寓 11-15 研究生们主要居住在 海棠续建5、丁香14、丁香1…

24年日语能力(JLPT)考试报名流程图解

报名方式 搜索JLPT中国教育考试网&#xff0c;在线报名&#xff0c;一般学生党从教育网入口登录&#xff0c;社会人士从公网入口登录 报名时间 N1-N5 8月20日 7:00 - 8月27日14:00 注册时间 8月13日7:00 - 8月27日14:00 报名步骤 阅读报考提示&#xff0c;注册个人信息→…

C++适配windows和linux下网络编程TCP简单案例

C网络编程 网络协议是计算机网络中通信双方必须遵循的一套规则和约定&#xff0c;用于实现数据的传输、处理和控制。这些规则包括了数据格式、数据交换顺序、数据处理方式、错误检测和纠正等。网络协议是使不同类型的计算机和网络设备能够相互通信的基础&#xff0c;是网络通信…

c语言中比较特殊的输入函数

目录 一.getchar()函数 1.基本功能 2.使用方法 (1).读取单个字符 (2).读取多个字符&#xff08;直到遇到换行符&#xff09; (3).处理输入中的空白字符 3.返回值 4.应用场景 5.注意事项 二.fgets()函数 1.函数原型 2.工作原理 3.使用示例 (1).从标准输入读取一行…

HarmonyOS NEXT - 通过 module 模块化引用公共组件和utils

demo 地址: https://github.com/iotjin/JhHarmonyDemo 代码不定时更新&#xff0c;请前往github查看最新代码 HarmonyOS NEXT 一、HAP & HSP & HAR介绍HAP官方介绍HAR官方介绍HSP官方介绍怎么理解App、HAP、HAR的关系HAR如何转换为HSPHSP模块如何快速切换成HAR模块 二…

PDF转markdown工具:magic-pdf

1. magic-pdf 环境安装 conda create -n MinerU python3.10 conda activate MinerU pip install boto3>1.28.43 -i https://pypi.tuna.tsinghua.edu.cn/simple/ pip install magic-pdf[full]0.7.0b1 --extra-index-url https://wheels.myhloli.com -i https://pypi.tuna.t…

《深入浅出多模态》(八)多模态经典模型:MiniGPTv4

🎉AI学习星球推荐: GoAI的学习社区 知识星球是一个致力于提供《机器学习 | 深度学习 | CV | NLP | 大模型 | 多模态 | AIGC 》各个最新AI方向综述、论文等成体系的学习资料,配有全面而有深度的专栏内容,包括不限于 前沿论文解读、资料共享、行业最新动态以、实践教程、求职…

【el-table】横向滚动条加粗后,滚动到固定列下被遮挡,已解决

横向滚动条按要求加粗后&#xff0c;遇到的问题&#xff1a;列表的操作列是固定在最右侧的&#xff0c;当滚动条滑动到最右侧的时候&#xff0c;滚动条被遮挡了 我尝试了几种方法都不行&#xff0c;比如找到.el-table__fixed-right .el-table__fixed-footer-wrapper &#xff…

智能监控,无忧仓储:EasyCVR视频汇聚+AI智能分享技术为药品仓库安全保驾护航

随着科技的飞速发展&#xff0c;药品仓库的安全管理正迎来前所未有的变革。药品作为直接关系到公众健康的重要物资&#xff0c;其安全存储和监管显得尤为重要。在这个背景下&#xff0c;视频汇聚平台EasyCVR视频智能管理系统的应用&#xff0c;为药品仓库的安全监管提供了强有力…

el-tree树状控件,定位到选中的节点的位置

效果图 在el-tree 控件加 :render-content"renderContent" 在掉接口的方法中 实际有用的是setTimeout 方法和this.$refs.xxxxxx.setCheckedKeys([industrycodeList]) if(res.data.swindustrylist.length>0){res.data.swindustrylist.forEach(item > {industry…

Ubuntu | 解决 VMware 中 Ubuntu 虚拟机磁盘空间不足问题

目录 一、存在的问题二、解决的步骤第一步&#xff1a;扩展磁盘空间第二步&#xff1a;查看磁盘空间使用情况第三步&#xff1a;安装分区工具第四步&#xff1a;启动分区工具第五步&#xff1a;修改挂载文件夹的读写权限第六步&#xff1a;扩展文件系统大小第七步&#xff1a;验…

【文献阅读】2024 DAVE 基于密度检测

摘要、图、模型架构 提出什么模块 解决什么问题 摘要 Low-shot counters estimate the number of objects corresponding to a selected category, based on only few or no exemplars annotated in the image. The current state-ofthe-art estimates the total counts as th…