k8s常用命令速查
pod
强制删除pod
kubectl delete pod <pod-name> --grace-period=0 --force
查看pod包含的容器
说明
一般情况下,一个pod可能包含多个容器
通 过自定义列
$ export POD_NAME='xxx'
$ kubectl get pod ${POD_NAME} -o 'custom-columns=NAME:.metadata.name,CONTAINERS:.spec.containers[*].name'
NAME CONTAINERS
prometheus-prometheus-server-75c956b9cc-w8l4p prometheus-prometheus-server-configmap-reload,prometheus-prometheus-server
通过 jq
命令
$ export POD_NAME='xxx'
$ kubectl get pod ${POD_NAME} -o json | jq '.spec.containers[].name'
"prometheus-prometheus-server-configmap-reload"
"prometheus-prometheus-server"
node
查看node节点拥有的镜像
kubectl get nodes -o json | jq -r '.items[] | "\(.metadata.name): \(.status.images[].names[])"'
查看node节点上调度的pod
export NODE_NAME=''
kubectl get pods --field-selector spec.nodeName=$NODE_NAME
查看某个node节点上被 oom kill
的pod
export NODE_NAME=''
(
echo -e "NODE_NAME\tPOD_NAME\tCONTAINER_NAME\tREASON\tFINISHED_AT"
kubectl get pods --field-selector spec.nodeName=$NODE_NAME -o json | \
jq -r '.items[] |
.metadata.name as $pod_name |
.spec.nodeName as $node_name |
.status.containerStatuses[]? |
select(.lastState.terminated.reason == "OOMKilled") |
"\($node_name)\t\($pod_name)\t\(.name)\tOOMKilled\t\(.lastState.terminated.finishedAt)"'
) | column -t
查看某个node节点上运行的pod的资源分配情况
export NODE_NAME=''
(
echo -e "POD\tREQUEST_CPU\tREQUEST_MEM\tLIMIT_CPU\tLIMIT_MEM"
kubectl get pods --field-selector spec.nodeName=$NODE_NAME -o json | \
jq -r '.items[] |
[.metadata.name,
(.spec.containers[] |
.resources.requests.cpu // "none",
.resources.requests.memory // "none",
.resources.limits.cpu // "none",
.resources.limits.memory // "none")] | @tsv'
) | column -t
存储类
设置默认存储类
export SC_NAME=openebs-hostpath
kubectl patch storageclass ${SC_NAME} -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
查看证书过期时间
- 通过kubeadm命令
- 通过kubectl命令
说明
组件证书:
- 例如
admin.conf
、apiserver
、apiserver-kubelet-client
等证书,有效期为 1 年。这些证书在 2025 年 11 月 8 日到期,目前还剩 298 天
证书颁发机构 (CA):
- 根 CA (
ca
)、ETCD CA (etcd-ca
)、以及前端代理 CA (front-proxy-ca
) 的有效期为 10 年,到期时间是 2034 年 11 月 6 日
$ kubeadm certs check-expiration
[check-expiration] Reading configuration from the cluster...
[check-expiration] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -o yaml'
CERTIFICATE EXPIRES RESIDUAL TIME CERTIFICATE AUTHORITY EXTERNALLY MANAGED
admin.conf Nov 08, 2025 09:40 UTC 298d ca no
apiserver Nov 08, 2025 09:40 UTC 298d ca no
apiserver-etcd-client Nov 08, 2025 09:40 UTC 298d etcd-ca no
apiserver-kubelet-client Nov 08, 2025 09:40 UTC 298d ca no
controller-manager.conf Nov 08, 2025 09:40 UTC 298d ca no
etcd-healthcheck-client Nov 08, 2025 09:40 UTC 298d etcd-ca no
etcd-peer Nov 08, 2025 09:40 UTC 298d etcd-ca no
etcd-server Nov 08, 2025 09:40 UTC 298d etcd-ca no
front-proxy-client Nov 08, 2025 09:40 UTC 298d front-proxy-ca no
scheduler.conf Nov 08, 2025 09:40 UTC 298d ca no
super-admin.conf Nov 08, 2025 09:40 UTC 298d ca no
CERTIFICATE AUTHORITY EXPIRES RESIDUAL TIME EXTERNALLY MANAGED
ca Nov 06, 2034 09:40 UTC 9y no
etcd-ca Nov 06, 2034 09:40 UTC 9y no
front-proxy-ca Nov 06, 2034 09:40 UTC 9y no
组件证书
$ kubectl config view --raw -o jsonpath='{.users[*].user.client-certificate-data}' | base64 -d | openssl x509 -noout -dates
notBefore=Nov 8 09:35:40 2024 GMT
notAfter=Nov 8 09:40:40 2025 GMT
根证书
$ kubectl get configmap kube-root-ca.crt -n kube-system -o jsonpath='{.data.ca\.crt}' | openssl x509 -noout -dates
notBefore=Nov 8 09:35:40 2024 GMT
notAfter=Nov 6 09:40:40 2034 GMT