文章目录
什么是资源
K8s 中所有的内容都抽象为资源,资源实例化之后叫做对象。
什么是资源清单
资源清单的含义等同于一个剧本,里面写好了每一步的操作。在k8s中,一般使用yaml格式的文件来创建资源清单。
资源清单的书写
apiVersion: group/apiversion #指明api资源属于哪个群组和版本,同一个组可以有多个版本。可以使用 kubectl api-versions 查询当前所有的apiversion
kind: #资源类型 k8s主要支持以下资源类别:Pod,ReplicaSet,Deployment,StatefulSet,DaemonSet,Job,Cronjob
metadata: #资源元数据
name: #对象名称
namespace: #对象属于哪个命名空间
lables: #指定资源标签,标签是一种键值数据
annotations: #资源注解,主要目的是方便用户阅读查找
spec: #定义目标资源的期望状态
1.清单参数解释
必需参数
主要参数
额外参数
2.获取apiversion以及清单帮助
1.kubectl api-versions #获取apiVersion版本信息
2.kubectl explain pod #查询帮助文档
写清单时可以参考此文档
查spec
3.资源清单举例
方法1:直接创建yaml文件
(1)Pod资源清单测试resources参数
vim pod.yml
apiVersion: v1
kind: Pod
metadata:
name: pod1
spec:
containers:
- name: nginx
image: nginx:latest
imagePullPolicy: IfNotPresent
resources:
requests:
cpu: "0.5"
memory: "25Mi"
limits:
cpu: "1"
memory: "50Mi"
kubectl apply -f pod.yaml
方法2:利用已有的pod输出.yml文件进行修改
kubectl get pod nginx -o yaml
我们可以模仿导出的文件进行编写
补充:观察添加去除标签情况
为了便于观察效果,修改文件。
多出一个,多出来的这个不受控制器的调度,被删除之后不会重启。
当把它的标签改为nginx时,发现副本仍然为2。
添加disktype标签,指定pod运行的节点。
设置节点选择器
发现运行到了server2上
此时删掉标签并将副本改为4
去掉server2的标签发现pod报错。
两个running的是之前的,红线处是出问题的地方。
无法匹配节点选择器
给server3打上标签后,发现运行正常。