• 【云原生之k8s】K8s 管理工具 kubectl 详解(一)



    一、陈述式管理

    1、陈述式资源管理方法

    • 1.kubernetes 集群管理集群资源的唯一入口是通过相应的方法调用 apiserver 的接口
    • 2.kubectl 是官方的 CLI 命令行工具,用于与 apiserver 进行通信,将用户在命令行输入的命令,组织并转化为apiserver 能识别的信息,进而实现管理 k8s 各种资源的一种有效途径
    • 3.kubectl 的命令大全
      kubectl --help
    • 4.k8s官方中文文档:http://docs.kubernetes.org.cn/683.html
    • 5.对资源的增、删、查操作比较容易,但对改的操作就不容易了

    2、k8s相关信息查看

    2.1 查看版本信息

    kubectl version
    
    • 1

    在这里插入图片描述

    2.2 查看节点信息

    kubectl get nodes
    
    • 1

    在这里插入图片描述

    2.3 查看资源对象简写

    kubectl api-resources
    
    • 1
    [root@master ~]# kubectl api-resources
    NAME                              SHORTNAMES   APIVERSION                             NAMESPACED   KIND
    bindings                                       v1                                     true         Binding
    componentstatuses                 cs           v1                                     false        ComponentStatus
    configmaps                        cm           v1                                     true         ConfigMap
    endpoints                         ep           v1                                     true         Endpoints
    events                            ev           v1                                     true         Event
    limitranges                       limits       v1                                     true         LimitRange
    namespaces                        ns           v1                                     false        Namespace
    nodes                             no           v1                                     false        Node
    persistentvolumeclaims            pvc          v1                                     true         PersistentVolumeClaim
    persistentvolumes                 pv           v1                                     false        PersistentVolume
    pods                              po           v1                                     true         Pod
    podtemplates                                   v1                                     true         PodTemplate
    replicationcontrollers            rc           v1                                     true         ReplicationController
    resourcequotas                    quota        v1                                     true         ResourceQuota
    secrets                                        v1                                     true         Secret
    serviceaccounts                   sa           v1                                     true         ServiceAccount
    services                          svc          v1                                     true         Service
    mutatingwebhookconfigurations                  admissionregistration.k8s.io/v1        false        MutatingWebhookConfiguration
    validatingwebhookconfigurations                admissionregistration.k8s.io/v1        false        ValidatingWebhookConfiguration
    customresourcedefinitions         crd,crds     apiextensions.k8s.io/v1                false        CustomResourceDefinition
    apiservices                                    apiregistration.k8s.io/v1              false        APIService
    controllerrevisions                            apps/v1                                true         ControllerRevision
    daemonsets                        ds           apps/v1                                true         DaemonSet
    deployments                       deploy       apps/v1                                true         Deployment
    replicasets                       rs           apps/v1                                true         ReplicaSet
    statefulsets                      sts          apps/v1                                true         StatefulSet
    tokenreviews                                   authentication.k8s.io/v1               false        TokenReview
    localsubjectaccessreviews                      authorization.k8s.io/v1                true         LocalSubjectAccessReview
    selfsubjectaccessreviews                       authorization.k8s.io/v1                false        SelfSubjectAccessReview
    selfsubjectrulesreviews                        authorization.k8s.io/v1                false        SelfSubjectRulesReview
    subjectaccessreviews                           authorization.k8s.io/v1                false        SubjectAccessReview
    horizontalpodautoscalers          hpa          autoscaling/v1                         true         HorizontalPodAutoscaler
    cronjobs                          cj           batch/v1                               true         CronJob
    jobs                                           batch/v1                               true         Job
    certificatesigningrequests        csr          certificates.k8s.io/v1                 false        CertificateSigningRequest
    leases                                         coordination.k8s.io/v1                 true         Lease
    endpointslices                                 discovery.k8s.io/v1                    true         EndpointSlice
    events                            ev           events.k8s.io/v1                       true         Event
    ingresses                         ing          extensions/v1beta1                     true         Ingress
    flowschemas                                    flowcontrol.apiserver.k8s.io/v1beta1   false        FlowSchema
    prioritylevelconfigurations                    flowcontrol.apiserver.k8s.io/v1beta1   false        PriorityLevelConfiguration
    ingressclasses                                 networking.k8s.io/v1                   false        IngressClass
    ingresses                         ing          networking.k8s.io/v1                   true         Ingress
    networkpolicies                   netpol       networking.k8s.io/v1                   true         NetworkPolicy
    runtimeclasses                                 node.k8s.io/v1                         false        RuntimeClass
    poddisruptionbudgets              pdb          policy/v1                              true         PodDisruptionBudget
    podsecuritypolicies               psp          policy/v1beta1                         false        PodSecurityPolicy
    clusterrolebindings                            rbac.authorization.k8s.io/v1           false        ClusterRoleBinding
    clusterroles                                   rbac.authorization.k8s.io/v1           false        ClusterRole
    rolebindings                                   rbac.authorization.k8s.io/v1           true         RoleBinding
    roles                                          rbac.authorization.k8s.io/v1           true         Role
    priorityclasses                   pc           scheduling.k8s.io/v1                   false        PriorityClass
    csidrivers                                     storage.k8s.io/v1                      false        CSIDriver
    csinodes                                       storage.k8s.io/v1                      false        CSINode
    csistoragecapacities                           storage.k8s.io/v1beta1                 true         CSIStorageCapacity
    storageclasses                    sc           storage.k8s.io/v1                      false        StorageClass
    volumeattachments                              storage.k8s.io/v1                      false        VolumeAttachment
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60

    2.4 查看集群信息

    kubectl cluster-info
    
    • 1

    在这里插入图片描述

    2.5 配置kubectl自动补全

    source <(kubectl completion bash)
    
    • 1

    可通过TAB键实现命令补全,建议将其写入 /etc/profile,一般用的比较少

    2.6 查看日志

    journalctl -u kubelet -f
    
    
    • 1
    • 2

    在这里插入图片描述

    2.7 基本信息查看

    kubectl get [-o wide|json|yaml] [-n namespace]
    
    • 1

    获取资源的相关信息,-n指定命名空间,-o指定输出格式
    resource可以是具体资源名称,如"pod nhinx-xxx";也可以是资源类型,如“pod,node,svc,deploy”多种资源使用逗号间隔;或者all(仅展示几种核心资源,并不完整)

    • 1.–all-namespaces或-A:表示显示所有命名空间
    • 2.–show-labels:显示所有标签
    • 3.-l app:仅显示标签为app的资源
    • 4.-l app=nginx:仅显示包含app标签,且值为nginx的资源
    2.7.1 查看master节点状态
    kubectl get componentstatuses
    
    #componentstatues可以缩写成cs
    kubectl get cs
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    2.7.2 查看命名空间
    kubectl get namespace
    
    #namespace可以缩写成ns
    kubectl get ns
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    2.8 命名空间操作

    2.8.1 查看default命名空间的所有资源
    kubectl get all [-n default]
    
    • 1

    由于deafult为缺省空间,当不指定命名空间时默认查看default命名空间
    在这里插入图片描述

    2.8.2 创建命名空间
    kubectl create ns yzq
    
    
    • 1
    • 2

    在这里插入图片描述

    2.8.3 删除命名空间
    kubectl delete ns yzq
    
    • 1

    在这里插入图片描述

    2.9 deployment/pod操作

    2.9.1 在命名空间kube-public创建副本控制器(deployment)来启动Pod(nginx-test)
    kubectl create deployment nginx-test --image=nginx -n kube-public
    kubectl get pod -n kube-public
    #查看命名空间为kube-public的pod
    
    • 1
    • 2
    • 3

    在这里插入图片描述
    看到状态为running,就是创建完成并成功启动了

    2.9.2 描述某个资源的详细信息
    kubectl describe deployment nginx-test -n kube-public
    
    
    • 1
    • 2

    在这里插入图片描述

    kubectl describe pod nginx-test -n kube-public
    
    
    • 1
    • 2

    在这里插入图片描述

    2.9.3 查看命名空间kube-public中pod信息
    kubectl get pods -n kube-public
    
    
    • 1
    • 2

    在这里插入图片描述

    2.9.4 登录容器

    kubectl exec 可以跨主机登录容器,docker exec 只能在容器所在主机登录

    kubectl exec -it nginx-test-795d659f45-wl9b7 bash -n kube-public
    
    
    • 1
    • 2

    在这里插入图片描述

    2.9.5 删除(重启)pod资源

    由于存在 deployment/rc 之类的副本控制器,删除 pod 也会重新拉起来

    kubectl delete pod nginx-test-795d659f45-8lqgv -n kube-public
    kubectl get pod -n kube-public
    
    • 1
    • 2

    在这里插入图片描述

    2.9.6 若无法删除,总是处于terminate状态,则要强行删除pod
    kubectl delete pod [] -n [] --force --grace-period=0
    
    • 1

    grace-period表示过渡存活期,默认30s,在删除pod之前允许pod慢慢终止其上的容器进程,从而优雅的退出,0表示立即终止pod
    在这里插入图片描述

    2.9.7 扩缩容
    2.9.7.1 扩容
    kubectl scale deployment nginx-test --replicas=3 -n kube-public
    
    • 1

    在这里插入图片描述

    2.9.7.2 缩容
    kubectl scale deployment nginx-test --replicas=1 -n kube-public
    
    • 1

    在这里插入图片描述

    #2.9.8 删除副本控制器

    kubectl delete deployment nginx-test -n kube-public
    
    
    • 1
    • 2

    在这里插入图片描述

    2.10 增加/删除label

    2.10.1 增加label
    kubectl label deploy nginx version=nginx1.14
    
    
    • 1
    • 2

    在这里插入图片描述

    2.10.2 删除label
    kubectl label deploy nginx version-
    
    
    • 1
    • 2

    在这里插入图片描述

    二、声明式管理

    1. 声明式管理方法

    • 1.适合于对资源的修改操作
    • 2.声明式资源管理方法依赖于资源配置清明文件对资源进行管理
    • 3.资源配置清单文件有两种格式:yaml(人性化,易读),json(易于api接口解析)
    • 4.对资源的观念里,是通过实现定义在同一资源配置清单内,再通过陈述式命令应用到k8s集群里
    • 5.语法格式:kubectl create/apply/delete -f -o yaml

    2、查看资源配置清单

    kubectl get deploy/nginx -o yaml
    
    • 1

    在这里插入图片描述

    kubectl get service nginx -o yaml
    
    
    • 1
    • 2

    在这里插入图片描述

    3. 解释资源配置清单

    kubectl explain deployment.metadata
    
    • 1

    在这里插入图片描述

    kubectl explain service.metadata
    
    
    • 1
    • 2

    在这里插入图片描述

    4、修改资源配置清单并应用

    4.1 离线修改

    4.1.1 修改yaml文件

    修改yaml文件:并用kubectl apply -f xxxx.yaml文件使之生效
    注意:当apply不生效时,先使用delete清除资源,再apply创建资源

    kubectl get service nginx-service -o yaml > nginx-svc.yaml
    
    • 1

    在这里插入图片描述

    4.1.2 删除资源

    kubectl delete -f nginx-svc.yaml
    
    
    • 1
    • 2

    在这里插入图片描述

    4.1.3 新建资源

    kubectl apply -f nginx-svc.yaml
    
    
    • 1
    • 2

    在这里插入图片描述

    4.1.4 查看service资源

    kubectl get svc
    
    • 1

    在这里插入图片描述

    4.2 在线修改

    直接使用kubectl edit service nginx-service在线编辑配置资源清单并保存退出即时生效(如port: 888)
    PS:此修改方式不会对yaml文件内容修改

    kubectl edit service nginx-service
    
    • 1

    在这里插入图片描述
    查看service资源

    kubectl get svc
    
    
    • 1
    • 2

    在这里插入图片描述

    5.1 陈述式删除

    kubectl delete service nginx
    
    
    • 1
    • 2

    在这里插入图片描述

    5.2 声明式删除

    kubectl delete -f nginx-svc.yaml
    
    
    • 1
    • 2

    在这里插入图片描述

  • 相关阅读:
    CCL2022自然语言处理国际前沿动态综述——开放域对话生成前沿综述
    C# NAudio 音频库
    【Web前端二级导航栏】
    asp.net教师调课系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio
    FFmpeg 录制屏幕(简单实现)
    Database之SQL:SQL在线编程、工作中常用SQL代码实践(以语法为导向的增、删、改、查,已基本涵盖所有语法案例)之详细攻略
    2023 ICPC 网络赛 第一场(补题:F)
    基于Qt QList和QMap容器类示例
    10个让您震撼的Linux终端命令集合
    MR混合现实教学系统在汽车检修与维护课堂教学中的应用
  • 原文地址:https://blog.csdn.net/weixin_71429790/article/details/127690892