22、Kubernetes命令行工具kubectl使用指南

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[删除节点]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值