云原生-集群管理续

一.资源清单文件

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 -
相关推荐
好好沉淀14 分钟前
主键选择(自增 vs UUID vs 雪花算法)
java·算法
时光不染。回忆不淡16 分钟前
Python基础语法教程
开发语言·python
运维老郭18 分钟前
Ubuntu下编译安装Redis:从0到1可用的完整指南
运维·云原生
爱喝水的鱼丶20 分钟前
SAP-ABAP:一次关于“交货日期”的增强需求:从复杂增强到标准功能的回归之旅
运维·开发语言·性能优化·sap·abap·经验交流
带刺的坐椅28 分钟前
Solon AI:Tool 与 Talent 怎么选?从函数到领域专家
java·ai·llm·agent·solon
星恒随风1 小时前
C++ STL 详解:list 的使用、迭代器失效、模拟实现与 vector 对比
开发语言·数据结构·c++·笔记·学习·list
小白说大模型1 小时前
AI Agent 调试实战:链路追踪、Prompt 可视化与异常定位的系统方法
java·人工智能·python·算法·prompt
静水楼台x1 小时前
spring security
java·数据库·spring
重生之我是Java开发战士1 小时前
【Java EE】Spring Boot配置文件
java·spring boot·java-ee
Tim_101 小时前
【C++】019、内存泄漏
java·开发语言