一、YAML文件格式说明
二、YAML文件管理资源对象
解释:
apiVersion - 以官方demo的apiVersion为准,官方文档示例一直保持最新的版本。
也可以通过api-versions查看当前api支持的版本
命令:kubectl api-versions
kind - 资源类型
可以通过api-resources查看都有哪些资源类型
最后一列就是写在kind处对应的资源类型。
apiVersion: apps/v1 #api版本
kind: Deployment #资源类型
metadata:
name: web #资源名称
namespace: default #命名空间
spec: #资源规格
replicas: 3 #副本数量
selector:
matchLabels:
app: web #选择器标签,可以有多个
template: #pod模版
metadata: #pod元数据
labels:
app: web #pod标签,唯一,要与选择器标签一一对应
spec: #pod规格
containers: #容器配置
- name: web
image: lizhenliang/java-demo
apiVersion:v1 #api版本
kind: Service #资源类型
metadata: #元数据
name:web #资源的名字,在同一个namespace中必须唯一
namespace: default #部署在哪个namespace中。不指定时默认为default命名空间
spec:
posts:
- port: 80 #服务监听的端口号
protocol: TCP #端口协议,支持TCP或UDP,默认TCP
targetPort: 80 #容器暴露的端口
selector: #选择器。选择具有指定label标签的pod作为管理范围
app: web
type: NodePort #当type=NodePort时,指定映射到物理机的端口号
kubectl create命令与kubectl apply -f 区别:
相同点:
1.都可以创建资源;
不同点:
create可以创建各种资源以及支持各种创建格式(json、yaml以及命令行),而apply主要是通过yaml创建资源以及更新。
建议:create一般用于初次创建资源,已经创建过,再使用create命令创建会报错。
三、YAML文件中字段太多,记不住怎么办
技巧:
方式一:创建一个资源(但并不实际创建),然后导出
删除web2.yaml导出的多余字段
修改后
导出的web2_expose,同样可以修改成一个新的Service。
修改前:
修改后:
然后继续创建新的Service就好了。
注意:这种先通过create再导出yaml的方式,还要看kubectl是否支持你当前需要创建的资源,不支持也是不行的。
把-o yaml 的yaml换成 json, 就可以导出JSON格式的文件,一般json主要用于传输对接yaml信息用的,正常主要用yaml执行kube操作。
方式二:
通过get命令导出一个资源。
编辑java-demo_deployment-export.yaml
修改前:
修改后:
注:通过get方式导出yaml,就比较通用了。
Pod容器的字段拼写忘记了?