k8s常用命令操作

获取所有节点的污点信息

kubectl get nodes -o='custom-columns=NodeName:.metadata.name,TaintKey:.spec.taints[*].key,TaintValue:.spec.taints[*].value,TaintEffect:.spec.taints[*].effect'

获取集群内的所有域名

kubectl get ingress -A -o=custom-columns=Host:.spec.rules[*].host |grep -v none |sed 's/,/\n/g' |sort -n |uniq |sort |grep -v Host

获取配置了证书的域名

kubectl get ingress -A -o=custom-columns=Tls:.spec.tls[*].hosts[0] |grep -v none |sed 's/,/\n/g' |sort -n |uniq |sort |grep -v Tls

筛选运行异常的POD

kubectl get pod -A --field-selector='status.phase==Failed' --output=custom-columns=NAME:.metadata.name,NAMESPACE:.metadata.namespace,STATUS:.status.phase,AGE:'.metadata.creationTimestamp'
# 获取异常状态超过2天的POD
kubectl get pod -A --field-selector='status.phase==Failed' --output=custom-columns=NAME:.metadata.name,NAMESPACE:.metadata.namespace,STATUS:.status.phase,AGE:'.metadata.creationTimestamp'| awk '$4 <= "'$(date -d '2 days ago' -Ins --utc | sed 's/+0000/Z/')'"

k8s查看pod的网络是否为hostNetwork

kubectl get pod <pod-name> -o jsonpath='{.spec.hostNetwork}'

k8s获取secrets的配置并进行解码

kubectl get secret my-secret -o 'go-template={{index .data "username"}}' | base64 -d

根据k8s node的异常进程排查到对应的容器POD

# 1. top查看 对应异常异常的ID
# 2. 查看对应的容器ID
ps -ef |grep $id
[root@devops.cpu.node.10-198-x-xx ~]$ps -ef |grep 2716551
root     2716551       1  0 Sep23 ?        00:41:07 /usr/bin/containerd-shim-runc-v2 -namespace k8s.io -id 0ce50fcd5aa40fbd3028770211e6b2b6aa57e9861b4ca2342e49034013f6cb78 -address /run/containerd/containerd.sock
# 3.查看容器ID对应的POD的标签对应的POD
[root@devops.cpu.node.10-198-x-xx ~]$ctr -n k8s.io c info 0ce50fcd5aa40fbd3028770211e6b2b6aa57e9861b4ca2342e49034013f6cb78  |jq .Labels
{
  "component": "etcd",
  "io.cri-containerd.kind": "sandbox",
  "io.kubernetes.pod.name": "etcd-devops.cpu.node.10-198-5-33",
  "io.kubernetes.pod.namespace": "kube-system",
  "io.kubernetes.pod.uid": "9f441e625528932315b967e671fb2cbe",
  "tier": "control-plane"
}
posted @ 2023-12-29 14:12  yuhaohao  阅读(80)  评论(0)    收藏  举报