kubectl使用方法及常用命令小结
Kubectl 是一个命令行接口,用于对 Kubernetes 集群运行命令。kubectl 在 $HOME/.kube 目录中寻找一个名为 config 的文件。
kubectl安装方法详见:https://www.cnblogs.com/shadow-yin/p/14843099.html
1. 基本语法
使用以下语法 kubectl 从终端窗口运行命令:
kubectl [command] [TYPE] [NAME] [flags]
其中 command、TYPE、NAME 和 flags 分别是:
command:指定要对一个或多个资源执行的操作,例如create、get、describe、delete。TYPE:指定资源类型。资源类型不区分大小写,可以指定单数、复数或缩写形式。例如,以下命令输出相同的结果:
```shell
kubectl get pod pod1
kubectl get pods pod1
kubectl get po pod1
```
NAME:指定资源的名称。名称区分大小写。如果省略名称,则显示所有资源的详细信息kubectl get pods。
在对多个资源执行操作时,您可以按类型和名称指定每个资源,或指定一个或多个文件:- 要按类型和名称指定资源:
- 要对所有类型相同的资源进行分组,请执行以下操作:
TYPE1 name1 name2 name<#>。
例子:kubectl get pod example-pod1 example-pod2 - 分别指定多个资源类型:
TYPE1/name1 TYPE1/name2 TYPE2/name3 TYPE<#>/name<#>。
例子:kubectl get pod/example-pod1 replicationcontroller/example-rc1
- 用一个或多个文件指定资源:
-f file1 -f file2 -f file<#>
- 使用 YAML 而不是 JSON 因为 YAML 更容易使用,特别是用于配置文件时。
例子:kubectl get pod -f ./pod.yaml
flags: 指定可选的参数。例如,可以使用-s或-server参数指定 Kubernetes API 服务器的地址和端口。
注意:
从命令行指定的参数会覆盖默认值和任何相应的环境变量。
如果您需要帮助,只需从终端窗口运行 kubectl help 即可。
注:以上内容摘自https://kubernetes.io/zh/docs/reference/kubectl/overview/
2. 查看型命令
指定命名空间(namespace)查看集群内的pod:
kubectl get pods -n test-namespace (-n test-namespace表示指定test-namespace这个命名空间)
显示pod的更多信息:
kubectl get pods -n test-namespace -o wide (比上一条命令能显示更多的pod信息)
以yaml格式显示pod详细信息:
kubectl get pods -n test-namespace -o yaml (能显示pod的详细信息,以yaml格式输出在屏幕上)
以json格式显示pod详细信息:
kubectl get pods -n test-namespace -o json (能显示pod的详细信息,以json格式输出在屏幕上)
指定pod名称显示其信息
kubectl get pods -n test-namespace xxx (xxx为pod名称,后跟-o wide 或者 -o yaml则显示该pod的详细信息。一般用法是先用kubectl get pods -n test-namespace查看所有pod名称,然后使用指定名称的方式来查看特定pod的详细信息)
查看pod详细信息:
kubectl describe pods -n test-namespace xxx (xxx是pod名称。该命令与之前几条命令不同之处在于它会显示pod的所有配置信息,显示运行状态,甚至还包括pod运行产生的事件,可用于产生故障时定位问题。不跟pod名称会显示命名空间下所有的pod信息,一般都需要后跟pod名称,以单独显示指定pod的信息)
注:以上命令是查看pod类型资源的命令,将pods替换成其他资源类型则可以查看相应资源的信息。Kubernetes的所有资源信息可以通过命如下查看:
kubectl api-resources
查看pod的log日志:
kubectl logs xxx -n test-namespace
(xxx为pod名称)
查看所有具有某一标签的pod:
kubectl get pods -n test-namespace -l alibabacloud.com/rd-app=cdn-bind (-l选项用于指定标签,alibabacloud.com/rd-app=cdn-bind表示alibabacloud.com/rd-app这个标签的值为“cdn-bind”)
查看所有命名空间下的pod:
kubectl get pods --all-namespaces (--all-namespaces集群内所有的已创建的命名空间)
3. 创建型命令
要使用创建型的命令,一般都是先使用yaml格式的文件定义一个资源,然后在命令中指定yaml文件名称来创建相应的资源。yaml文件可以保存在本地(运行kubectl工具的机器)的任意位置,如果不是在当前目录,命令中需要指定yaml文件所在位置。
yaml文件示例:
apiVersion: v1
kind: Service
metadata:
labels:
XXXX.com/rd-tenant: CDN
name: test-cdn-svc-cm-agent-1XXX
namespace: test-namespace
spec:
ports:
- name: test-cdn-cm-agent-1
port: 3400
protocol: TCP
targetPort: 3400
selector:
alibabacloud.com/rd-app: cdn-cdncm-agent
alibabacloud.com/rd-app-cluster: test-node
alibabacloud.com/rd-tenant: CDN
sessionAffinity: None
type: ClusterIP
status:
loadBalancer: {}
以上yaml文件定义了一个类型(kind)为Service的资源。在metadata中为其打上了一系列的标签,指定了其名称(该名称在命名空间内唯一),指定其所属的命名空间。然后在spec中指定了该服务的名称,端口。selector的作用是为了提供该服务需要选择具有什么标签的pod(pod是提供服务的实体)。将该yaml格式文件保存为文件名svc.yaml。则创建该资源可以用如下的命令:
kubectl apply -f svc.yaml
或者:
kubectl create -f svc.yaml
两条命令的区别如下表:
|
序号 |
kubectl apply |
kubectl create |
|
1 |
根据yaml文件中包含的字段(yaml文件可以只写需要改动的字段),直接升级集群中的现有资源对象 |
首先删除集群中现有的所有资源,然后重新根据yaml文件(必须是完整的配置信息)生成新的资源对象 |
|
2 |
yaml文件可以不完整,只写需要的字段 |
yaml文件必须是完整的配置字段内容 |
|
3 |
kubectl apply只工作在yaml文件中的某些改动过的字段 |
kubectl create工作在yaml文件中的所有字段 |
|
4 |
在只改动了yaml文件中的某些声明时,而不是全部改动,你可以使用kubectl apply |
在没有改动yaml文件时,使用同一个yaml文件执行命令kubectl replace,将不会成功(fail掉),因为缺少相关改动信息 |
建议使用apply,这种方法如果资源部存在就会创建,如果存在,则比较已经存在的资源与新定义的资源的不同点,将不同点替换。该命令可用于修改已有资源除资源名称外(因为资源名称是命名空间中同类型资源的唯一标识)的一些属性。
4. 更新型命令
上一节提到apply命令同样可用于更新资源的属性。但是也还有其他命令用于更新资源的属性。
在线编辑资源属性:
kubectl edit pods xxx -n test-namespace (xxx表示pod名称。执行该命令后会弹出当前pod的属性编辑界面,在上面直接修改资源属性,然后保存退出,即完成资源更新操作)
给pod添加标签:
kubectl label pods -n test-namespace xxx alibabacloud.com/rd-app=cdn-bind (xxx表示pod名称。该命令表示给pod添加alibabacloud.com/rd-app标签,标签的值为“cdn-bind”。该命令执行时,pod的原有标签必须不存在alibabacloud.com/rd-app这个标签,否则添加失败)
修改pod标签:
kubectl label pods -n test-namespace xxx alibabacloud.com/rd-app=cdn-bind --overwrite=true (如果pod已经存在alibabacloud.com/rd-app这个标签,需要修改为其他值,则需要在后面添加--overwrite=true )
5. 删除型命令
使用定义资源是的yaml文件删除资源:
kubectl delete -f svc.yaml (svc.yaml文件是前述用于定义service的文件,将apply或者create换成delete即是删除该资源(service),使用该命令是,不需要指定命名空间,因为在yaml文件中已经指定了命名空间)
使用资源名称删除资源:
kubectl delete services test-cdn-svc-cm-agent-1 -n test-namespace (test-cdn-svc-cm-agent-1是已经创建的service名称。该命令必须指定命名空间。该命令的用法一般是先用get命令获取到资源的名称,然后在指定名称删除资源)
kubectl使用方法及常用命令小结的更多相关文章
- [转]MySQL数据库备份和还原的常用命令小结
MySQL数据库备份和还原的常用命令小结,学习mysql的朋友可以参考下: 备份MySQL数据库的命令 mysqldump -hhostname -uusername -ppassword datab ...
- [转帖]Windows批处理(cmd/bat)常用命令小结
Windows批处理(cmd/bat)常用命令小结 非常值得学习的文档 先放这里 有时间做实验, 转载自:“趣IT”微信公共号 前言 批处理文件(batch file)包含一系列 DOS命令,通常用于 ...
- pip 常用命令小结
pip 常用命令小结 pip这个工具我们经常会用到,毕竟python 是一门以第三方库庞大而著名的编程语言,所以我们总会用pip 安装一些依赖库,当然这只是pip 最常用的一个命令,下面就来介绍一下 ...
- Linux 最常用命令小结
1. 文件共享 1).将windows 系统下的文件夹共享到linux的方法: 安装filezilla,设置连接linux 服务器.将文件上传. 2).mRemote 机器连接管理 2. 文件管理命令 ...
- MySQL 数据库常用命令小结
MySQL 数据库常用命令 1.MySQL常用命令 create database name; 创建数据库 use databasename; 选择数据库 drop database name 直接删 ...
- Linux 常用命令小结
学习脚本几天了,总结下linux debian下脚本常用命令. Linux 1.添加删除账户 useradd / userdel 2.修改"张三"密码 passwd 张 ...
- Windows批处理(cmd/bat)常用命令小结
转载自:“趣IT”微信公共号 前言 批处理文件(batch file)包含一系列 DOS命令,通常用于自动执行重复性任务.用户只需双击批处理文件便可执行任务,而无需重复输入相同指令.编写批处理文件非常 ...
- git常用命令小结
1.ssh连接方式 公钥生成ssh-keygen -t rsa -C "764432054@qq.com"在用户家目录下的.ssh目录下生成 id_rsa ,id_rsa.pub ...
- 查看mysql版本的四种方法及常用命令
1:在终端下:mysql -V或mysql -Version. 以下是代码片段: [shengting@login ~]$ mysql -V mysql Ver 14.7 Distrib 4.1.10 ...
- DB2 常用命令小结
. 打开命令行窗口 #db2cmd . 打开控制中心 # db2cmd db2cc . 打开命令编辑器 db2cmd db2ce =====操作数据库命令===== . 启动数据库实例 #db2sta ...
随机推荐
- 活动 | Cloud Ace 受邀参加中国智造出海数字科技峰会
[Cloud Ace 是谷歌云全球战略合作伙伴,拥有 200 多名工程师,也是谷歌最高级别合作伙伴,多次获得 Google Cloud 合作伙伴奖. 作为谷歌托管服务商,我们提供谷歌云.谷歌地图.谷歌 ...
- GIS空间分析和建模复习重点4
27.三维地形分析的方法 常用的有 ·坡度分析 ·坡向分布 ·填挖方分析 ·山体阴影分析 ·通视分析 28.空间分析实际应用 (1)城市应急避难场所是城市防灾减灾规划的重要组成部分,应急避难场所的建设 ...
- 230219 Business 1-30
1: Packing for a Business TripWhat should I bring on this business trip?Haven't you been on a busine ...
- APP学习3
1. 常见控件 Button控件 继承自TextView控件,既可以显示文本,又可以显示图片,同时也允许用户通过点击来执行操作,点击效果. onClick属性:先在layout文件中指定onClick ...
- superset2.0.0 支持MaxCompute 时间颗粒
编译的时候需要在superset/superset/db_engine_specs以下路径增加一个 odps.py的文件 # Licensed to the Apache Software Found ...
- comment out one line in the file with sed
sed -i "/test2/s/^/#/" test.log https://jaminzhang.github.io/linux/sed-command-usage-summa ...
- Cesium测量优化1
简介:优化绘制点.线,面鼠标位置获取精度.支持3dties,gltf model,以及box等Geometry Entity上的位置拾取. 测试代码 <template> <div ...
- CAD轴测图怎么画?快来试试浩辰CAD超级轴测命令!
很多新手设计师小伙伴,不知道CAD轴测图怎么画?其实很简单,浩辰CAD中的超级轴测功能,可以方便地将CAD平面图转化为轴侧图,是绘制管线系统图的好帮手.今天就和小编一起来看看在浩辰CAD软件中通过调用 ...
- vue高级进阶( 二 ) 8种组件通信详解
vue高级进阶( 二 ) 8种组件通信详解 猛兽总是独行,牛羊才成群结队. -------鲁迅 vue组件通信的重要性无需多言...但是你肯定没有全部掌握,所以这第二篇文章应运而生 props和$ ...
- ubuntu 逻辑卷增加磁盘
使用lv* 相关的命令 lvdisplay lvscan ACTIVE '/dev/ubuntu-vg/ubuntu-lv' [<74.00 GiB] inherit lv ...