仅限腾讯云TKE集群中使用,其他容器集群或者自建仅参考,依赖于环境

1,节点相关

表格输出各节点占用的 podCIDR

kubectl get no -o=custom-columns=INTERNAL-IP:.metadata.name,EXTERNAL-IP:.status.addresses[1].address,CIDR:.spec.podCIDR
INTERNAL-IP             EXTERNAL-IP     CIDR
172.30.2.5              139.186.202.9   172.16.0.0/26

表格输出各节点总可用资源 (Allocatable)
kubectl get no -o=custom-columns="NODE:.metadata.name,ALLOCATABLE CPU:.status.allocatable.cpu,ALLOCATABLE MEMORY:.status.allocatable.memory"
NODE                    ALLOCATABLE CPU   ALLOCATABLE MEMORY
172.30.2.5              1930m             1347064Ki

输出各节点已分配资源的情况
kubectl get nodes --no-headers | awk '{print $1}' | xargs -I {} sh -c "echo {} ; kubectl describe node {} | grep Allocated -A 5 | grep -ve Event -ve Allocated -ve percent -ve --;"

2,查询所有节点挂载卷信息

kubectl  get node  -ocustom-columns='节点名称:.metadata.name,容器网段:.spec.podCIDR,eni-ip配额:.status.capacity."tke\.cloud\.tencent\.com\/eni-ip",挂卷:.status.volumesInUse'

3,查询所有节点IP和实例ID

##
kubectl  get node  -ocustom-columns=节点名称:.metadata.name,节点IP:节点IP.status.addresses[0].address,实例ID:.metadata.labels."cloud\.tencent\.com\/node-instance-id",providerID:.spec.providerID
##查看节点的内核版本
kubectl  get node  -ocustom-columns=节点名称:.metadata.name,节点内核:.status.nodeInfo.kernelVersion,节点UUID:.status.nodeInfo.machineID,实例ID:.metadata.labels."cloud\.tencent\.com\/node-instance-id"
##全部信息
kubectl  get node  -ocustom-columns=节点名称:.metadata.name,节点IP:.status.addresses[0].address,实例ID:.metadata.labels."cloud\.tencent\.com\/node-instance-id",providerID:.spec.providerID,节点内核:.status.nodeInfo.kernelVersion,节点UUID:.status.nodeInfo.machineID,可用区:.metadata.labels."failure-domain\.beta\.kubernetes\.io\/zone"
kubectl get nodes -o jsonpath='{range .items[*]}{.metadata.name} {.status.addresses[?(@.type=="ExternalIP")].address}{"\n"}'
#获取节点IP:
kubectl get node -ocustom-columns=name:.metadata.name,IP:status.addresses[0].address

总结如上命令

kubectl  get node  -ocustom-columns=节点名称:.metadata.name,节点IP:.status.addresses[0].address,实例ID:.metadata.labels."cloud\.tencent\.com\/node-instance-id",providerID:.spec.providerID,节点内核:.status.nodeInfo.kernelVersion,节点UUID:.status.nodeInfo.machineID,可用区:.metadata.labels."failure-domain\.beta\.kubernetes\.io\/zone"

查看容量:

 kubectl  get node  -ocustom-columns=节点名称:.metadata.name,节点IP:.status.addresses[0].address,实例ID:.metadata.labels."cloud\.tencent\.com\/node-instance-id",providerID:.spec.providerID,节点内核:.status.nodeInfo.kernelVersion,Allocatable:.status.allocatable."nvidia\.com\/gpu"


kubectl  get node  -ocustom-columns=节点名称:.metadata.name,节点IP:.status.addresses[0].address,实例ID:.metadata.labels."cloud\.tencent\.com\/node-instance-id",providerID:.spec.providerID,节点内核:.status.nodeInfo.kernelVersion,GPU-Allocatable:.status.allocatable."nvidia\.com\/gpu",CPU-Allocatable:.status.allocatable.cpu,MEM-Allocatable:.status.allocatable.memory,eniIP-Allocatable:.status.allocatable."tke\.cloud\.tencent\.com\/eni-ip"

查看节点当前所在的节点池

kubectl get node -ocustom-columns='Name:.metadata.name,节点池:.metadata.labels.tke\.cloud\.tencent\.com\/nodepool-id,伸缩组:.metadata.labels.cloud\.tencent\.com\/auto-scaling-group-id,createTime:.metadata.creationTimestamp'

4,查询所有节点eni-ip信息

#查下辅助网卡eniInfo详细信息
kubectl  get nec -ocustom-columns=Name:.metadata.name,cvmID:.spec.providerID,eni:.status.eniInfos,ip:.spec.maxIPPerENI

#查看集群节点vpc-cni配额
kubectl get node -ocustom-columns=Name:.metadata.name,capcIP:.status.capacity."tke\.cloud\.tencent\.com/eni-ip",allocIP:.status.allocatable."tke\.cloud\.tencent\.com/eni-ip"

