kubernetes命令合集

一、基本命令
    create
    expose
    run
    set

    explain
    get 
    edit
    delete

二、部署命令
    rollout
    scale
    autoscale

三、集群管理命令
    certificate
    cluster-info
    top
    cordon
    uncordon
    drain
    taint
    
四、问题排查处理
    describe
    logs
    attach
    exec
    port-forward
    proxy
    cp
    auth
    debug
    events

五、高级命令
    diff
    apply
    patch
    replace
    wait
    kustomize
    
六、设置指令
    label
    annotate
    completion

七、其他命令
    api-resources
    api-version
    config
    plugin
    version



一、基本命令
    1. create
    说明:从文件或者标注输入中创建资源
    指令:
          clusterrole                   Create a cluster role
          clusterrolebinding    Create a cluster role binding for a particular cluster role
          configmap                     Create a config map from a local file, directory or literal value
          cronjob                           Create a cron job with the specified name
          deployment                    Create a deployment with the specified name
          ingress                           Create an ingress with the specified name
          job                                   Create a job with the specified name
          namespace                   Create a namespace with the specified name
          poddisruptionbudget   Create a pod disruption budget with the specified name
          priorityclass                     Create a priority class with the specified name
          quota                                 Create a quota with the specified name
          role                                  Create a role with single rule
          rolebinding                  Create a role binding for a particular role or cluster role
          secret                            Create a secret using specified subcommand
          service                           Create a service using a specified subcommand
          serviceaccount        Create a service account with the specified name
          token                             Request a service account token
    常用选项options
    --dry-run: 模拟运行,而不是提交给api
    -f: 指定文件、目录或URL来创建资源
    -o: 输入格式:可以为yaml,json等
    -l: 标签选择过滤
    常用案例:
    1) 创建deployment
        kubectl create deploy dep-test --image=busybox --replicas=2 --port=5701 -n app
        参数说明:
        --port: 指定容器运行端口
        --replicas: 指定运行副本数
    2) 创建ingress
        kubectl create ingress ingress-test --class=default --rule="foo.com/app*=svc:port"
        kubectl create ingress ingress-test --class=default --rule="foo.com/app=svc:port"
        参数说明:
        --class: 指定ingress class
        --rule: 指定rules匹配规则 格式为: host/path=service:port,注意:如果path包含*,表示pathType为Prefix,反之则是Exact
    3) 创建RBAC
        3.1 创建serviceaccount
            kubectl create serviceaccout sa-test
        3.2 创建role
            kubectl create role test-role --verb=get,list,create,watch --resource=pod
            kubectl create role foo -n cka --resource=rs.apps,pod,deployment --verb=get,list,watch
            参数说明:
            verb: 指定可执行的权限动作
            resource: 指定role作用对象
        3.3 创建clusterrole
            kubectl create clusterrole NAME --verb=verb --resource=resource.group
            kubectl create clusterrole pod-reader --verb=get,list,watch --resource=pod
        3.4 创建rolebinding
            kubectl create rolebinding test --role=test --serviceaccount=default:test
            参数说明:
            --role:指定role对象
            --serviceaccount: 指定sa
            --user: 指定用户
        3.5 创建clusterrolebinding
            kubectl create clusterrolebinding cluster-admin --clusterrole=cluster-admin --user=user2 --group=group1
        

    1.2 expose
        说明:Expose a resource as a new Kubernetes service
            resource包含:pod,service,rc,deploy,rs等
        案例:
        kubectl expose  rc nginx --port=80 --target-port=8080
        kubectl expose pod nginx-test --port=80 --target-port=8000
        参数说明:
        -l: 指定标签
        --port: 指定服务端口
        --protocol: 指定协议,默认TCP
        --selector: 指定标签选择器
        --target-port: 指定容器端口
        --type: 指定服务类型
    1.3 run
        说明: Create and run a particular image in a pod
        案例:
            kubectl run ng --image=nginx
            kubectl run ng --image=nginx --port=80 --restart=Never --labels="env=dev" --env="username=luoxianming" 
        参数:
        --env: 指定环境变量
        --port: 指定容器端口
        --restart: 指定重启策略
        --privileged=false:指定是否特权模式
        
    1.4 set
        说明:These commands help you make changes to existing application resources
        可用命令:
              env              Update environment variables on a pod template
              image            Update the image of a pod template
              resources        Update resource requests/limits on objects with pod templates
              selector         Set the selector on a resource
              serviceaccount   Update the service account of a resource
              subject          Update the user, group, or service account in a role binding or cluster role binding
        案例:
            更新镜像
            kubectl set image deploy front-end nginx=nginx:1.15
            查看更新状态
            kubectl rollout status deploy front-end
            更新环境变量
            kubectl set env deploy registry SRORAGE_DIR=/data
            更新资源限制
            kubectl set resources deploy registry --limits=cpu=200m,memory=512Mi --requests=cpu=100m,memory=200Mi
            更新pod模板的serviceaccount
            kubectl set serviceaccount deployment nginx-deployment luo
        参数说明:
        --all: 在指定名称空间中选择所有指定类型的资源
        -c: 指定容器
        -e: 指定env

    1.5 explain
    说明:对象说明文档
    格式:.[.]
    案例:
        kubectl explain pod.spec
        
    1.6 get 
    说明:展示一个或多个资源
    参数:
    -A: all-namespace
    -l:   选择指定标签
    --show-labes: 标签展示
    -w: watch
    案例展示:
    kubectl get all
    kubectl get resouces --all-namespaces
    参数:
    -A: --all-namespaces
    -l: 标签选择器
    --show-labels: 展示标签
    -o wide: 扩展输出
    
    
    1.7 edit
    说明:编辑资源
    
    1.5 delete
    说明:删除指定对象
    案例:kubectl delete po -l app=registry
                通过标签删除指定对象
                kubectl delete po --all
    参数:
    --cascade:    级联删除。默认为true,例如删除rs,rs所管理的pod也会被删除
    --all: 指定所有资源
    --grace-period: 优雅删除。删除资源前等待的秒数,负数表示忽略该选项
    --timeout: 删除资源超时设置
    --force: 立即删除。会绕过优雅删除,可能会导致数据丢失,确认后执行
    
