• 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
  • 相关阅读:
    git 命令积累
    大漠插件(二、Qt使用插件时注意事项)
    全屏数字预加载动画
    8.for循环
    利用自定义 URI Scheme 在 Android 应用中实现安全加密解密功能
    spring cloud nacos服务搭建
    Linux界的老古董
    循环队列(出队、入队、判空、长度、遍历、取头)(数据结构与算法)
    [2023毕业设计源码]精品基于PHP实现的剧影评|剧评影评系统[包运行成功]
    杂记 | 使用gitlab-runner将python项目以docker镜像方式流水线部署到服务器(解决部署缓慢和时区不对的问题)
  • 原文地址:https://blog.csdn.net/yy8623977/article/details/124756484