linux怎么查看本机内存大小
277
2022-10-27
kubernetes快速入门-资源清单及初识pod资源
k8s资源清单及初识pod资源
k8s资源对象
工作负载型资源(workload):Pod, ReplicaSet, Deployment, StatefulSet, DaemonSet, Job, Cronjob,...
服务发现及负载均衡资源: Service, Ingress, ...
配置与存储相关资源: 存储卷(Volume),CSI(容器存储接口);ConfigMap,Secret, DownwardAPI
集群级资源:NameSpace, Node, Role, ClusterRole, RoleBinding, ClusterRoleBinding
元数据型资源: HPA, PodTemplate, LimitRange
Pod资源配置格式
创建资源时apiserver仅接收JSON格式的资源定义,kubectl run这种方式运行一个资源,这种方式kubectl会自动把各个参数转换为JSON格式,而在对k8s资源进行管理时直接使用JSON格式的数据不太让人容易维护和理解,所以使用yaml格式的方式来编写,yaml能无损的转换为JSON格式。
要想获取一个已有资源的yaml格式文件,只需要在获取资源信息时加上-o yaml选项即可,如
# 获取一个pod资源的yaml格式的信息 k8s@node01:~$ kubectl get pod myapp-dep-c988cf69-2dps2 -o yaml # 获取一个node资源的yaml格式的信息 k8s@node01:~$ kubectl get node node01 -o yaml
资源清单配置字段
大部分资源配置清单字段
apiVersion: group/version 表示使用apiServer的版本
apiVersion的版本分了许多组,每个组又有多个版本并存,如果省略"group",表示是核心组。`kubectl api-versions`可获取当前apiserver有哪些分组以及版本。
kind: <String> 资源类别
metadata: <Object> 元数据
object一般有以下对象: name: 名称 namespace: 名称空间 labels: 标签 annotations: 注解 selfLink: 资源的自引用地址,格式为: /api/GROUP/VERSION/namespaces/NAMESPACE/TYPE/NAME,如:“selfLink: /api/v1/namespaces/default/pods/myapp-dep-c988cf69-2dps2”
spec: <Object> 定义用户对资源期望的目标状态
status: <Object> 资源的当前状态,该字段由k8s集群动态维护,用户不可定义该字段,对用户只读
资源配置帮助信息获取
资源配置清单中所用到的字段众多,能实现对资源的各种定义,帮助的获取对运维人员尤其重要,好在kubectl命令为我们提供了对各种资源定义时的帮助信息。
# 获取用户能定义哪些资源类型 k8s@node01:~$ kubectl api-resources # 使用explain选项查看指定类型资源的定义帮助信息 k8s@node01:~$ kubectl explain --help # 查看pods资源的帮助 k8s@node01:~$ kubectl explain pods # 查看pods下spec字段的帮助,如果还有下一级,依此类推 k8s@node01:~$ kubectl explain pods.spec
自主式pod配置清单事例
k8s@node01:~/my_manifests$ pwd /home/k8s/my_manifests k8s@node01:~/my_manifests$ cat pods-demo.yaml apiVersion: v1 kind: Pod metadata: name: pod-demo namespace: default labels: app: myapp tier: frontend spec: containers: - name: app image: ikubernetes/myapp:v1 imagePullPolicy: IfNotPresent - name: bbox image: busybox:latest imagePullPolicy: IfNotPresent command: - "/bin/sh" - "-c" - "sleep 3600"
yaml语法说明:
使用缩进表示层级关系,缩进的空格数不重要,只要相同层级的元素左对齐即可。如果是对象(Object),也叫映射(mapping)/哈希(hash)/字典(dictionary)。
对象键值对使用冒号结构表示 key: value,冒号后面要加一个空格,key的值是一个对象,则使用 key:{key1: value1, key2: value2, ...},也可以使用缩进表示
key: child-key: value child-key2: value2
以 - 开头的行表示构成一个数组
- A - B
事例中
labels: app: myapp tier: frontend 可以改写为 labels: {app: myapp, tier: frontend} ########### containers: - name: app image: ikubernetes/myapp:v1 imagePullPolicy: IfNotPresent - name: bbox image: busybox:latest imagePullPolicy: IfNotPresent command: - "/bin/sh" - "-c" - "sleep 3600" 可改写为 containers: [{name: app, image: ikubernetes/myapp:v1, imagePullPolicy: IfNotPresent}, {name: bbox, image: busybox:latest, command: ["/bin/sh", "-c", "sleep 3600"]}]
但实际中缩写yaml文件都保持yaml的风格,不太会使用{}和[]。
应用yaml文件
k8s@node01:~/my_manifests$ kubectl create -f pods-demo.yaml # 根据资源清单创建相应资源 pod/pod-demo created k8s@node01:~$ kubectl get pods NAME READY STATUS RESTARTS AGE myapp-dep-c988cf69-2dps2 1/1 Running 0 3h13m myapp-dep-c988cf69-hjm8j 1/1 Running 0 3h14m myapp-dep-c988cf69-j56hp 1/1 Running 0 3h13m mynginx-deployment-646959f957-jqq67 1/1 Running 0 3h13m pod-demo 2/2 Running 0 84s k8s@node01:~/my_manifests$ kubectl delete -f pods-demo.yaml # 根据资源清单删除相应的资源 pod/pod-demo created
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~