查看pod的描述信息
kubectl describe pod podName
查看所有namespace下的pod
kubectl get pods --all-namespaces
按phase筛选pod
kubectl get pods --field-selector status.phase=Running
查看node的信息(包括node 资源使用状况、污点)
kubectl describe node node-name
查看node资源使用状况
kubectl top node
查看现有的pod和svc状态
kubectl get pods,svc
查看pod日志(or 容器日志)
- kubectl logs [-c ]
kubectl logs -f # 实时查看日志
查看pod资源使用情况
kubectl top pod
查看node的label
kubectl get node --show-labels
默认情况下,scheduler会将pod调度到所有可用的Node,不过有些情况我们希望将 Pod 部署到指定的 Node,比如将有大量磁盘 I/O 的 Pod 部署到配置了 SSD 的 Node;或者 Pod 需要 GPU,需要运行在配置了 GPU 的节点上。
kubernetes通过label来实现这个功能
label 是 key-value 对,各种资源都可以设置 label,灵活添加各种自定义属性,比如执行如下命令标注 k8s-node1 是配置了 SSD 的节点
首先我们给k8s-node1节点打上一个ssd的标签
kubectl label node k8s-node1 disktype=ssd
有了自定义的标签,只需要在配置文件中定义 nodeselector 为这个自定义标签,就可以指定pod在k8s-node1中运行
删除taint
kubectl taint node node1 key1-
删除指定key所有的effect
查看资源对象
kubectl get pod -l "key=value,key=value" -n kube-system (-l 标签选择器(多个的话是与逻辑),-n 指定命名空间,不指定默认default)
kubectl get pod -l "key1 in (val1,val2),!key2" -L key (-l 基于集合的标签选择器, -L查询结果显示标签) 注意:为了避免和shell解释器解析!,必须要为此类表达式使用单引号
kubectl get pod -w(-w 监视资源变动信息)
kubectl get pods -o wide # -o wide可以显示更多资源信息,比如pod的IP等
打印容器中日志信息
kubectl logs name -f -c container_name -n kube-system (-f 持续监控,-c如果pod中只有一个容器不用加)
在容器中执行命令
kubectl exec name -c container_name -n kube-system -- 具体命令
kubectl exec -it pod_name /bin/sh 进入容器的交互式shell
标签管理
kubectl label pods/pod_name key=value 添加标签,如果是修改的话需要后面添加--overwrite
kubectl label nodes node_name key=value 给工作节点添加标签,后续可以使用nodeSelector来指定pod被调度到指定的工作节点上运行
kubectl label nodes - 删除节点标签
节点管理
kubectl cordon my-node
# 标记 my-node 为 unschedulable,禁止pod被调度过来。注意这时现有的pod还会继续运行,不会被驱逐。
kubectl uncordon my-node
# 与cordon相反,标记 my-node 为 允许调度。
kubectl drain my-node
# drain字面意思为排水,实际就是把my-node的pod平滑切换到其他node,同时标记pod为unschedulable,也就是包含了cordon命令。
# 但是直接使用命令一般不会成功,建议在要维护节点时,加上以下参数:
kubectl drain my-node --ignore-daemonsets --force --delete-local-data
# --ignore-daemonsets 忽略daemonset部署的pod
# --force 直接删除不由workload对象(Deployment、Job等)管理的pod
# --delete-local-data 直接删除挂载有本地目录(empty-dir方式)的pod
删除pod或service
非特殊状态删除pod
kubectl --kubeconfig=/root/.kube/config delete pods podname(如vnc-577818) --now=true --wait=true --timeout=30s
特殊状态(Terminating、Unknown)删除pod
kubectl delete pods --grace-period=0 --force
删除服务service
kubectl delete services podname
kubectl delete services podname-22
进入节点node后,查看k8s日志
journalctl -xefu kubelet
查看所有service
kubectl get service
修改service配置文件
kubectl edit svc [service名字]
查看k8s服务状态及配置信息
systemctl status kubelet -l