Kubernetes命令行工具kubectl使用指南
1. kubectl简介
Kubernetes命令行工具(kubectl)是Kubernetes集群的命令行接口,用于管理集群资源和执行集群操作。要向主节点进行API调用,kubectl需要集群信息,它通过
<<<HOME_DIRECTORY>>>/.kube/config
文件(即kubeconfig文件)来获取这些信息,该文件包含集群、用户和上下文信息。
kubectl命令的一般语法如下:
kubectl [COMMAND] [TYPE] [NAME] [FLAGS]
常见操作命令如下:
- 创建Kubernetes资源:使用
kubectl create
命令。
- 创建或应用配置到Kubernetes资源:使用
kubectl apply
命令。
- 获取Kubernetes资源:使用
kubectl get
命令。
- 描述Kubernetes资源:使用
kubectl describe
命令。
- 删除Kubernetes资源:使用
kubectl delete
命令。
2. 定制kubectl输出
2.1 查看Pod相关信息
- 查看Pod名称和所在节点名称
kubectl get pods -o custom-columns='POD_NAME:.metadata.name, POD_NODE_NAME:.spec.nodeName'
- 以JSON格式查看Pod名称和所在节点名称
kubectl get pods -o json | jq '.items[] | "Pod name: " + .metadata.name + " ||| Node name: " + .spec.nodeName'
- 查看特定Pod的详细信息
kubectl get pod ha-nginx-pod -o wide
- 查看所有Pod的IP地址
kubectl get pods -o custom-columns='POD_NAME:.metadata.name, POD_IP:.status.podIPs'
- 查看所有容器的端口号
kubectl get pods -o custom-columns='POD_NAME:.metadata.name, POD_CONTAINER:.spec.containers[*].name, CONTAINER_PORT:.spec.containers[*].ports[*].containerPort'
2.2 格式化输出
- 以YAML格式查看当前Pod配置
kubectl get pod ha-nginx-pod -o yaml
- 以JSON格式查看当前Pod配置
kubectl get pod ha-nginx-pod -o json
- 仅查看Pod名称
kubectl get pod ha-nginx-pod -o name
2.3 排序对象
- 按Pod名称排序列出所有Pod
kubectl get pods --sort-by=.metadata.name
- 按阶段状态排序列出所有Pod
kubectl get pods --sort-by=.status.phase
3. 工作负载资源命令
| 资源类型 | 获取命令 | 删除命令 |
|---|---|---|
| DaemonSets |
kubectl get daemonsets
,
kubectl get daemonset
|
kubectl delete daemonset ha-daemonset
|
| StatefulSets |
kubectl get statefulsets
,
kubectl get statefulset
|
kubectl delete statefulset ha-statefulset
|
| ReplicaSets |
kubectl get replicasets
,
kubectl get replicaset
,
kubectl get rs
|
kubectl delete replicaset ha-replicaset
,
kubectl delete rs/ha-replicaset
|
4. 部署命令
4.1 列出部署
- 列出默认命名空间中运行的所有部署
kubectl get deployments
kubectl get deployment
- 列出任何命名空间中运行的所有部署
kubectl get deployments --all-namespaces
- 列出kube-system命名空间中运行的所有部署
kubectl get deployments --namespace=kube-system
- 获取特定部署
kubectl get deployment ha-nginx-deployment
4.2 操作部署
- 重启部署
kubectl rollout restart deployment ha-nginx-deployment
- 扩展部署的Pod数量
kubectl scale --replicas=4 deployment ha-nginx-deployment
- 更新部署的镜像版本
kubectl set image deployment/ha-nginx-deployment ha-nginx-c-1=nginx:1.10.2
- 查看部署的推出状态
kubectl rollout status deployment ha-nginx-deployment
- 查看部署的推出历史
kubectl rollout history deployment ha-nginx-deployment
- 回滚部署到先前版本
kubectl rollout undo deployment/ha-nginx-deployment --to-revision=2
5. 作业和CronJob命令
5.1 列出作业和CronJob
| 资源类型 | 默认命名空间 | 任何命名空间 | kube-system命名空间 | 获取特定资源 |
|---|---|---|---|---|
| Jobs |
kubectl get jobs
,
kubectl get job
|
kubectl get jobs --all-namespaces
|
kubectl get jobs --namespace=kube-system
|
kubectl get job ha-nginx-job-hello
|
| CronJobs |
kubectl get cronjobs
,
kubectl get cronjob
|
kubectl get cronjobs --all-namespaces
|
kubectl get cronjobs --namespace=kube-system
|
kubectl get cronjob ha-nginx-cronjob
|
5.2 操作作业和CronJob
- 打印作业日志
kubectl logs job/ha-nginx-job-hello
kubectl logs pod/<<<POD_NAME_OF_THE_JOB>>>
- 打印作业的详细状态信息
kubectl get job ha-nginx-job-hello -o jsonpath={.status}
- 显示作业的详细描述
kubectl describe job ha-nginx-job-hello
- 删除作业
kubectl delete job ha-nginx-job-hello
kubectl delete job/ha-nginx-job-hello
- 显示CronJob的详细描述
kubectl describe cronjob ha-nginx-cronjob
- 删除CronJob
kubectl delete cronjob ha-nginx-cronjob
kubectl delete cronjob/ha-nginx-cronjob
6. 网络命令
6.1 列出服务和Ingress
| 资源类型 | 默认命名空间 | 任何命名空间 | kube-system命名空间 | 获取特定资源 |
|---|---|---|---|---|
| Services |
kubectl get services
,
kubectl get svc
|
kubectl get services --all-namespaces
|
kubectl get services --namespace=kube-system
|
kubectl get service ha-service
|
| Ingress |
kubectl get ingress
| - | - | - |
6.2 操作服务和Ingress
- 显示服务的详细描述
kubectl describe service ha-service
- 删除服务
kubectl delete service ha-service
- 显示服务的端点
kubectl describe endpoints ha-service
- 描述特定Ingress
kubectl describe ingress ha-ingress-fanout
- 删除特定Ingress
kubectl delete ingress ha-ingress-fanout
- 显示服务的DNS信息
kubectl exec dnsutils -- nslookup ha-service
graph LR
A[kubectl命令] --> B[定制输出]
A --> C[工作负载资源命令]
A --> D[部署命令]
A --> E[作业和CronJob命令]
A --> F[网络命令]
B --> B1[查看Pod信息]
B --> B2[格式化输出]
B --> B3[排序对象]
C --> C1[DaemonSets]
C --> C2[StatefulSets]
C --> C3[ReplicaSets]
D --> D1[列出部署]
D --> D2[操作部署]
E --> E1[列出作业和CronJob]
E --> E2[操作作业和CronJob]
F --> F1[列出服务和Ingress]
F --> F2[操作服务和Ingress]
7. 存储命令
7.1 列出存储资源
- 列出所有持久卷(PV)
kubectl get pv
- 列出所有持久卷声明(PVCs)
kubectl get pvc
7.2 描述存储资源
-
显示持久卷
ha-persistent-volume的详细描述
kubectl describe pv ha-persistent-volume
-
显示持久卷声明
ha-persistent-volume-claim的详细描述
kubectl describe pvc ha-persistent-volume-claim
7.3 查看Pod关联的存储信息
kubectl get pod ha-pod-pv -o custom-columns='POD_NAME:.metadata.name, POD_VOLUME_NAME:.spec.volumes[0].name, POD_VOLUME_PVC:.spec.volumes[0].persistentVolumeClaim.claimName'
7.4 删除存储资源
- 删除持久卷
kubectl delete pv ha-persistent-volume
- 删除持久卷声明
kubectl delete pvc ha-persistent-volume-claim
7.5 列出配置映射和秘密
kubectl get configmap
kubectl get cm
kubectl get secret
8. 节点命令
8.1 列出节点
kubectl get nodes
kubectl get node
8.2 描述节点
kubectl describe node ha-node
8.3 查看节点资源使用情况
kubectl top node ha-node
8.4 标记节点状态
- 标记节点为不可调度
kubectl cordon ha-node
- 标记节点为不可调度并驱逐节点上的Pod
kubectl drain ha-node
- 标记节点为可调度
kubectl uncordon ha-node
8.5 操作节点污点
- 添加污点到节点
kubectl taint nodes ha-node tk1=tv1:NoSchedule
- 从节点移除污点
kubectl taint nodes ha-node tk1=tv1:NoSchedule-
8.6 删除节点
kubectl delete node ha-node
9. 总结
Kubernetes命令行工具
kubectl
是管理Kubernetes集群的强大工具,通过它可以方便地进行资源的创建、查看、修改和删除等操作。其常见操作命令如下:
|操作类型|命令|
| ---- | ---- |
|创建资源|
kubectl create
|
|创建或应用配置|
kubectl apply
|
|获取资源|
kubectl get
|
|描述资源|
kubectl describe
|
|删除资源|
kubectl delete
|
在使用
kubectl
时,需要通过
<<<HOME_DIRECTORY>>>/.kube/config
文件获取集群信息。同时,要注意不同资源类型的操作命令和参数,例如在部署操作中,要正确使用
kubectl rollout
系列命令来管理部署的状态和版本。
在学习和使用
kubectl
的过程中,建议参考官方文档,因为官方文档经过严格审核,内容更加准确可靠。希望大家能熟练掌握
kubectl
的使用,在Kubernetes集群管理中发挥其最大作用。
graph LR
G[kubectl存储命令] --> G1[列出存储资源]
G --> G2[描述存储资源]
G --> G3[查看Pod关联存储信息]
G --> G4[删除存储资源]
G --> G5[列出配置映射和秘密]
H[kubectl节点命令] --> H1[列出节点]
H --> H2[描述节点]
H --> H3[查看节点资源使用情况]
H --> H4[标记节点状态]
H --> H5[操作节点污点]
H --> H6[删除节点]
超级会员免费看
1645

被折叠的 条评论
为什么被折叠?