#查询VIP和VIPC绑定关系
kubectl  get vip  -ocustom-columns=Name:.metadata.name,vipcNamespace:.spec.claimRef.namespace,type:spec.type,vipcName:.spec.claimRef.name

5,批量删除驱逐状态POD

查寻确认没问题后再做删除,需要把NameSpace替换成用户的命名空间名称

kubectl get pods -n NameSpace |grep  Evicted
然后是批量删除
kubectl get pods -n NameSpace | grep Evicted | awk '{print $1}' | xargs kubectl delete pod -n NameSpace


#所有命名空间
kubectl get pods --all-namespaces |grep  Evicted
然后是批量删除
kubectl get pods --all-namespaces  | grep Evicted | awk '{print $1}' | xargs kubectl delete pod --all-namespaces

6,批量删除UnexpectedAdmissionError状态pod

#指定命名空间去删除
kubectl get pods  -n  NAMESPACE   | grep  UnexpectedAdmissionError | awk '{print $1}'  | xargs kubectl delete pod -n NAMESPACE

7,批量查看集群中LB类型的service信息

#可以打印的第一行,然后匹配的其他行
kubectl  get svc -ocustom-columns=namespace:.metadata.namespace,serviceName:.metadata.name,type:.spec.type,lbID:.metadata.annotations."service\.kubernetes\.io\/loadbalance-id",subnet:.metadata.annotations."service\.kubernetes\.io\/qcloud-loadbalancer-internal-subnetid" -A | grep -E  "serviceName|LoadBalancer"


#查看LBid & VIP信息
kubectl  get svc -ocustom-columns=namespace:.metadata.namespace,serviceName:.metadata.name,type:.spec.type,lbID:.metadata.annotations."service\.kubernetes\.io\/loadbalance-id",subnet:.metadata.annotations."service\.kubernetes\.io\/qcloud-loadbalancer-internal-subnetid",vip:.status.loadBalancer.ingress[0].ip -A | grep -E  "serviceName|LoadBalancer"

8,批量查看集群中ingress信息

kubectl  get ingress -ocustom-columns=namespace:.metadata.namespace,ingressName:.metadata.name,ingressType:.metadata.annotations."kubernetes\.io\/ingress\.class",lbID:.metadata.annotations."kubernetes\.io\/ingress\.qcloud-loadbalance-id",vip:.status.loadBalancer.ingress[0].ip,uuid:.metadata.uid  -A

9,批量查询PV和PVC 绑定关系

 kubectl  get pv  -ocustom-columns='pvName:.metadata.name,storageClassName:.spec.storageClassName,pvcNamespace:.spec.claimRef.namespace,pvcName:.spec.claimRef.name,volumeHandle:.spec.csi.volumeHandle,driver:.spec.csi.driver'

 批量查看CBS盘信息
 kubectl  get pv  -ocustom-columns='pvName:.metadata.name,storageClassName:.spec.storageClassName,pvcNamespace:.spec.claimRef.namespace,pvcName:.spec.claimRef.name,volumeHandle:.spec.csi.volumeHandle,driver:.spec.csi.driver,CBSid:.spec.qcloudCbs.cbsDiskId'

10,显示Pod的容器镜像

kubectl get pods -o custom-columns='NAME:metadata.name,IMAGES:spec.containers[*].image'


kubectl  get deployments -o custom-columns='DeploymentName:metadata.name,Namespace:.metadata.namespace,image:.spec.template.spec.containers[*].image' --all-namespaces

kubectl  get statefulset  -o custom-columns='DeploymentName:metadata.name,Namespace:.metadata.namespace,image:.spec.template.spec.containers[*].image' --all-namespaces

kubectl get pods -o custom-columns='NAME:metadata.name,security-group-id:.metadata.annotations.eks\.tke\.cloud\.tencent\.com\/security-group-id'

kubectl get pods --all-namespaces -o=jsonpath='{range .items[*]}{"\n"}{.metadata.name}{":\t"}{range .spec.containers[*]}{.image}{", "}{end}{end}'

11,批量查询POD的里面容器ID

kubectl get pods -o custom-columns='podName:.metadata.name,podIP:.status.podIP,podStatus:.status.phase,nodeName:.spec.nodeName,nodeIP:.status.hostIP,containerID:.status.containerStatuses[0].containerID'

#kubectl get pods -o custom-columns=podName:.metadata.name,podIP:.status.podIP,podStatus:.status.phase,nodeName:.spec.nodeName,nodeIP:.status.hostIP,containerID:.status.containerStatuses[*].containerID


#kubectl get pods -o custom-columns=podName:.metadata.name,podIP:.status.podIP,podStatus:.status.phase,nodeName:.spec.nodeName,nodeIP:.status.hostIP,containerID:.status.containerStatuses[0].containerID | awk -F 'docker://' '{print $1,$2}'

#kubectl get pods -o custom-columns='podName:.metadata.name,podIP:.status.podIP,podStatus:.status.phase,nodeName:.spec.nodeName,nodeIP:.status.hostIP,containerID:.status.containerStatuses[0].containerID' | awk -F 'docker://|| containerd://'  '{print $1,$2}'