二、部署命令
    2.1 rollout
    说明: 管理回滚资源
    资源类型:
        deployments
        daemonsets
        statefulsets
    可用命令:
          history       View rollout history
          pause         Mark the provided resource as paused
          restart         Restart a resource
          resume        Resume a paused resource
          status        Show the status of the rollout
          undo          Undo a previous rollout
    案例:
        前提:使用--record记录
        kubectl set image deploy nginx nginx=nginx:1.15 --record
        查看回滚状态
        kubectl rollout status deploy registry
        查看历史版本
        kubectl  rollout history deploy registry
        回滚到指定版本
        kubectl rollout undo deploy foo -n cka --to-revision=2
        回滚到上一个版本
        kubectl rollout undo deploy foo -n cka 
        
    2.2 scale
    说明:Set a new size for a deployment, replica set, or replication controller
    案例:
                指定多个rc控制器
                    kubectl scale --replicas=5 rc/foo rc/bar rc/baz
                
    2.3 autoscale
    说明:Creates an autoscaler that automatically chooses and sets the number of pods that run in a Kubernetes cluster
                An autoscaler can automatically increase or decrease number of pods deployed with in the system as needed
    案例:
        kubectl autoscale rc foo --max=5 --cpu-percent=80
    注意:autoscale依赖于 Metrics,需要集群事先有安装该插件
    

