YAML语法规范;在kubernetes k8s中如何通过yaml文件创建pod,以及pod常用字段详解
YAML 语法规范
K8S 里所有的资源或者配置都可以用 yaml 或 Json 定义。YAML 是一个 JSON 的超集,任何有效的 JSON 文件也都是一个有效的YAML文件。
通过yaml创建nginx pod对象
yaml文件
在Kubernetes的 yaml文件中,最好不要出现下划线,可以有中横线。
1 [root@k8s-master test]# pwd
2 /root/k8s_practice/test3 [root@k8s-master test]# catnginx_demo.yaml4 apiVersion: v15 kind: Pod6 metadata:7 name: nginx-demo8 namespace: default9 labels:10 k8s-app: nginx11 environment: dev12 annotations:13 name: nginx-demo14 spec:15 containers:16 -name: nginx17 image: registry.cn-beijing.aliyuncs.com/google_registry/nginx:1.17
18 imagePullPolicy: IfNotPresent19 ports:20 -name: httpd21 containerPort: 80
22 #除非绝对必要,否则不要为 Pod 指定 hostPort。 将 Pod 绑定到hostPort时,它会限制 Pod 可以调度的位置数23 #DaemonSet 中的 Pod 可以使用 hostPort,从而可以通过节点 IP 访问到 Pod;因为DaemonSet模式下Pod不会被调度到其他节点。24 #一般情况下 containerPort与hostPort值相同25 hostPort: 8090 #可以通过宿主机+hostPort的方式访问该Pod。例如:pod在/调度到了k8s-node02【172.16.1.112】,那么该Pod可以通过172.16.1.112:8090方式进行访问。26 protocol: TCP27 volumeMounts: #定义容器挂载内容28 - name: nginx-site #使用的存储卷名称,跟下面volume字段的某个name值相同,这里表示使用volume的nginx-site这个存储卷29 mountPath: /usr/share/nginx/html #挂载至容器中哪个目录30 readOnly: false#读写挂载方式,默认为读写模式false31 - name: nginx-log32 mountPath: /var/log/nginx/
33 readOnly: false
34 volumes: #volumes字段定义了paues容器关联的宿主机或分布式文件系统存储卷35 - name: nginx-site #存储卷名称36 hostPath: #路径,为宿主机存储路径37 path: /data/volumes/nginx/html/#在宿主机上目录的路径38 type: DirectoryOrCreate #定义类型,这表示如果宿主机没有此目录,则会自动创建39 - name: nginx-log40 hostPath:41 path: /data/volumes/nginx/log/
42 type: DirectoryOrCreate
Pod常见操作
1 [root@k8s-master test]# pwd
2 /root/k8s_practice/test3 [root@k8s-master test]# ll4 total 4
5 -rw-r--r-- 1 root root 1317 Jul 29 16:42nginx_demo.yaml6 # 创建pod7 [root@k8s-master test]# kubectl apply -f nginx_demo.yaml8 pod/nginx-demo created9 # 查看pod。根据结果可见被调度到了 k8s-node02 节点10 [root@k8s-master test]# kubectl get pod -o wide # 或者 kubectl get pod -n default -o wide 因为名称空间为default11 NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES12 nginx-demo 1/1 Running 0 10s