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控制器

使用vscode快速编写k8s资源清单yaml

云原生之kubernetes实战k8s集群核心资源对象之Pod

kubernetes(k8s)资源管理/清单配置基础

Kubernetes基础自学系列 | Kubernetes资源清单

云原生之kubernetes实战k8s集群下的DaemonSet 高级资源对象