三、集群管理命令
    3.1 certificate
    说明:Modify certificate resources.
    可用子命令:
      approve       Approve a certificate signing request
      deny          Deny a certificate signing request
    子命令说明:
        kubectl certificate approve allows a cluster admin to approve a certificate signing request (CSR)
    案例:
        kubectl certificate approve csr-sqgzp
    
    3.2 cluster-info
    说明:Display addresses of the control plane and services with label kubernetes.io/cluster-service=true

    3.3 top
    说明:The top command allows you to see the resource consumption for nodes or pods
    子命令:
          node          Display resource (CPU/memory) usage of nodes
          pod           Display resource (CPU/memory) usage of pods
    参数说明:
    -l: 指定标签选择
    --sort-by: 按照CPU或者内存排序(cpu|memory)
    案例:
        kubectl top node
        kubectl top node node-name
        kubectl top po registry-84b6d797b-26xn6 
        按照CPU排序
        kubectl top node --sort-by=cpu
        按照内存排序
        kubectl top node --sort-by=memory
        
    4.3 cordon
    说明:Mark node "foo" as unschedulable
    案例: 
        kubectl cordon foo
    
    
    4.4 uncordon
    说明:Mark node as schedulable
    案例:
        kubectl uncordon k8s-node01
    
    4.5 drain
    说明:Drain node in preparation for maintenance
    注意:
    1.1 drain wait for graceful termination,You should not operate on the machine until the command completes
    参数:
    --delete-emptydir-date: 
    --force: 当一些pod不是经过RC、RS、Job等控制器管理时,需要使用--force强制执行
    --grace-period: 指定优雅删除等待时间
    --ignore-daemonsets: 忽略Daemonset 管理的pod
    --pod-selector: 标签选择器过滤pod
    案例:
    kubectl drain k8s-node1 --force --ignore-daemonsets

    4.6 taint
    说明:Update the taints on one or more nodes
    格式:key=value:effect
    案例:
        1. 添加污点
        kubect taint node k8s-node1 app=web:NoSchedule
        2. 删除污点
        kubectl taint node k8s-node1 app:NoSchedule-    
        kubectl taint node k8s-node1 app-
        3. 在有标签app=web的node上添加污点
        kubectl taint node -l app=web app=web:PreferNoSchedule
    effect类型:
        NoSchedule: k8s不会将pod调度到该污点的node上
        PreferNoScheduler: k8s尽量避免将pod调度到该污点的node上
        NoExecute:k8s不会将pod调度到具有该污点的node上,同时会将node上已经存在的pod驱逐
    注意: taint是针对node而言,容忍度是针对pod而言
    
五、问题排查处理
    5.1 describe
    说明:Show details of a specific resource or group of resources.
    案例:
        kubectl descibe node k8s-node1
    
    5.2 logs
    说明:print the logs for a container in a pod or specified resource
    案例:
        1. 查看最近20行日志
            kubectl logs --tail=20 nginx 
        2. 查看最近一个小时的日志
            kubectl logs --since=1h nginx
    参数:
    -c: 指定容器
    --previous: 输出pod曾经运行过,但是目前已经终止的容器日志
    --since: 输出相对时间范围之内的日志。默认返回所有日志
    --timestamps: 在日志中包含时间戳
    --since-time: 仅返回指定时间之后的日志
    
    5.3 attach
    说明:Attach to a process that is already running inside an existing container.
    案例:
        kubectl attach mypod
        
    5.4 exec
    说明:Execute a command in a container
    案例:
        1. 执行命令
            kubectl exec demo-deploy-66799b89cc-lm7jl -n app -- date
    参数:
    -c: 指定容器
    -i: 标准输入到容器
    -t: 分配TTY
    
    5.5 port-forward
    说明:Forward one or more local ports to a pod
    可以将本地上计算机的端口转发到k8s集群中的Pod和service上,port-forward 命令只是一种方便的调试工具,不应该在生产环境中使用
    案例: 
        kubectl port-forward pod/mypod 5000 6000
        my-pod 的 Pod 的端口 80 转发到本地计算机上的端口 8080
        kubectl port-forward my-pod 8080:80
        查看端口
        netstat -tunpl | grep 8080
        验证本地是否可以访问
        curl 127.0.0.1:8080
        
    5.6 cp
    说明: 复制 files 和 directories 到 containers 和从容器中复制 files 和 directories
    注意:requires that the 'tar' binary is present in your container image.  If 'tar' is not present, 'kubectl cp' will fail
    案例:
     kubectl cp /tmp/foo_dir :/tmp/bar_dir
    
    5.7 auth
    说明: Inspect authorization
    子命令:
      can-i       Check whether an action is allowed
      reconcile   Reconciles rules for RBAC Role, RoleBinding, ClusterRole, and ClusterRole binding objects
    1. 检查操作,操作类型: 
        get,list,watch,delete等,
    2. 协调RBAC角色、角色绑定、集群角色和集群角色绑定等
    案例:
        1. 检查是否可以在任何命名空间创建Pod
            kubectl auth can-i create pods --all-namespaces
        2. 检查是否可以在当前名称空间列出部署    
            kubectl auth can-i list deployments.apps
        3. 协调文件中的RBAC资源
            kubectl auth reconcile -f my-rbac-rules.yaml

    
    5.8 debug
    说明:Debug cluster resources using interactive debugging containers
    案例:
        kubectl debug demo-deploy-66799b89cc-lm7jl -n app  -it --image=busybox --target=demo-deploy
    参数说明:
       --image: 指定debug的镜像工具
       --target: 指定被debug的容器名称
 

