一.资源清单文件
1.资源清单文件:
a.什么是资源对象?
Kubernetes 对象是“目标性记录”Kubernetes 使用这些对象去表示整个集群的状态。
b.什么是资源清单文件?
创建 Kubernetes 对象时,必须提供资源对象的一些基本信息(例如:资源的对象的名字),以及描述该对象的期望状态特征(规约)。如果我们在文件中使用 YAML 的语法格式描述了上面的信息,这个文件就是资源清单文件。
c.为什么要使用资源清单文件?
--命令无法持久化,没有历史记录,不方便重现
--服务众多,多个容器之间有关联性,管理不方便
--很多高级的复杂的功能靠简单的命令方式无法实现,这些都需要使用资源文件描述资源
--清单文件可以做什么?可
--以创建、删除、变更、管理资源对象
最简单的资源文件(举例):
---
kind: Pod # 当前创建资源的类型
apiVersion: v1 # 当前资源对应的版本
metadata: # 属性信息,元数据
name: myweb # 属性信息,资源的名称
spec: # 资源的特性描述(规约)
containers: # 容器资源特征描述
- name: nginx # 容器的名称
image: myos:nginx # 启动容器使用的镜像
status: {} # 资源状态,运行后自动生成
注释:这个 YAML 文件定义了一个 Kubernetes Pod 的配置。Pod 是 Kubernetes 中最小的可部署单元,它包含一个或多个容器。在这个例子中,Pod 包含一个名为 nginx
的容器,该容器使用 myos:nginx
镜像启动。
--kind: Pod
表示这是一个 Pod 类型的资源。
--apiVersion: v1
指定使用的 API 版本为 v1
。metadata
部分包含了 Pod 的元数据,如名称 myweb
。
--spec
部分定义了 Pod 的规格,包括容器的配置。
--containers
列表中定义了一个名为 nginx
的容器,并指定了其使用的镜像 myos:nginx
。s
--tatus
部分在 Pod 运行后会由 Kubernetes 自动生成,表示 Pod 的当前状态.
2.创建Pod的两种方法?
--方法1:使用run子命令创建
--方法2:使用资源清单文件
(1).创建Pod资源对象
-命令格式:kubectl [create|apply|delete] -f 资源文件名称.yaml
eg:
# 创建资源对象
[root@master ~]# kubectl create -f myweb.yaml
pod/myweb created
# 不能更新,重复执行会报错
[root@master ~]# kubectl create -f myweb.yaml
Error from server (AlreadyExists): error when creating "myweb.yaml": pods "myweb" already exists
# 删除资源对象
[root@master ~]# kubectl delete -f myweb.yaml
pod "myweb" deleted
# 创建/更新资源对象
[root@master ~]# kubectl apply -f myweb.yaml
pod/myweb created
[root@master ~]# kubectl apply -f myweb.yaml
pod/myweb configured
# 强制重建资源对象
[root@master ~]# kubectl replace --force -f myweb.yaml
pod "myweb" deleted
pod/myweb created
# 删除资源对象
[root@master ~]# kubectl delete -f myweb.yaml
pod "myweb" deleted
# 拓展提高
[root@master ~]# cat myweb.yaml |kubectl apply -f -
具体案例:
资源清单文件
[root@master ~]# vim myweb.yaml
---
kind: Pod
apiVersion: v1
metadata:
name: myweb
spec:
containers:
- name: nginx
image: myos:nginx
status: {}
管理命令
子命令 说明 备注
create 创建文件中定义的资源 支持指令式和资源清单文件配置
apply 创建(更新)文件中定义的资源 只支持资源清单文件(声明式)
delete 删除文件中定义的资源 支持指令式和资源清单文件配置
replace 更改/替换资源对象 强制重建 --force
命令示例
create
# 创建资源对象
[root@master ~]# kubectl create -f myweb.yaml
pod/myweb created
# 不能更新,重复执行会报错
[root@master ~]# kubectl create -f myweb.yaml
Error from server (AlreadyExists): error when creating "myweb.yaml": pods "myweb" already exists
delete
# 使用资源清单文件删除
[root@master ~]# kubectl delete -f myweb.yaml
pod "myweb" deleted
[root@master ~]# kubectl get pods
No resources found in default namespace.
apply
# 创建资源对象
[root@master ~]# kubectl apply -f myweb.yaml
pod/myweb created
# 更新资源对象
[root@master ~]# kubectl apply -f myweb.yaml
pod/myweb configured
# 强制重建资源对象
[root@master ~]# kubectl replace --force -f myweb.yaml
pod "myweb" deleted
pod/myweb created
# 删除资源对象
[root@master ~]# kubectl delete -f myweb.yaml
pod "myweb" deleted
# 拓展提高
# 与 kubectl apply -f myweb.yaml 功能相同
[root@master ~]# cat myweb.yaml |kubectl apply -f -