1. 基础命令
1.1 查看帮助
- 1.kubectl help:查看kubectl的帮助信息。
1.2 版本信息
- 1.kubectl version:查看客户端和服务器的版本信息。
1.3 集群信息
- 1.kubectl cluster-info:查看集群的详细信息,包括集群的API服务器地址等。
1.4 资源对象类型
- 1.kubectl api-resources:列出当前Kubernetes系统支持的所有资源对象类型。
1.5 API版本
- 1.kubectl api-versions:列出当前Kubernetes系统支持的API版本。
1.6 获取资源信息
- 1.kubectl get [type] [name]:获取指定类型、名称的资源信息。
- 2.例如,kubectl get pods列出所有Pods,kubectl get nodes列出所有节点。
1.7 创建资源
- 1.kubectl create [type] [name] --参数:通过指定的参数和类型创建一个新的资源。
- 2.例如,kubectl create namespace mynamespace创建一个名为mynamespace的命名空间。
1.8 删除资源
- 1.kubectl delete [type] [name]:删除指定类型、名称的资源。
- 2.例如,kubectl delete pod mypod删除名为mypod的Pod。
1.9 编辑资源
- 1.kubectl edit [type] [name]:使用默认编辑器编辑服务器上定义的资源对象。
- 2.例如,kubectl edit pod mypod编辑名为mypod的Pod。
2. 部署命令
2.1 滚动发布
- 1.kubectl rollout [subcommand]:管理资源的滚动发布。
- 2.例如,kubectl rollout status deployment mydeployment查看名为mydeployment的Deployment的滚动更新状态。
2.2 缩放资源
- 1.kubectl scale [type] [name] --replicas=N:设置资源的新大小,即副本数。
- 2.例如,kubectl scale deployment mydeployment --replicas=5将名为mydeployment的Deployment的副本数设置为5。
2.3 自动缩放
- 1.kubectl autoscale [type] [name] --cpu-percent=M --min=N --max=P:根据CPU使用率自动调整Pod的数量。
- 2.例如,kubectl autoscale deployment mydeployment --cpu-percent=50 --min=1 --max=10根据CPU使用率在1到10个Pod之间自动调整。
3. 集群管理命令
3.1 证书管理
- 1.kubectl certificate [subcommand]:修改证书资源对象。
3.2 节点管理
- 1.kubectl cordon [node-name]:标记节点为不可调度。
- 2.kubectl uncordon [node-name]:取消标记节点为不可调度。
- 3.kubectl drain [node-name]:安全地驱逐节点上的所有Pods。
- 4.kubectl taint nodes [node-name] key=value:NoSchedule:给节点打污点,使其不可被调度。
- 5.kubectl untaint nodes [node-name] key=value:移除节点的污点。
3.3 资源使用
- 1.kubectl top [type]:显示资源的CPU、内存使用情况。
- 2.例如,kubectl top pods显示所有Pods的CPU、内存使用情况。
4. 故障排查和调试命令
4.1 描述资源
- 1.kubectl describe [type] [name]:显示指定资源的详细信息。例如,kubectl describe pod mypod显示名为mypod的Pod的详细信息。
4.2 查看日志
- 1.kubectl logs [pod-name]:输出Pod中容器的日志。例如,kubectl logs mypod输出名为mypod的Pod的日志。
4.3 进入容器
- 1.kubectl exec -it [pod-name] – /bin/bash:在指定容器内执行命令,并进入容器的bash环境。
- 2.例如,kubectl exec -it mypod – /bin/bash进入名为mypod的容器的bash环境。
4.4 端口转发
- 1.kubectl port-forward [pod-name] [local-port]:[pod-port]:将本机指定端口映射到Pod的端口。
- 2.例如,kubectl port-forward mypod 8080:80将本机的8080端口映射到名为mypod的Pod的80端口。
4.5 复制文件
- 1.kubectl cp /path/to/local/file [pod-name]:/path/to/remote/file:将本地文件复制到Pod中。
- 2.kubectl cp [pod-name]:/path/to/remote/file /path/to/local/file:从Pod中复制文件到本地。
5. 高级命令
5.1 对比配置
- 1.kubectl diff [type] [name] -f [file]:对比本地文件与kube-apiserver中运行的配置文件是否有差异。
5.2 应用配置
- 1.kubectl apply -f [file]:通过yaml/json文件或标准输入对资源进行配置更新或创建。
5.3 补丁更新
- 1.kubectl patch [type] [name] --type=‘json’ -p=‘[{“op”: “replace”, “path”: “/spec/replicas”, “value”:N}]’:通过补丁方式修改资源对象字段。
5.4 替换资源
- 1.kubectl replace -f [file]:通过yaml/json文件或标准输入来替换资源对象。
5.5 等待条件
- 1.kubectl wait --for=condition=[condition] [type] [name]:在一个或多个资源上等待条件达成。
6. 设置命令
6.1 标签管理
- 1.kubectl label [type] [name] [label-key]=[label-value]:给资源打标签。
- 2.例如,kubectl label pods mypod app=example给名为mypod的Pod打标签app=example。
6.2 注解管理
- 1.kubectl annotate [type] [name] [annotation-key]=[annotation-value]:给资源打注解。
- 2.例如,kubectl annotate pods mypod description='This is a test pod’给名为mypod的Pod打注解description=‘This is a test pod’。
7. 其他命令
7.1 配置管理
- 1.kubectl config [subcommand]:管理kubeconfig配置文件。
- 2.例如,kubectl config set-context my-context --current将当前上下文设置为my-context。
7.2 插件管理
- 1.kubectl plugin [subcommand]:运行命令行插件功能。
- 2.例如,kubectl plugin list列出已安装的插件。
7.3 自动补全
- 1.kubectl completion [shell]:为指定的shell(bash、zsh、fish或powershell)输出shell完成代码。
- 2.例如,echo “source <(kubectl completion bash)” >> ~/.bashrc为bash配置kubectl的自动补全。