文章目录
一、k8s支持的文件格式
Kubernetes支持YAML和JSON格式创建资源对象
JSON格式用于接口之间消息的传递
YAML格式用于配置和管理
YAML的配置参数格式比较清晰
二、语法格式
- 以空格的方式缩进标识层级关系
- 不支持制表符缩进(tab),使用空格缩进
- 通常开头缩进两个空格(统一层级对应即可)
- 字符后缩进一个空格,如冒号,逗号等
- “—”表示YAML格式,一个文件的开始
- 支持以“#”表示注释
1、查看资源版本标签
kubectl api-versions
2、创建yaml文件测试
2.1、编写 nginx-test.yaml 资源配置清单
① 创建目录
mkdir demo
② 创建nginx-deployment.yaml文件
cd demo/
vim nginx-deployment.yaml
#定义资源类型及描述
apiVersion: apps/v1 # apiVersion:语法关键字,注意大小写。apps/v1:版本标签
kind: Deployment #资源类型:deployment控制器
metadata: #资源的元数据
name: nginx-deployment #定义资源的名称,在同一个namespace中必须唯一
labels: #定义资源的标签
app: nginx
spec: #定义容器模板
replicas: 3 #定义副本数量
selector: #选择器
matchLabels: #匹配标签
app: nginx #匹配模板名称
template: #模板
metadata:
labels:
app: nginx
spec:
containers: #定义容器信息
- name: nginx #-:表示参数,容器名与标签名要相同
image: nginx:1.15.4 #容器使用的镜像以及版本
ports:
- containerPort: 80 #定义容器的对外端口
③ 使用yaml文件创建资源
kubectl create -f nginx-deployment.yaml
④ 查看资源
kubectl get pods
⑤ 发布
vim nginx-service.yaml
apiVersion: v1 #定义版本
kind: Service #类型
metadata: #信息描述
name: nginx-service #资源名称
labels: #标签
app: nginx
spec:
type: NodePort #发布的类型:NodePort
ports:
- port: 80 #内部端口
targetPort: 80 #映射指向的端口
selector: #选择器
app: nginx
#使用ginx-service.yaml文件创建service资源(对外提供访问)
kubectl create -f nginx-service.yaml
#查看service资源
kubectl get svc
⑥ 访问
#自动测试命令的正确性,并不执行创建
语法验证,自动测试命令的正确性,并不去执行创建
kubectl run nginx-deployment --image=nginx --port=80 --dry-run
3、生成yaml格式
两种方式:
1、新创建(可以使用命令生成模板)
2、基于已有资源生成模板
① 新创建
#查看生成yaml格式
kubectl run nginx-deployment --image=nginx --port=80 --dry-run -o yaml
4、查看生成json格式
可通过 -o json 查看该命令产生的 json 配置清单
kubectl run nginx-deployment --image=nginx --port=80 --dry-run -o json
5、使用 yaml 格式导出生成模板
kubectl create deployment dryrun-test --image=nginx --port=80 --replicas=3 --dry-run=client -o yaml > dryrun-test.yaml
6、使用 yaml 模板创建实例
kubectl apply -f dryrun-test.yaml
kubectl get pod,deploy
7、将现有资源生成 yaml 模板导出并保存为文件
kubectl get deploy/dryrun-test -o yaml
kubectl get deploy/dryrun-test -o yaml > export-test.yaml
8、查看字段帮助信息
explain 可一层层的查看相关资源对象的帮助信息
kubectl explain deployments.spec.template.spec.containers