六、高级命令
    6.1  diff
    说明:Diff configurations specified by filename or stdin between the current online configuration, and the configuration as it
          would be if applied
    案例: 
        kubectl diff -f pod.json
    
    6.2 apply
    说明:Apply a configuration to a resource by filename or stdin
    案例:
    kubectl apply -k dir/
    
    6.3 patch
    说明: Update field(s) of a resource using strategic merge patch, a JSON merge patch, or a JSON patch
           更新修改资源的字段
    案例: 
         kubectl patch node k8s-node-1 -p '{"spec":{"unschedulable":true}}'
    6,4 replace
    说明: Replace a resource by filename or stdin.
    案例: 
         Force replace, delete and then re-create the resource
         kubectl replace --force -f ./pod.json
         
    6.5 wait
    说明:Wait for a specific condition on one or many resources
    kubectl wait --for=delete pod/busybox1 --timeout=60s
    
七、设置指令
    7.1 label
    说明:Update the labels on a resource
    案例: 
        1. 更新标签
        kubectl label pods foo unhealthy=tru
        2. 删除标签
        kubectl label pods foo bar-
    7.2 annotate
    说明:Update the annotations on one or more resources
    案例: 
         kubectl annotate pods foo description='my frontend'
         kubectl annotate po -n app demo-deploy-66799b89cc-lm7jl env="this is a test"


八、其他命令
    8.1 api-resources
    说明: 查看api资源
    8.2 api-version
    说明:查看api版本
    8.3 config
    说明:Modify kubeconfig files using subcommands like "kubectl config set current-context my-context"
    子命令:
          current-context 显示 current_context
          delete-cluster  删除 kubeconfig 文件中指定的集群
          delete-context  删除 kubeconfig 文件中指定的 context
          delete-user     Delete the specified user from the kubeconfig
          get-clusters    显示 kubeconfig 文件中定义的集群
          get-contexts    描述一个或多个 contexts
          get-users       Display users defined in the kubeconfig
          rename-context  Renames a context from the kubeconfig file.
          set             设置 kubeconfig 文件中的一个单个值
          set-cluster     设置 kubeconfig 文件中的一个集群条目
          set-context     设置 kubeconfig 文件中的一个 context 条目
          set-credentials 设置 kubeconfig 文件中的一个用户条目
          unset           取消设置 kubeconfig 文件中的一个单个值
          use-context     设置 kubeconfig 文件中的当前上下文
          view            显示合并的 kubeconfig 配置或一个指定的 kubeconfig 文件

    8.4 plugin
    说明:插件管理
    kubectl plugin list
    
    8.5 version
    说明:查看版本

你可能感兴趣的:(kubernetes,大数据,数据库)