Kubernetes(k8s)之编写资源清单
Posted Tuki_a
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kubernetes(k8s)之编写资源清单相关的知识,希望对你有一定的参考价值。
一级目录
什么叫资源清单
k8s中所有的内容都抽象为资源,资源实例化之后,叫做对象。
在k8s中,一般使用yaml格式的文件来创建符合我们预期期望的pod,这样的yaml文件我们一般称为资源清单。
好处:怎么创建的怎么回收
如何创建资源
apiserver 仅接受JSON格式的资源定义,yaml格式提供配置清单,apiserver 可自动将其转为JSON格式,而后再提交。
编写资源清单模板(格式)
我们可以先以run命令的形式运行一个pod,然后在查看时指定-o yaml参数即可看到yaml格式的资源清单。
首先要指定api,指定使用的是哪种api资源,可以通过指令kubectl api-versions
查看k8s提供了哪些api资源。这些不是固定的,可以通过插件去扩充。
官方文档地址:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.21/
然后按如下格式编写即可
apiVersion: group/version //指明api资源属于哪个群组和版本,同一个组可以有多个版本
kind: //标记创建的资源类型,k8s主要支持资源类别:Pod,ReplicaSet,Deployment,StatefulSet,DaemonSet,Job,Cronjob
metadata: //元数据
name: //对象名称
namespace: //对象属于哪个命名空间
labels: //指定资源标签,标签是一种键值数据
spec: //定义目标资源的期望状态
kubectl explain pod
命令可以查看帮助,关于怎么编写你想要的资源清单的帮助
资源清单参数说明
可以用命令的方式查看参数说明
例:kubectl explain pod.spec.containers.tty
自主式Pod资源清单
编写yaml文件,内容以及解释如下
[root@server2 pod]# vim pod.yaml
apiVersion: v1 #属于v1版本
kind: Pod #资源类型为pod
metadata:
name: pod-example #对象名称
spec:
containers: #下边并列了两个容器,一整个pod里运行的一服务包含功能myapp和busybox
- name: myapp #容器名
image: myapp:v1 #镜像版本
imagePullPolicy: IfNotPresent #镜像拉取策略,未指定直,默认是always
- name: busybox
image: busybox:v1
tty: true #因为busybox是一个交互式服务,所以需要给一个终端,tty默认是false,不给true会导致启动失败
stdin: true #和tty需要一起开启,默认也是false,接受在终端输入的内容暂存缓存
应用文件创建pod,正常运行,两个容器处于ready状态
将busybox调到前台运行成功
删除创建的pod(指定文件源,怎么创建的怎么删除),再给文件写点东西进去,重新应用
修改后的文件内容如下:
apiVersion: v1
kind: Pod
metadata:
name: pod-example
spec:
hostNetwork: true #共享使用宿主机的网络
nodeName: server4 #指定部署节点为server4
containers:
- name: myapp
image: myapp:v1
imagePullPolicy: IfNotPresent
resources:
requests:
cpu: "100m" #启动时至少用100m的cpu
memory: "50Mi" #启动时至少用50mi的内存
limits:
cpu: "200m" #启动时至多用200mcpu
memory: "100Mi" #启动时至多用200m内存
重新应用查看详细描述,可以看到使用的节点是server4,共享server4的网络
我们设置的资源限制和请求的直也可以看到
以上是关于Kubernetes(k8s)之编写资源清单的主要内容,如果未能解决你的问题,请参考以下文章
k8s管理pod编写资源清单pod生命周期之探针init初始化容器Deployment和RS控制器
云原生之kubernetes实战k8s集群核心资源对象之Pod