命令行工具:kubectl
概述
kubectl 是 Kubernetes 集群的命令行工具,通过 kubectl 能够对集群本身进行管理,并能够在集群上进行容器化应用的安装部署
语法
kubectl [command] [TYPE] [NAME] [flags]
参数说明:
comand
:指定要对资源执行的操作,例如 create、get、describe 和 deletTYPE
:指定资源类型,资源类型是大小写敏感的,开发者能够以单数、复数和缩略的形式。例如:kubectl get pod pod1 kubectl get pod pod2 kubectl get pod pod3
NAME
:指定资源的名称,名称也大小写敏感的。如果省略名称,则会显示所有的资源,例如:kubectl get pods
flags
:指定可选的参数。例如,可用-s 或者–server 参数指定 Kubernetes APIserver 的地址和端口。
帮助命令(kubectl --help)
查看全部的命令
kubectl --help
查看具体某个操作的命令
kubectl get --help
kubectl 子命令使用分类
基础命令
基础命令 | create | 通过文件名或标准输入创建资源 |
expose | 将一个资源公开为一个新的Service | |
run | 在集群中运行一个特定的镜像 | |
set | 在对象上设置特定的功能 | |
get | 显示一个或多个资源 | |
explain | 文档参考资料 | |
edit | 使用默认的编辑器编辑一个资源。 | |
delete | 通过文件名、标准输入、资源名称或标签选择器来删除资源。 |
部署命令
部署命令 | rollout | 管理资源的发布 |
rolling-update | 对给定的复制控制器滚动更新 | |
scale | 扩容或缩容Pod数量,Deployment、ReplicaSet、RC或Job | |
autoscale | 创建一个自动选择扩容或缩容并设置Pod数量 |
集群管理命令
集群管理命令 | certificate | 修改证书资源 |
cluster-info | 显示集群信息 | |
top | 显示资源(CPU/Memory/Storage)使用。需要Heapster运行 | |
cordon | 标记节点不可调度 | |
uncordon | 标记节点可调度 | |
drain | 驱逐节点上的应用,准备下线维护 | |
taint | 修改节点taint标记 |
故障和调试命令
故障和调试命令 | describe | 显示特定资源或资源组的详细信息 |
logs | 在一个Pod中打印一个容器日志。如果Pod只有一个容器,容器名称是可选的 | |
attach | 附加到一个运行的容器 | |
exec | 执行命令到容器 | |
port-forward | 转发一个或多个本地端口到一个pod | |
proxy | 运行一个proxy到Kubernetes API server | |
cp | 拷贝文件或目录到容器中 | |
auth | 检查授权 |
设置命令
设置命令 | label | 更新资源上的标签 |
annotate | 更新资源上的注释 | |
completion | 用于实现kubect1工具自动补全 |
其他命令
高级命令 | apply | 通过文件名或标准输入对资源应用配置 |
patch | 使用补丁修改、更新资源的字段 | |
replace | 通过文件名或标准输入替换一个资源 | |
convert | 不同的API版本之间转换配置文件 | |
其他命令 | api-versions | 打印受支持的API版本 |
config | 修改kubeconfig文件(用于访问APl,比如配置认证信息) | |
help | 所有命令帮助 | |
plugin | 运行一个命令行插件 | |
version | 打印客户端和服务版本信息 |
之前使用的一些命令
资源编排(yaml)
k8s 集群中对资源管理和资源对象编排部署都可以通过声明样式(YAML)文件来解决,也就是可以把需要对资源对象操作编辑到 YAML 格式文件中,
yaml文件
YAML 基本语法
- 使用空格做为缩进
- 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
- 低版本缩进时不允许使用 Tab 键,只允许使用空格
- 使用#标识注释,从这个字符一直到行尾,都会被解释器忽略
- 使用—表示新的yaml文件开始
- 通过缩进表示层级关系
YAML 支持的数据结构
-
对象:键值对的集合,又称为映射(mapping) / 哈希(hashes) / 字典(dictionary
对象类型:对象的一组键值对,使用冒号结构表示
格式1Person: name: Tom age: 17
格式2:行内表示法
Person: {mame: Tome, age: 17}
-
数组:一组按次序排列的值,又称为序列(sequence) / 列表 (list)
数组类型:一组连词线开头的行,构成一个数组
格式1Person - Tome - Jack
格式2:行内表示法
Person: [Tom, Jack]
-
等。。。
k8s如何快速生成yaml文件
方式1:使用kubectl create命令生成yaml文件
不做真正的运行,只是将yaml内容生成输出,加上后面的这个参数即可: --dry-run
kubectl create xxx -o yaml --dry-run
如:下面去创建一个deployment的资源,名称为web,在这个yaml文件中添加nginx的镜像内容
kubectl create deployment web --image=nginx -o yaml --dry-run
运行后,便会将yaml文件内容展示到控制台
将生成的yaml文件输出到文件中,在其后面加上 > my1.yaml
方式2:使用kubectl get命令导出yaml文件
适用于部署好的项目,将部署好的项目生成yaml文件
将xxx这个部署好的项目,将其相关的内容导出为yaml文件,导出到xx2.yml文件
kubectl get deploy xxx -o=yaml --export > xx2.yaml
比如:将之前部署好的nginx生成yaml文件
kubectl get deploy nginx -o=yaml --export > my2.yaml