写点什么

Kubernetes 手记(5)- 配置清单使用

用户头像
雪雷
关注
发布于: 2021 年 06 月 08 日
Kubernetes手记(5)- 配置清单使用

五 配置清单使用

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
复制代码

5.9 patch 更新资源

patch 不同于 apply,改名了不需要对资源清单文件进行修改,可直接对资源对象字段进行更新,支持 JSON 和 YAML 格式。


使用 patch 更新 Node 节点。


kubectl patch node k8s-node-1 -p '{"spec":{"unschedulable":true}}'
复制代码

其他

自己将手记发在:https://github.com/redhatxl/awesome-kubernetes-notes欢迎一键三连

发布于: 2021 年 06 月 08 日阅读数: 6
用户头像

雪雷

关注

stay hungry stay foolish 2019.08.16 加入

Devops,python,shell,云原生,云架构,kubernetes https://github.com/redhatxl

评论

发布
暂无评论
Kubernetes手记(5)- 配置清单使用