• Kubernetes(k8s)的三种资源管理方式


    1. 命令式对象管理

    直接使用命令去操作kubernetes的资源,常用于测试

    1.1 kubectl命令的语法

    kubectl command [type] [name] [flags]
    
    • 1

    说明:

    • command:指定要对资源执行的操作,比如run、create、get、delete
    • type:指定资源的类型,比如deployment、pod、service
    • name:指定资源的名称,名称大小写敏感
    • flags:指定额外的可选参数

    例如查看pod信息

    [root@k8s-master ~]# kubectl get pods nginx-8f458dc5b-d4wnm -o wide
    NAME                    READY   STATUS    RESTARTS      AGE   IP             NODE        NOMINATED NODE   READINESS GATES
    nginx-8f458dc5b-d4wnm   1/1     Running   1 (29h ago)   29h   10.244.36.67   k8s-node1   <none>           <none>
    [root@k8s-master ~]#
    
    • 1
    • 2
    • 3
    • 4

    1.2 常用的kubectl各种command

    基本命令:

    命令命令作用
    create创建一个资源
    edit编辑一个资源
    get获取一个资源
    patch更新一个资源
    delete删除一个资源
    explain显示资源文档

    运行和调试:

    命令命令作用
    run在集群中运行一个指定的镜像
    expose暴露资源为Service
    describe显示资源内部信息
    logs输出容器在Pod中的日志
    attach进入运行中的容器
    exec执行容器中的一个命令
    cp在Pod和内外复制文件
    rollout管理资源的发布
    scale扩(缩)容Pod的数量
    autoscale自动调整Pod的数量

    高级命令:

    命令命令作用
    apply通过文件对资源进行创建或更新
    label更新资源上的标签

    其他命令:

    命令命令作用
    cluster-info显示集群信息
    version显示当前Client和Server的版本

    1.3 常操作的kubectl各种type资源类型

    可以通过命令kubectl api-resources查看所有能操作的资源类型

    集群级别资源:

    资源名称缩写资源作用
    nodesno集群组成部分
    namespacesns隔离Pod

    Pod资源:

    资源名称缩写资源作用
    Podspo装载容器

    Pod资源控制器:

    资源名称缩写资源作用
    replicationcontrollersrc控制Pod资源
    replicasetsrs控制Pod资源
    deploymentsdeploy控制Pod资源
    daemonsetsds控制Pod资源
    jobs控制Pod资源
    cronjobscj控制Pod资源
    horizontalpodautoscalershpa控制Pod资源
    statefulsetssts控制Pod资源

    服务发现资源:

    资源名称缩写资源作用
    servicessvc统一Pod对外接口
    ingressing统一Pod对外接口

    存储资源:

    资源名称缩写资源作用
    volumeattachments存储
    persistentvolumespv存储
    persistentvolumeclaimspvc存储

    配置资源:

    资源名称缩写资源作用
    configmapscm配置
    secrets配置

    2. 命令式对象配置

    通过命令(不含apply命令)和配置文件去操作kubernetes的资源

    例如创建一个nginx-pod.yaml,内容如下

    [root@k8s-master ~]# cat nginx-pod.yaml 
    # 定义一个name为dev的namespace
    apiVersion: v1
    kind: Namespace
    metadata:
      name: dev
    
    ---
    
    # 定义一个运行nginx的pod
    apiVersion: v1
    kind: Pod
    metadata:
      name: nginx-pod
      namespace: dev
    spec:
      containers:
        - name: nginx-container
          image: nginx:1.21.6
          imagePullPolicy: IfNotPresent
    
    
    [root@k8s-master ~]# 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    执行create命令,创建资源

    [root@k8s-master ~]# kubectl create -f nginx-pod.yaml
    namespace/dev created
    pod/nginx-pod created
    [root@k8s-master ~]#
    
    • 1
    • 2
    • 3
    • 4

    3. 声明式对象配置

    通过apply命令和配置文件去操作kubernetes的资源。可以同时操作一个目录下的多个配置文件,出现错误难调试

    apply的资源不存在,则创建。存在则更新。相当于create和patch的组合

    例如修改nginx-pod.yaml文件的nginx镜像版本为latest。再执行apply命令进行更新

    [root@k8s-master ~]# kubectl apply -f nginx-pod.yaml 
    namespace/dev unchanged
    pod/nginx-pod configured
    [root@k8s-master ~]#
    
    • 1
    • 2
    • 3
    • 4
  • 相关阅读:
    企业电子招投标采购系统——功能模块&功能描述+数字化采购管理 采购招投标
    C语言进阶:程序中的三国天下 考研数据结构
    【面试题精讲】Java语言概念
    【LabVIEW FPGA入门】NI 环境安装教程
    6.Dropout应用
    常用的锂电池充电IC芯片
    前端高频面试题合集(中高级必备)
    JSP 社区联动系统Myeclipse开发mysql数据库web结构java编程计算机网页项目
    Mac 睡眠唤醒 不睡眠 问题
    不念过往,不畏将来:2022年6月我辞职了...
  • 原文地址:https://blog.csdn.net/yy8623977/article/details/124756484