Kubernetes Kubectl常用命令

Basic Commands

命令 描述
create/apply 从文件或stdin创建资源
expose 为deployment、pod创建service
run 在集群中运行指定的镜像
set 在对象上设置一个specific
get 最基本的查询命令 可以get一切资源信息
explain 查看资源定义,如 kubectl explain replicaset
edit 使用系统编辑器编辑资源 kubectl edit deploy/foo
delete 删除指定资源,支持文件名、资源名、label selector。kubectl delete po -l foo=bar

Deploy Commands

命令 描述
rollout Deployment、DaemonSet的升级过程管理 查看状态、操作历史、暂停升级、恢复升级、回滚
rolling-update 客户端滚动升级,仅限ReplicationController
scale 修改Deployment、ReplicaSet、ReplicationController,Job的实例数
autoscale 为Deployment、ReplicaSet、ReplicationController配置自动伸缩规则,依赖heapster和hpa

Cluster Management Commands

命令 描述
certificate 修改证书资源
cluster-info 查看集群信息
top 查看资源占用率 依赖heapster
cordon 封锁。标记节点为unschedulable
uncordon 解封。标记节点为schedulable
drain 驱逐节点上的应用,准备下线维护
taint 污染。修改节点taint标记

Troubleshooting and Debugging Commands

命令 描述
describe 查看资源详情
logs 查看pod内的容器日志
attach attach到pod内的一个容器
exec 在指定的容器内执行命令
port-forward 为pod创建本地端口映射
proxy 为kubernetes API server创建代理
cp 容器内外、容器间文件拷贝

Advanced Commands

命令 描述
apply 从文件或者stdin创建、更新资源
patch 使用Strategic merge patch语法更新对象的某些字段
replace 从文件或者stdin更新资源
convert 在不同API版本之间转换对象定义

Settings Commands

命令 描述
label 给资源设置label
annotate 给资源设置annotation
completion 获取shell自动补全脚本 支持bash和zsh

Others Commands

命令 描述
api-versions 打印服务器上支持的API版本
config 修改kubectl配置 kubeconfig文件
help 帮助文档
version 查看客户端和server端的k8s版本

Kubectl实用技巧

Kubectl命令助记

  • 查看资源缩写

    kubectl api-resources
    kubectl describe

  • 配置kubectl自动完成

    source <(kubectl completion bash)

  • 重启Deployment

1
2
kubectl patch deployment <deployment-name> \
-p '{"spec":{"template":{"spec":{"containers":[{"name":"<container-name>","env":[{"name":"RESTART_","value":"'$(date +%s)'"}]}]}}}}'

Kubectl生成yaml

  • 用run命令生成

    kubectl run --image=nginx my-deploy -o yaml --dry-run > my-deploy.yaml

  • 用get命令生成

    kubectl get statefulset/foo -o=yaml --export > new.yaml

  • Pod亲和性下面的字段拼写忘记了

    kubectl explain pod.spec.affinity.podAffini

关注公众号 尹安灿