kubectl 是 Kubernetes 的命令行工具,kubectl为Kubernetes官方提供了命令行工具(CLI),用户通过此命令行交互的方式与Kubernetes API Server(8080端口)进行通信。
1.基础命令
命令 |
说明 |
Kubectl create |
通过JSON/YAML文件或标准输入创建资源对象 |
kubectl apply |
通过文件创建/更新资源 |
Kubectl get |
获取一个或者多个资源对象 |
Kubectl expose |
将JSON/YAML文件中定义的资源对象的端口暴露给新的Service资源对象 |
Kubectl run |
创建并运行一个或者多个容器 |
Kubectl explain |
查看资源对象信息 |
Kubectl edit |
使用编辑器编辑资源对象 |
Kubectl delete |
删除资源对象 |
kubectl describe |
查看资源详情 |
示例:
#01 创建资源 创建nginx服务
kubectl create deployment nginx --image=nginx:1.22.0
kubectl apply -f deploy.yaml
#02 暴露为 Service
kubectl expose deployment nginx --port=80 --type=NodePort
#03 查看 pod资源、eployment资源、Service 资源
kubectl get pods,deployment,svc
kubectl get pods -o wide # 查看 Pod 及所在节点
#04 查看所有资源对象
kubectl api-resources
#查看单个资源对象的帮助文档
kubectl explain pod
#05 编辑资源对象
kubectl edit deploy nginx
#06 查看资源详细信息
kubectl describe pod nginx-68984b745f-g6wpj
kubectl describe deploy nginx
#07 删除资源
#根据文件删除
kuebctl delete -f nginx.yaml
#根据资源对象删除
kubectl delete pod nginx-68984b745f-g6wpj
kubectl delete deploy nginx
#删除所有资源对象
kubectl delete all --all
2.部署命令
命令 |
说明 |
Kubectl scale |
扩容或者缩容Deployment ReplicaSet Controller 控制器 |
Kubectl autoscale |
配置Kubernetes中水平自动伸缩Pod |
示例:
# 扩缩放 Deployment 流量高峰应对、蓝绿部署
kubectl scale deployment/nginx --replicas=3
#自动缩放 (HPA)
# 创建 HorizontalPodAutoscaler (需要 metrics-server)
kubectl autoscale deployment/nginx --min=2 --max=5 --cpu-percent=80
3.故障排查和调试命令
命令 |
说明 |
Kubectl describe |
显示资源对象详细信息 |
Kubectl logs |
输出Pod资源对象中的容器日志 |
Kubectl exec -it |
进入容器,在容器中运行命令 |
Kubectl cp |
复制文件到Pod |
示例:
#01 查看资源详细信息
kubectl describe pod nginx-68984b745f-g6wpj
#02 查看容器日志
kubectl logs -f nginx-68984b745f-g6wpj
#03 进入容器
kubectl exec -it nginx-68984b745f-g6wpj /bin/bash
#直接执行命令,不进入容器
kubectl exec nginx-68984b745f-g6wpj -- ls /
#04 拷贝文件到容器
kubectl cp nginx.yaml nginx-68984b745f-g6wpj:/
4.集群管理命令
命令 |
说明 |
kubectl top |
显示cpu、内存使用情况 |
kubectl cordon |
将指定节点标记为不可调度 |
kubectl cluster-info |
查看集群信息 |
kubectl uncordon |
将指定节点标记为可调度 |
kubectl drain |
驱逐指定节点上面的pod |
kubectl taint |
给指定节点设置污点 |
示例:
#01 查看cpu、和内存使用率,必须安装Metrics Server
# 查看所有节点的资源使用情况
kubectl top nodes
# 查看特定节点
kubectl top node node-2
#查看当前命名空间所有 Pod 的资源使用
kubectl top pods
#02 将节点标记为不可调度
kubectl cordon node-3
#03 查看集群信息
kubectl cluster-info
#04 将节点标记为可调度
kubectl uncordon node-3
#05 驱逐指定节点上面的pod,会先标记节点不可调度(相当于自动执行cordon),然后驱逐所有pod
kubectl drain node-2 --ignore-daemonsets
#06 设置污点 PreferNoSchedule尽量不调度到该节点、
#NoSchedule不接受新的pod、
#NoExecute不接受新pod并且现有pod会被驱逐
kubectl taint node node-2 school=liux:PreferNoSchedule
#删除节点2上面的school污点
kubectl taint node node-2 school-
5.其他常用命令补充
命令 |
说明 |
Kubectl label |
资源的标签管理 |
示例:
#给节点打标签 标记为生产环境 --overwrite覆盖现有标签
kubectl label nodes node-1 environment=production
#给pod打标签
kubectl label pod nginx class=nginx
#删除标签
kubectl label nodes node-1 environment-
kubectl label pod nginx class-
#查看节点的标签
kubectl get nodes --show-labels
#查看pod的标签
kubectl get pods --show-labels