资源管理介绍
- kubernetes 中,所有的内容都抽象为资源
- 用户需要通过操作资源来管理 kubernetes
资源管理方式
命令式对象管理
- 概述
- 直接使用命令操作 kubernetes 资源
- 操作对象
- 对象
- 命令
- 格式
- kubectl [command] [type] [name] [flags]
- 格式
- 说明
- kubectl
- kubernetes 集群的命令行工具
- kubectl
2. command
1. 指定要对资源执行的操作
1. create
2. get
3. delete
4. ...
3. type
1. 指定资源类型
1. pod
2. deployment
3. service
4. ...
4. name
1. 指定资源的名称
1. 大小写敏感
5. 指定额外的可选参数
- 帮助命令
- kubectl --help
- 举例
[root@master ~]# kubectl create ns dev
namespace/dev created
[root@master ~]# kubectl get ns dev
NAME STATUS AGE
dev Active 11s
[root@master ~]# kubectl get ns dev -o wide
NAME STATUS AGE
dev Active 23s
[root@master ~]# kubectl get ns dev -o json
{
"apiVersion": "v1",
"kind": "Namespace",
"metadata": {
"creationTimestamp": "2024-03-12T01:42:38Z",
"name": "dev",
"resourceVersion": "92985",
"selfLink": "/api/v1/namespaces/dev",
"uid": "78f2aad8-5584-4302-ba35-8b989a386124"
},
"spec": {
"finalizers": [
"kubernetes"
]
},
"status": {
"phase": "Active"
}
}
[root@master ~]# kubectl get ns dev -o yaml
apiVersion: v1
kind: Namespace
metadata:
creationTimestamp: "2024-03-12T01:42:38Z"
name: dev
resourceVersion: "92985"
selfLink: /api/v1/namespaces/dev
uid: 78f2aad8-5584-4302-ba35-8b989a386124
spec:
finalizers:
- kubernetes
status:
phase: Active
[root@master ~]# kubectl delete ns dev
namespace "dev" deleted
命令式对象配置
- 概念
- 使用命令配合配置文件操作 kubernetes 资源
- 操作对象
- 文件
- 举例
- 创建 ns-dev.yaml
apiVersion: v1
kind: Namespace
metadata:
name: dev
- 命令
[root@master ~]# kubectl create -f ns-dev.yaml
namespace/dev created
[root@master ~]# kubectl get -f ns-dev.yaml
NAME STATUS AGE
dev Active 11s
[root@master ~]# kubectl get -f ns-dev.yaml -o wide
NAME STATUS AGE
dev Active 23s
[root@master ~]# kubectl get -f ns-dev.yaml -o yaml
apiVersion: v1
kind: Namespace
metadata:
creationTimestamp: "2024-03-12T02:02:23Z"
name: dev
resourceVersion: "95855"
selfLink: /api/v1/namespaces/dev
uid: 2df865c9-63f9-49a9-b12a-eab86b0a2c1f
spec:
finalizers:
- kubernetes
status:
phase: Active
[root@master ~]# kubectl get -f ns-dev.yaml -o json
{
"apiVersion": "v1",
"kind": "Namespace",
"metadata": {
"creationTimestamp": "2024-03-12T02:02:23Z",
"name": "dev",
"resourceVersion": "95855",
"selfLink": "/api/v1/namespaces/dev",
"uid": "2df865c9-63f9-49a9-b12a-eab86b0a2c1f"
},
"spec": {
"finalizers": [
"kubernetes"
]
},
"status": {
"phase": "Active"
}
}
[root@master ~]#
[root@master ~]#
[root@master ~]# kubectl delete -f ns-dev.yaml
namespace "dev" deleted
声明式对象配置
- 概念
- 声明式对象配置类似于命令式对象配置,但是只有一个命令 apply
- 如果资源不存在,就创建,相当于 kubectl create
- 如果资源已存在,就更新,相当于 kubectl patch
- 声明式对象配置类似于命令式对象配置,但是只有一个命令 apply
- 操作对象
- 目录
- 举例
[root@master ~]# kubectl apply -f ns-dev.yaml
namespace/dev created
建议
- 创建/更新资源
- 声明式对象配置
- 删除资源
- 命令式对象配置
- 查询资源
- 命令式对象管理