Skip to content

五 配置清单使用

五 配置清单使用

apiserver 仅接收 json 格式的资源定义,yaml 格式定义提供的配置清单,apiserver 可自动将其转换为 json 格式,而后再进行执行。

5.1 可配置的对象

  • 可用资源清单配置的对象
Terminal window
workload:Pod、ReplicaSet、Deployment、StatefulSet、DaemonSet、Job、CronJob
服务发现及均衡:Service、Ingress
配置与存储:Volume、CSI
ConfigMap、Secret
DownwardAPI
集群级资源
Namespace、None、Role、ClusterRole、RoleBinding、ClusterRoleBinding
元数据类型资源
HPA、PodTemplate、LimitRange

5.2 配置清单组成

  • 配置清单组成部分,大部分资源使用配置清单方式来创建
Terminal window
apiVersion
# 以 "group/version" 形式指明,这个对象属于哪个 API 组(版本)
kind:
# 资源类别,标记创建什么类型的资源
metadata:
# 元数据内部是嵌套的字段
# 定义了资源对象的名称、命名空间(k8s级别的不是系统的)等、标签、注解等
spec:
# 规范定义资源应该拥有什么样的特性,依靠控制器确保特性能够被满足
# 它是用户定义的所期望了资源状态
status:
# 显示资源的当前状态,k8s 就是确保当前状态向目标状态无限靠近从而满足用户期望
# 它是只读的,代表了资源当前状态
  • 获取全部的 api 版本
Terminal window
kubectl api-versions
  • 获取全部的 api 资源对象

从内容可以看到一些缩写,方便我们日常命令后简写

Terminal window
kubectl api-resources
kubectl get po # 查看pod
kubectl get deploy # 查看deployment
kubectl get svc # 查看service
kubectl get cm # 查看 configmap
...

5.3 获取清单帮助

  • 查看 k8s 某个内置对象的配置清单格式,应该包含哪些字段,使用 . 来显示字段的格式帮助信息
Terminal window
kubectl explain pods
kubectl explain pods.metadata

5.4 清单基本格式

  • 定义一个资源清单
Terminal window
apiVersion: v1
kind: Pod
metadata:
name: pod-deme
namespace: default
labels:
app: myapp
tier: frontend
spec:
containers:
- name: myapp
image: ikubernetes/myapp:v1
- name: busybox
image: busybox:latest
command:
- "/bin/sh"
- "-c"
- "sleep 10"

5.5 快捷获取清单

  • 使用 -o 参数来指定对象数据的输出格式,使用 —dry-run 来测试性执行一个指令,它两个结合起来,就可以通过命令创建,且生成 yaml 格式配置文件了 -o yaml —dry-run
Terminal window
kubectl create secret docker-registry regsecret --docker-server=registry-vpc.cn-hangzhou.aliyuncs.com --docker-username=admin --docker-password=123456 --docker-email=420123641@qq.com -o yaml --dry-run

5.6 create 创建

  • 创建资源清单中的资源,这样创建的为裸 POD ,没有控制器管理,所以删除后不会自动重建,成为自主式 POD
Terminal window
kubectl create -f pod-demo.yaml

5.7 delete 删除

  • 删除资源清单中定义的 POD
Terminal window
kubectl delete -f pod-demo.yaml

5.8 apply 创建或更新

apply 可以执行多次,如果发现文件不同,则更新

Terminal window
kubectl apply -f pod-demo.yaml