Skip to content

kubectl 常用命令

# 查看资源清单选项解释说明
$ kubectl explain  pod.spec.containers

# 查看资源对象
$ kubectl get pod
    -o wide    # 查看更多的信息,包括 Pod ip、pod 运行的节点
       yaml    # 将当前的资源对象输出为 yaml 文件
       json    # 将当前的资源对象输出为 json 文件
    -w         # 监听变换,将变化信息输出至前台
    --show-labels       # 查看标签
    -l         # 通过标签过滤当前的输出 -l app=nginx
    -n default          # 指定名字空间,默认即 default
    --all-namespaces == -A      # 查看所有名字空间中的对象

# 删除资源对象
$ kubectl delete 资源类别  对象名称
$ kubectl delete pod pod-demo
$ kubectl delete -f xxx.yaml
    --all   删除当前所有的资源对象
        kubectl delete pod --all 

# 实例化资源对象
$ kubectl create -f xxx.yaml/xxx.json 
    yaml   >   kubectl (yaml > json)  >  apiServer
    https://cloudmessage.top/archives/k8s-zai-windowszhong-shi-yong-kubectllian-jie-ji-qun

# 查看资源对象的详细信息(事件)    -   此条命令常用于排错
$ kubectl describe  资源类别  对象名称

# 让 pod 内部的容器执行命令
$ kubectl exec -it podName -c cName -- command
    kubectl exec -it pod-demo -c myapp-1 -- /bin/sh
    如果 pod 内部只封装了一个容器,那么 -c 可以省略

# 查看容器日志
$ kubectl logs podName -c cName
    kubectl  logs pod-demo -c myapp-1
    -p -c   # 查看已经停止的容器日志
    -f      # 持续输出容器日志信息
    --tail=20       # 查看容器最近20条日志
    --since=1h      # 查看容器最近一小时产生的日志

# 标签
$ kubectl label 资源类别  对象名称
    kubectl label pod pod-demo  version=v1   # 添加标签
    kubectl label pod pod-demo  app=tomcat --overwrite  # 修改存在的标签

# 调整控制器的副本数量
$ kubectl scale 资源类别  对象名称  --replicas=副本数
    kubectl scale rs rs-demo --replicas=10

# 修改资源对象,操作方式同 vim 一致
$ kubectl edit 资源类别  对象名称
    如果,修改完成后保存,但是回退,代表此资源无法修改

# 应用资源清单
$ kubectl apply -f xxx.yaml\xxx.json

# 修改控制器的镜像
$ kubectl  set image 资源类别/对象名 容器名=镜像名
    kubectl  set image deployment/nginx-deployment nginx=wangyanglinux/myapp:v2

# 滚动跟新相关命令
$ kubectl rollout status deployments nginx-deployment    # 查看当前此次滚动的信息,成功的返回码为 0,可以通过此返回码确认滚动的节点
$ kubectl rollout history deployment/nginx-deployment    # 查看当前滚动的历史记录,注意要想在其中显示版本对应的变化命令,必须在每一个执行命令后加上 --record
$ kubectl rollout undo deployment/nginx-deployment       # 回滚,默认回滚上一个版本
    --to-revision=2   # 可以使用 --revision  参数指定某个历史版本
$ kubectl rollout pause deployment/nginx-deployment      # 暂停 deployment 的更新
$ kubectl rollout resume deployment/nginx-deployment     # 恢复 deployment 的更新

# 对当前的资源对象进行补丁(更贴合 shell 脚本逻辑)
kubectl patch 资源类别  对象名 -p '{"spec":{"strategy":{"rollingUpdate":{"maxSurge":5,"maxUnavailable":0}}}}'
    spec:
      strategy:
        rollingUpdate:
          maxSurge: 5
          maxUnavailable: 0