##批量查下POD的 POD_ID 可以对照查看对应日志命令文件
kubectl get pods -o custom-columns='Namespace:..metadata.namespace,podName:.metadata.name,podIP:.status.podIP,podStatus:.status.phase,nodeIP:.status.hostIP,Pod_ID:.metadata.uid,ContainerName:.spec.containers[*].name'


查看POD创建时间:
kubectl get pods -o custom-columns='podName:.metadata.name,podIP:.status.podIP,podStatus:.status.phase,startTime:.status.startTime'

12,批量查看容器ID

docker ps | awk '{print $1}' | xargs -n 1 -I {} -- sh -c "echo {} && docker inspect {} |grep 27c0e22fc5ffa8aa540b68182672ea61fd2bb701740926025ba77a66b4428341 -C 1"

13,EKS获取所有EIP列表

kubectl get pods -A -o=jsonpath='{range .items[*]}{"pod_name:"}{.metadata.name}{"\teip-id:"}{.metadata.annotations.tke\.cloud\.tencent\.com\/eip-id}{"\teip-ip:"}{.metadata.annotations.tke\.cloud\.tencent\.com\/eip\-public\-ip}{"\n"}{end}'


或者使用这个命令
kubectl  get  pod -ocustom-columns=pod-name:.metadata.name,eip-id:.metadata.annotations."tke\.cloud\.tencent\.com\/eip\-id",eip-public-ip:.metadata.annotations."tke\.cloud\.tencent\.com\/eip\-public\-ip"

14,批量查看集群里面有那些RS使用了 csi inline模式

kubectl  get rs -o custom-columns=ReplicaSetsName:.metadata.name,CurrentPOD:.spec.replicas,CBSid:.spec.template.spec.volumes[*].qcloudCbs.cbsDiskId  -A

#查看当前有哪些POD在使用csi inline

kubectl  get pods -o custom-columns=Namespace:.metadata.namespace,PodName:.metadata.name,Status:.status.phase,CBSid:.spec.volumes[*].qcloudCbs.cbsDiskId

#通过这个简单查询下 有那些rs使用了
kubectl  get rs -o custom-columns=namespace:.metadata.namespace,ReplicaSetsName:.metadata.name,CurrentPOD:.spec.replicas,CBSid:.spec.template.spec.volumes[*].qcloudCbs.cbsDiskId -A  |  grep disk

查看 StatefulSet类型是否使用csi inline
kubectl  get sts -o custom-columns=namespace:.metadata.namespace,StatefulSetName:.metadata.name,CBSid:.spec.template.spec.volumes[*].qcloudCbs.cbsDiskId -A    | grep disk

15,批量查看pod资源设置情况limit和request


#调整显示顺序
kubectl  get pod  -o custom-columns='namespace:.metadata.namespace,PodName:.metadata.name,ContainerName:.spec.containers[*].name,CPURequest:.spec.containers[*].resources.requests.cpu,CPULimit:.spec.containers[*].resources.limits.cpu,MemRequest:.spec.containers[*].resources.requests.memory,MemLimit:.spec.containers[*].resources.limits.memory,Node:.status.hostIP'


kubectl get pod -n kube-system  -o=custom-columns='NAME:.metadata.name,NAMESPACE:.metadata.namespace,PHASE:.status.phase,Request-cpu:.spec.containers\[0\].resources.requests.cpu,Request-memory:.spec.containers\[0\].resources.requests.memory,Limit-cpu:.spec.containers\[0\].resources.limits.cpu,Limit-memory:.spec.containers\[0\].resources.limits.memory,Node:.status.hostIP'

16,批量查看集群容器网段

 kubectl get node -ocustom-columns='Name:.metadata.name,cidr:.spec.podCIDR,annotations:.metadata.annotations."tke\.cloud\.tencent\.com\/pod-cidrs"'

17,批量查看日志采集配置

kubectl get  logconfig  -ocustom-columns='Name:.metadata.name,ClsTopic:.spec.clsDetail.topicId,ClsType:.spec.inputDetail.type'

查看采集对象:
kubectl get  logconfig  -ocustom-columns='Name:.metadata.name,ClsTopic:.spec.clsDetail.topicId,ClsType:.spec.inputDetail.type,Namespace:.spec.inputDetail.containerStdout.workloads[*].namespace,Workloads:.spec.inputDetail.containerStdout.workloads[*].name'

18,批量删除多个job

#删除成功的作业: 
kubectl delete jobs --field-selector status.successful=1 
#删除失败或长时间运行的作业 
kubectl delete jobs --field-selector status.successful=0

19,批量查看集群有没有POD使用GPU

kubectl get pods -o=jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.spec.nodeName}{"\n"}{end}' | while read line; do pod=$(echo $line | awk '{print $1}'); node=$(echo $line | awk '{print $2}'); echo -n "${pod} "; kubectl describe pod $pod | grep -q "nvidia.com/gpu" && echo "is using GPU on ${node}" || echo "is not using GPU"; done

results matching ""

    No results matching ""