第 3 章 资源管理

资源管理介绍

  1. kubernetes 中,所有的内容都抽象为资源
  2. 用户需要通过操作资源来管理 kubernetes

image-20200406225334627.png

资源管理方式

命令式对象管理

  1. 概述
    1. 直接使用命令操作 kubernetes 资源
  2. 操作对象
    1. 对象

  1. 命令
    1. 格式
      1. kubectl [command] [type] [name] [flags]

  1. 说明
    1. kubectl
      1. kubernetes 集群的命令行工具

  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. 指定额外的可选参数

  1. 帮助命令
    1. kubectl --help
  2. 举例
[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

命令式对象配置

  1. 概念
    1. 使用命令配合配置文件操作 kubernetes 资源
  2. 操作对象
    1. 文件
  3. 举例
    1. 创建 ns-dev.yaml
apiVersion: v1
kind: Namespace
metadata:
  name: dev
  1. 命令
[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

声明式对象配置

  1. 概念
    1. 声明式对象配置类似于命令式对象配置,但是只有一个命令 apply
      1. 如果资源不存在,就创建,相当于 kubectl create
      2. 如果资源已存在,就更新,相当于 kubectl patch
  2. 操作对象
    1. 目录
  3. 举例
[root@master ~]# kubectl apply -f ns-dev.yaml
namespace/dev created

建议

  1. 创建/更新资源
    1. 声明式对象配置
  2. 删除资源
    1. 命令式对象配置
  3. 查询资源
    1. 命令式对象管理
posted @ 2024-04-01 09:46  Wndexx  阅读(11)  评论(0)    收藏  举报