Kubernetes支持YAML和JSON格式创建资源对象
JSON格式用于接口之间消息的传递(适合二次开发)
YAML格式用于配置和管理(适合运维)
YAML是一种简洁的非标记性语言,语法格式
:
使用缩进标识层级关系
不支持制表符tab缩进,使用空格缩进(相同层级的元素要左对齐)
通常开头缩进两个空格
字符后缩进一个空格(如冒号、逗号、短横杠等)
“—”表示YAML格式,一个文件的开始
“#”表示注释
如果包含特殊字符用单引号引起来
布尔值必须用引号括起来
在写yaml文件中第一个就要先写版本标签
[root@master01 ~]# kubectl api-versions
admissionregistration.k8s.io/v1beta1
apiextensions.k8s.io/v1beta1
apiregistration.k8s.io/v1
apiregistration.k8s.io/v1beta1
apps/v1
apps/v1beta1
apps/v1beta2
authentication.k8s.io/v1
authentication.k8s.io/v1beta1
authorization.k8s.io/v1
authorization.k8s.io/v1beta1
autoscaling/v1
autoscaling/v2beta1
autoscaling/v2beta2
batch/v1
batch/v1beta1
certificates.k8s.io/v1beta1
coordination.k8s.io/v1beta1
events.k8s.io/v1beta1
extensions/v1beta1
networking.k8s.io/v1
policy/v1beta1
rbac.authorization.k8s.io/v1
rbac.authorization.k8s.io/v1beta1
scheduling.k8s.io/v1beta1
storage.k8s.io/v1
storage.k8s.io/v1beta1
v1
① 创建目录
[root@master01 ~]# mkdir demo
② 创建nginx-deployment.yaml文件
[root@master01 ~]# cd demo/
[root@master01 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文件创建资源
[root@master01 demo]# kubectl create -f nginx-deployment.yaml
③ 查看资源
[root@master01 demo]# kubectl get pods
④ 发布
#创建ginx-service.yaml文件
[root@master01 demo]# 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资源(对外提供访问)
[root@master01 demo]# kubectl create -f nginx-service.yaml
#查看service资源
[root@master01 demo]# kubectl get svc
#自动测试命令的正确性,并不执行创建
语法验证,自动测试命令的正确性,并不去执行创建
[root@master01 demo]# kubectl run nginx-deployment --image=nginx --port=80 --replicas=3 --dry-run
两种方式:
1、新创建(可以使用命令生成模板)
2、基于已有资源生成模板
① 新创建
#查看生成yaml格式
[root@master01 demo]# kubectl run nginx-deployment --image=nginx --port=80 --replicas=3 --dry-run -o yaml
#将模板导出并命名为my-deployment.yaml
可以将生成的模板进行更改使用
[root@master01 demo]# kubectl run nginx-deployment --image=nginx --port=80 --replicas=3 --dry-run -o yaml > my-deployment.yaml
② 基于已有资源生成模板
#将现有的资源生成模板并导出命名为test-nginx.yaml
[root@master01 demo]# kubectl get deploy/nginx --export -o yaml > test-nginx.yaml
#查看生成json格式
[root@master01 demo]# kubectl run nginx-deployment --image=nginx --port=80 --replicas=3 --dry-run -o json
③ 查看某字段帮助信息:explain
例如:查看containers的帮助信息
[root@master01 demo]# kubectl explain pods.spec.containers