云原生-集群管理续

一.资源清单文件

1.资源清单文件:

a.什么是资源对象?

Kubernetes 对象是"目标性记录"Kubernetes 使用这些对象去表示整个集群的状态。

b.什么是资源清单文件?

创建 Kubernetes 对象时,必须提供资源对象的一些基本信息(例如:资源的对象的名字),以及描述该对象的期望状态特征(规约)。如果我们在文件中使用 YAML 的语法格式描述了上面的信息,这个文件就是资源清单文件。

c.为什么要使用资源清单文件?

--命令无法持久化,没有历史记录,不方便重现

--服务众多,多个容器之间有关联性,管理不方便

--很多高级的复杂的功能靠简单的命令方式无法实现,这些都需要使用资源文件描述资源

--清单文件可以做什么?可

--以创建、删除、变更、管理资源对象

最简单的资源文件(举例):

bash 复制代码
---
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 版本为 v1metadata 部分包含了 Pod 的元数据,如名称 myweb

--spec 部分定义了 Pod 的规格,包括容器的配置。

--containers 列表中定义了一个名为 nginx 的容器,并指定了其使用的镜像 myos:nginxs

--tatus 部分在 Pod 运行后会由 Kubernetes 自动生成,表示 Pod 的当前状态.

2.创建Pod的两种方法?

--方法1:使用run子命令创建

--方法2:使用资源清单文件

(1).创建Pod资源对象

-命令格式:kubectl create\|apply\|delete -f 资源文件名称.yaml

eg:

bash 复制代码
# 创建资源对象
[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 -

具体案例:

bash 复制代码
资源清单文件
[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 -
相关推荐
Chester_19998 小时前
CSP202203C.计算资源调度器
开发语言·数据结构·c++·蓝桥杯
CJY6218 小时前
k8spod管理
云原生·容器·kubernetes
2601_962218479 小时前
万象生鲜系统区块链溯源技术帮助生鲜企业搭建食品安全数字化体系
大数据·运维·微服务·云原生·架构
EXI-小洲9 小时前
Java 操作 Word:字符串替换、图片插入、动态生成表格与API接口下载
java·开发语言·spring boot·word
会周易的程序员10 小时前
给 PLC 写一个字节码虚拟机:STVM 虚拟机架构设计
开发语言·c++·虚拟机·软plc·iec61131·stvm
机器视觉知识推荐、就业指导10 小时前
为什么老说“纯 Qt 没啥就业市场”?
开发语言·qt
telepan10 小时前
Qt 开发避坑与性能指南:如何优雅、安全地定义全局常量字符串?
开发语言·qt
m0_6952514910 小时前
Qt MaintenanceTool 使用国内镜像加速下载(超详细教程)
开发语言·qt
2601_9619017011 小时前
SpringBoot使用Nacos进行application.yml配置管理
java·spring boot·spring
何以解忧,唯有..11 小时前
LangChain 工具调用(Tool Calling)实战指南
java·前端·langchain