kubernetes常用命令

kubectl相关

  • 关键词概念
    Pods
    Labels
    Replication Controller
    Services
    Volumes
    kubectl命令详细说明

  • 获取pod列表

    # 命令会返回当前kubernetes 已经创建的pods列表,主要会显示以下信息
    # NAME                    READY     STATUS    RESTARTS   AGE
    $ kubectl get pod
    # NAME                    READY     STATUS    RESTARTS   AGE
    # etcd-global-9002d       1/1       Running   0          2d
    # etcd-global-l3ph8       1/1       Running   0          2d
    # etcd-global-psj52       1/1       Running   0          2d
  • 查看pod详细信息

    # 使用pod名称查看pod的详细信息, 主要是容器的详细信息
    $ kubectl describe pod etcd-global-9002d
  • 查询部署列表

    # 获取部署列表
    $ kubectl get deployment
  • 删除部署

    # 删除名称为etcd-minikube的部署
    $ kubectl delete deployment etcd-minikube
  • 删除容器

    # 删除rc,即删除该rc控制的所有容器
    $ kubectl delete rc my-nginx
    
    # 删除svc,即删除分配的虚拟IP
    $ kubectl delete svc my-ngin
  • 获取Replication Controller

    # 获取Replication Controller列表
    $ kubectl get rc
  • 通过外部访问kubectl内部的端口

    # expose命令将会创建一个service,将本地(某个节点上)的一个随机端口关联到容器中的80端口
    $ kubectl expose rc my-nginx --port=80 --type=LoadBalancer
  • 查询服务信息

    # 以上通过expose创建了一个叫my-nginx的service,我们可以通过以下命令查询服务信息
    $ kubectl get svc my-nginx
  • 根据配置文件创建pod

    # 根据配置文件*.yaml创建容器
    $ kubectl create -f ./hello-world.yaml
  • 配置文件正确性校验

    # 使用--vaildate参数可以校验配置文件正确性
    $ kubectl create -f ./hello-world.yaml --validate
  • 查看日志

    # 查看vttablet的日志
    $ kubectl logs vttablet-100 vttablet
    
    # 查看vttablet中mysql的日志
    $ kubectl logs vttablet-100 mysql
  • shell登录

    # 通过kubectl exec 可以直接连接到对应的节点
    $ kubectl exec vttablet-100 -c vttablet -t -i -- bash -il
  • 查看service详细信息

    kubectl describe service etcd-global
  • RC副本数量修改

    # 可以通过本地动态修改RC副本数量实现动态扩容缩容
    kubectl scale rc xxxx --replicas=3
  • 查询Replica Set

    kubectl get rs
  • 查看Endpoints列表

    # 查看Endpoints 列表
    # Endpoint => (Pod Ip + ContainerPort)
    kubectl get endpoints
  • 查看namespaces

    kubectl get namespace
  • Node的隔离与恢复

    # 隔离Node,新创建的Pod不会在改node上创建了,但是已经创建的不会自动关闭
    kubectl patch node xxx -p '{"spec":{"unschedulable":true}}'
    
    # 解除Node的隔离, 可以在上面继续创建pod
    kubectl patch node xxx -p '{"spec":{"unschedulable":false}}'
    
    # 隔离还可以通过kubectl replace -f xxx.yaml 命令实现
  • Pod添加/删除/修改Label

    # 给pod xxx添加Lable app=vitess
    kubectl label pod xxx app=vitess
    
    # 删除pod xxx的Lable app
    kubectl label pod xxx app-
    
    # 修改pod xxx的标签
    kubectl label pod xxx app=mysql --overwrite
  • 查看Pod日志

    # 查看Pod下对应容器的日志, 使用-f可以直接监听文件变化
    $ kubectl logs -f <POD_NAME> -c <CONTAINER_NAME>

    查看Pod之前状态

    # 如果容器被kill的话可以通过以下命令查看容器关闭的原因,比如oom这类就可以查看
    $ kubectl get pod -o go-template='{{range.status.containerStatuses}}{{"Container Name: "}}{{.name}}{{"
    LastState: "}}{{.lastState}}{{end}}'  simmemleak-60xbc


    查看归属某个Zone的Node
    $ kubectl get nodes -lzone
     
原文地址:https://www.cnblogs.com/davygeek/p/8744100.html