五 配置清单使用
五 配置清单使用
apiserver 仅接收 json 格式的资源定义,yaml 格式定义提供的配置清单,apiserver 可自动将其转换为 json 格式,而后再进行执行。
5.1 可配置的对象
- 可用资源清单配置的对象
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 配置清单组成
- 配置清单组成部分,大部分资源使用配置清单方式来创建
apiVersion # 以 "group/version" 形式指明,这个对象属于哪个 API 组(版本)kind: # 资源类别,标记创建什么类型的资源metadata: # 元数据内部是嵌套的字段 # 定义了资源对象的名称、命名空间(k8s级别的不是系统的)等、标签、注解等spec: # 规范定义资源应该拥有什么样的特性,依靠控制器确保特性能够被满足 # 它是用户定义的所期望了资源状态status: # 显示资源的当前状态,k8s 就是确保当前状态向目标状态无限靠近从而满足用户期望 # 它是只读的,代表了资源当前状态
- 获取全部的 api 版本
kubectl api-versions
- 获取全部的 api 资源对象
从内容可以看到一些缩写,方便我们日常命令后简写
kubectl api-resources
kubectl get po # 查看podkubectl get deploy # 查看deploymentkubectl get svc # 查看servicekubectl get cm # 查看 configmap...
5.3 获取清单帮助
- 查看 k8s 某个内置对象的配置清单格式,应该包含哪些字段,使用 . 来显示字段的格式帮助信息
kubectl explain podskubectl explain pods.metadata
5.4 清单基本格式
- 定义一个资源清单
apiVersion: v1kind: Podmetadata: name: pod-deme namespace: default labels: app: myapp tier: frontendspec: 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
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
kubectl create -f pod-demo.yaml
5.7 delete 删除
- 删除资源清单中定义的 POD
kubectl delete -f pod-demo.yaml
5.8 apply 创建或更新
apply 可以执行多次,如果发现文件不同,则更新
kubectl apply -f pod-demo.yaml