云原生-集群管理续

一.资源清单文件

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 -
相关推荐
程序员小假3 分钟前
我们来说一说 Redisson 的原理
java·后端
chirrupy_hamal5 分钟前
网络编程 - TCP 篇
java
froginwe1113 分钟前
R 矩阵:解析与应用
开发语言
_OP_CHEN17 分钟前
C++基础:(十六)priority_queue和deque的深度解析
开发语言·c++
C++ 老炮儿的技术栈22 分钟前
include″″与includ<>的区别
c语言·开发语言·c++·算法·visual studio
Vallelonga22 分钟前
Rust 设计模式 Marker Trait + Blanket Implementation
开发语言·设计模式·rust
notillusion27 分钟前
KWW#71843
java·php·程序优化
CHANG_THE_WORLD30 分钟前
PDFium导出pdf 图像
开发语言·c++·pdf
owCode43 分钟前
4-C++智能指针
开发语言·c++
liu****1 小时前
10.queue的模拟实现
开发语言·数据结构·c++·算法