# check kubernetes inner ip kubectl get svc kubernetes -n default # check api server kubectl get componentstatuses # check crd kubectl get crd | grep cert-manager # check all pods kubectl get pods -A
namespace
1 2 3 4
kubectl get namespaces
# delete all resource by specify namespace kubectl delete all --all -n <namespace>
node
resource
1 2 3 4 5 6 7 8 9 10
# method 1: Check Node Resource Availability kubectl describe node <node-name> # check Capacity, Allocatable, Allocated resources • CPU available = Allocatable CPU - CPU Requests • Memory available = Allocatable Memory - Memory Requests # method 2: Get Detailed Resource Requests & Limits for All Pods kubectl get pods -A -o=custom-columns="NAMESPACE:.metadata.namespace,NAME:.metadata.name,CPU_REQUESTS:.spec.containers[*].resources.requests.cpu,MEM_REQUESTS:.spec.containers[*].resources.requests.memory,CPU_LIMITS:.spec.containers[*].resources.limits.cpu,MEM_LIMITS:.spec.containers[*].resources.limits.memory" # method 3: Output for Advanced Parsing json kubectl get nodes -o json | jq '.items[] | {name: .metadata.name, allocatable: .status.allocatable}'
label
1 2 3 4 5 6 7 8 9
# show all labels kubectl get nodes --show-labels # add label on node kubectl label node <node-name> <label-key>=<label-value> # remove label from node kubectl label node <node-name> <label-key>- # kubectl label nodes sd-shangdi-ceph17 dingofs-csi-node-
taint
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
# check node is taint or not kubectl describe node <nodeName> | grep -i taint # taint node print Taints: nodepool=fault:NoSchedule # normal node print Taints: <none> # tag taint kubectl taint node <node> nodepool=fault:NoSchedule # remove taint kubectl taint node <node-name> <key>:<value>- # e.g. kubectl taint node node1 nodepool=fault:NoSchedule-
All
1 2
# delete all resource kubectl delete all --all -n <namespace>
pod
basic
1 2 3 4 5
# list namespace's pod kubectl get pod -n {namespace} # describe kubectl describe pod {podName}
log
-c : Specify which container to retrieve logs from.
-f: Stream the logs in real-time.
–previous: Show logs from the last terminated container.
–since=: Return logs for the last period (e.g., 1h, 30m).
–tail=: Limit the number of log lines returned.
–all-containers=true: Get logs from all containers in the pod.
kubectl get pod <容器id> --kubeconfig=/path/to/configfile -o yaml > env-vq48.yaml # kubectl get -o yaml 这样的参数,会将指定的 Pod API 对象以 YAML 的方式展示出来。 # expose kubectl get pod <pod-name> -n <namespace> -o yaml > pod-config.yaml
exec
without kubeconfig
1 2 3 4 5 6
# enter pod on specify container kubectl exec -it {pod_id} -n {namespace} -c {container_id} -- sh # execute specify command on pod kubectl exec -it {pod_id} -n {namespace} -c {container_id} -- <shell> e.g. kubectl exec -it csi-node-1 -n dingofs -- cat /etc/resolv.conf
# list role kubectl get role -n <namespace> # -o yaml # list clusterrole kubectl get clusterrole # list RoleBinding kubectl get rolebinding -n <namespace> # list clusterrolebinding kubectl get clusterrolebinding # Check if the User Can List Pods in Namespace kubectl auth can-i list pods --as=<userName> -n <namespace> # Check If the ServiceAccount Has Permissions to Get DaemonSets kubectl auth can-i get daemonsets --as=system:serviceaccount:<namespace>:<serviceAccount> -n <namespace>