• k8s--基础--10.2--命令--kubectl--常用命令


    k8s–基础–10.2–命令–kubectl–常用命令


    前提

    使用root用户
    
    • 1

    1、api-versions

    1.1、语法

    kubectl api-versions [flags]
    
    • 1

    列出可用的api版本

    1.2、案例

    root@master1 k8s]# kubectl api-versions 
    admissionregistration.k8s.io/v1
    admissionregistration.k8s.io/v1beta1
    .
    .
    .
    rbac.authorization.k8s.io/v1
    rbac.authorization.k8s.io/v1beta1
    scheduling.k8s.io/v1
    scheduling.k8s.io/v1beta1
    storage.k8s.io/v1
    storage.k8s.io/v1beta1
    v1
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    2、apply

    2.1、语法

    kubectl apply -f FILENAME [flags]
    
    • 1

    使用文件或者标准输入来创建或者更新k8s的资源

    2.2、案例:指定文件创建资源

    # 使用kubernetes-dashboard.yaml  创建dashboard资源
    kubectl apply -f /root/k8s/kubernetes-dashboard.yaml 
     
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    2.3、案例:指定目录创建资源

    # 使用 /root/k8s/test 路径下的任意 .yaml, .yml, 或 .json 文件 创建资源
    kubectl apply -f /root/k8s/test
    
    • 1
    • 2

    在这里插入图片描述

    3、get

    3.1、语法

    kubectl get (-f FILENAME | TYPE  NAME | TYPE/NAME | TYPE -l label ) [--watch] [--sort-by=FIELD] [[-o | --output]=OUTPUT_FORMAT] [flags]
    
    • 1

    列出一个或多个资源。

    3.2、案例:列出所有pod

    
    kubectl -n kube-system  get pods
    
    • 1
    • 2

    在这里插入图片描述

    3.3、案例:列出所有pod,并包含附加信息(如节点名)

    kubectl -n kube-system get pods -o wide
    
    • 1

    在这里插入图片描述

    3.4、案例:列出具有指定名称的副本控制器类型 的pod

    你可以使用别名 'rc’替换 ‘replicationcontroller’ 类型的资源。

     
    # 列出 replicationcontroller 类型的资源
    kubectl get replicationcontroller 
    
    • 1
    • 2
    • 3

    3.5、案例:列出所有 副本控制器和服务类型 的pod

    
    kubectl  get rc,services
    
    • 1
    • 2

    在这里插入图片描述

    3.6、案例:列出所有 守护程序集类型 的pod

    kubectl -n kube-system get ds
    
    • 1

    在这里插入图片描述

    3.7、案例:列出 节点master1 上运行的所有 pod

    kubectl -n kube-system get pods --field-selector=spec.nodeName=master1
    
    • 1

    在这里插入图片描述

    4、delete

    4.1、语法

    kubectl delete (-f FILENAME | TYPE  NAME | TYPE/NAME | -l label | --all]) [flags]
    
     
    
    
    • 1
    • 2
    • 3
    • 4

    从文件、标准输入或指定标签选择器、名称、资源选择器或资源中删除资源。

    4.2、案例:使用 指定文件 删除资源

    使用kubernetes-dashboard.yaml  文件中指定的类型和名称删除 pod。
    kubectl delete -f /root/k8s/kubernetes-dashboard.yaml 
    
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    4.3、案例:使用 标签名 删除资源

    # 可以通过describe获取标签
    # 删除标签名=  的所有pod 和服务。
    kubectl -n kube-system  delete pods,services -l name=
    
    • 1
    • 2
    • 3

    4.4、案例:使用 标签名 删除pod,包括未初始化的 pod

    # 删除所有具有标签名称=  的 pod 和服务,包括未初始化的那些。
    kubectl delete pods,services -l name= --include-uninitialized
    
    • 1
    • 2

    4.5、案例:删除所有 pod,包括未初始化的 pod

    kubectl  -n kube-system   delete pods --all
    
    
    • 1
    • 2

    在这里插入图片描述

    5、describe

    5.1、语法

    kubectl describe (-f FILENAME | TYPE  NAME_PREFIX | TYPE/NAME | TYPE -l label ) [flags]
    
    • 1

    显示一个或多个资源的详细状态,默认情况下包括未初始化的资源。

    5.2、案例:显示 节点的详细信息

     
    kubectl describe nodes 
    
    显示 master1 节点的详细信息 
    kubectl describe nodes master1
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    5.3、案例:显示pod名称为 podName 的详细信息。

    kubectl -n kube-system  describe pod  podName
    
    显示pod名称为  etcd-master1 的详细信息。
    kubectl -n kube-system  describe pod  etcd-master1
     
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    5.4、案例:显示由名为 的副本控制器管理的所有 pod 的详细信息

     
    # 记住:副本控制器创建的任何 pod 都以复制控制器的名称为前缀。
    kubectl describe pods 
    
    • 1
    • 2
    • 3

    5.5、案例:显示所有的 pod的详细信息

    内容非常多,我只截了一点点

    kubectl -n kube-system describe pods
    
    • 1

    在这里插入图片描述

    6、edit

    6.1、语法

    kubectl edit (-f FILENAME | TYPE NAME | TYPE/NAME) [flags]
    
    • 1
    1. 编辑和更新服务器上一个或多个资源的定义
    2. 编辑后就生效

    6.2、案例:编辑某个pod的定义

    # 编辑 pod中,名称为etcd-master1的定义
    kubectl -n  kube-system edit pod etcd-master1
    
    • 1
    • 2

    在这里插入图片描述

    7、exec

    7.1、语法

    kubectl exec pod-name [-c CONTAINER-name] [-i] [-t] [flags] [-- COMMAND [args...]]
    
    • 1

    对pod中的容器执行命令。

    7.2、案例: 进入名称为etcd-master1的pod,执行date命令

    进入名称为etcd-master1的pod,执行date命令

    kubectl -n  kube-system exec etcd-master1 -- date
    
    • 1

    在这里插入图片描述

    7.3、案例: 进入容器,执行date命令

    进入名称为etcd-master1的pod,名称为etcd的容器,执行date命令

    kubectl -n  kube-system exec etcd-master1 -c etcd -- date
    
    
    • 1
    • 2

    在这里插入图片描述

    7.4、案例: 进入POD

    kubectl -n  kube-system exec  -it etcd-master1 -- /bin/sh
    
    
    • 1
    • 2

    在这里插入图片描述

    8、logs

    8.1、语法

    kubectl logs POD [-c CONTAINER] [--follow] [flags]
    
    • 1

    在pod中打印容器的日志。

    8.2、案例:打印日志

     
    kubectl logs 
    
    # 打印etcd-master1中容器的日志
    kubectl -n  kube-system logs etcd-master1  
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    8.3、案例:打印日志

    类似于 ‘tail -f’ 命令

    kubectl logs -f 
    
    
    # 打印etcd-master1中容器的日志
    kubectl -n  kube-system logs -f etcd-master1  
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    9、explain

    9.1、语法

    kubectl explain [--recursive=false] [flags]
    
    • 1
    1. 获取多种资源的文档。例如pod, node, service 等
    2. 相当于帮助命令,告诉我们怎么创建资源

    9.2、案例:获取pod的文档

    kubectl explain pod
    
    
    • 1
    • 2

    在这里插入图片描述

    10、expose

    10.1、语法

    kubectl expose (-f FILENAME | TYPE NAME | TYPE/NAME) [--port=port] [--protocol=TCP|UDP] [--target-port=number-or-name] [--name=name] [--external-ip=external-ip-of-service] [--type=type] [flags]
    
    • 1
    1. 将一个资源(replication controller、service、deployment和pod)作为新的K8s服务。
    2. expose按名称查找deployment、service、RS、RC或pod,并将该资源的选择器用作指定端口上新服务的选择器。
    3. 只有当选择器仅包含matchLabels组件时,才会暴露为服务。

    10.2、案例

    kubectl expose rc nginx --port=80 --target-port=8000
     
    
    
    
    • 1
    • 2
    • 3
    • 4
    1. port表示Service暴露在Cluster IP上的端口,提供给集群内部访问的Service的入口
    2. targetPort是Pod上的端口,数据从port或者nodePort流入,经过kube-proxy最后到Pod的targetPort上进入容器。

    11、run

    11.1、语法

    kubectl run NAME --image=image [--env="key=value"] [--port=port] [--dry-run=server | client | none] [--overrides=inline-json] [flags]
    
    • 1

    在集群上运行指定的镜像

    11.2、案例:启动nginx实例

    启动nginx实例
    kubectl run nginx --image=nginx
    
    • 1
    • 2

    因为我命令里面没有指定空间,所以是在默认空间
    在这里插入图片描述

    12、autoscale

    12.1、语法

    kubectl autoscale (-f FILENAME | TYPE NAME | TYPE/NAME) [--min=MINPODS] --max=MAXPODS [--cpu-percent=CPU] [flags]
    
    • 1

    自动调整deployment、rs或者rc的副本数量

    12.2、案例:使用默认的自动伸缩策略,指定目标CPU使用率,使其Pod数量在2到10之间。

    # 使用 Deployment "foo"设定,使用默认的自动伸缩策略,指定目标CPU使用率,使其Pod数量在2到10之间
    
    
    kubectl autoscale deployment foo --min=2 --max=10
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    12.3、案例:使用默认的自动伸缩策略,使其Pod的数量介于1和5之间,CPU使用率维持在80%。

    kubectl autoscale rc foo --max=5 --cpu-percent=80
    
    • 1

    13、用户角色绑定

    
    kubectl create rolebinding lucky-admin-rolebinding -n lucky --clusterrole=cluster-admin --serviceaccount=lucky:lucky-admin
    
    
    • 1
    • 2
    • 3
    1. 在lucky名称空间下创建一个rolebinding,名字叫做lucky-admin-rolebinding
    2. 将lucky名称空间下的lucky-admin账号通过clusterrole绑定集群角色cluster-admin,这样lucky-admin账号就有了cluster-admin角色的权限。
    3. lucky-admin账号的权限只能限制在lucky名称空间下

    14、切换账号

    # 切换账号到 集群用户,有任何权限(因为后面操作需要这个用户权限)
    kubectl config use-context kubernetes-admin@kubernetes 
    
    • 1
    • 2

    15、创建 monitor-sa 名称空间

    kubectl create ns monitor-sa
    
    
    • 1
    • 2
  • 相关阅读:
    Kotlin协程基础-CoroutineContext
    QML-编辑框的使用
    利用宏定义在编译阶段检查结构体大小的方法
    MPI转以太网模块在施耐德Vijeo_Citect 中的配置方式
    黄金回收小程序开发功能有哪些?
    智慧城市的应用挑战,昇腾AI给出了新解法
    LeetCode 2656. K 个元素的最大和【数学】简单
    勤于奋国外LEAD最近一些常态
    C++设计模式-创建型设计模式:构建者(Builder)
    【力客热题HOT100】-【061】207 课程表
  • 原文地址:https://blog.csdn.net/zhou920786312/article/details/126232011