k8s常用命令:
#1、查看Deployment资源对象由哪几部分组成
kubectl explain deployment
#2、查看有哪些部署文件
kubectl get deployment
#3、查看某一个deployment的详细清单
kubectl describe deployment deploy名称
#创建部署
kubectl create -f 部署yml文件
#更新部署配置
kubectl apply -f 部署yml文件
#查看已部署pod
kubectl get pod [-o wide]
#查看pod详细信息
kubectl describe pod pod名称
#查看pod日志输出
kubectl logs [-f] pod名称
#复制本地文件到pod容器中
kubectl cp <本地文件路径> <命名空间>/<Pod名称>:<目标路径> -c <容器名称>
参数说明
<本地文件路径>:要复制的本地文件的完整路径。
<命名空间>:目标 Pod 所在的命名空间,如果是默认命名空间,可以省略。
<Pod名称>:目标 Pod 的名称。
<目标路径>:文件要复制到 Pod 内的路径。
-c <容器名称>:如果 Pod 中有多个容器,需要指定将文件复制到哪个容器中;如果 Pod 中只有一个容器,则可以省略该参数。
操作步骤
#获取k8s上部署的详细信息的pod
kubectl get pod -o wide
#创建tomcat容器实例
kubectl create -f tomcat-deploy.yml
#进入pod容器内部
kubectl exec -it pod名称 /bin/bash
#查看一个pod的详细信息
kubectl describe pod tomcat-deploy-b76dd4475-hh9zf(pod名称)
#查看pod日志
kubectl logs tomcat-deploy-b76dd4475-hh9zf(pod名称)
#创建service服务
kubectl create -f ./tomcat-service.yml
#查看service是否创建成功
kubectl get service
#查看service详细信息
kubectl describe service tomcat-service
#进入容器
kubectl exec -it tomcat-deployment-795d745898-fvswl /bin/bash
#1、查看部署
kubectl get deployment
#2、删除部署文件
kubectl delete deployment 部署文件名称
#3、查看pod
kubectl get pod
#4、查看service
kubectl get service
#5、删除service
kubectl delete service service名称
#6、查看集群信息
kubectl cluster-info
#1、创建 namespace
kubectl create namespace lhynamespace
#2、查看 namespace
kubectl get namespace
#3、删除 namespace
kubectl delete namespace lhynamespace
#1、生成yaml文件
kubectl create deployment mysql8 --image=mysql:8 --dry-run -o yaml > mysql8_deployment.yaml
#2、修改yaml文件 指定 namespace
metadata:
namespace: lhynamespace
#3、创建 deployment
kubectl apply -f mysql8_deployment.yaml
#4、查看 lhynamespace 命名空间下的 deployment
kubectl get deployment -n lhynamespace
kubectl get deployment --all-namespaces //查看所有namespace
#5、删除 lhynamespace 命名空间下的 mysql8 的 deployment ,删除deployment 之后 pod 自动删除 通过yaml创建的,通过yaml文件删除
kubectl delete -f mysql8_deployment.yaml
kubectl delete deployment mysql8 -n lhynamespace //命令删除
#使用 kubectl describe pod sentry-web 查看启动细节:
kubectl describe pod podname
-- 检查k8s是否正常
systemctl status kubelet
pod频繁重启分析命令:
#1、生成堆转储(Heap Dump)
kubectl exec <pod-name> -- jmap -dump:live,format=b,file=/tmp/heap.hprof <pid>
kubectl cp <pod-name>:/tmp/heap.hprof ./heap.hprof
#2、检查jvm参数,确认 -Xmx 是否合理(建议不超过容器限制的 70%)
kubectl exec <pod-name> -- ps aux | grep java
#3、如果不需要容器级别的明细,直接对 Pod 整体内存排序
kubectl top pod --sort-by=memory
#使用 awk 或 sort 命令对输出进行排序
kubectl top pod --containers --no-headers | sort -k4 -h -r
#参数说明:
#--no-headers:去除表头(避免干扰排序)。
#sort -k4:按第4列(MEMORY)排序。
#-h:以人类可读格式(如 250Mi)进行排序。
#-r:降序排列(从高到低)。
#4、OOMKilled可能是由于应用程序内存使用过高导致的。可以通过以下命令查看容器的日志,了解OOM发生前后的情况:
kubectl logs <pod-name> -n <namespace> --previous
#--previous参数用于查看被重启前的容器日志。
#如果Pod中有多个容器,可以通过-c参数指定容器名称:
kubectl logs <pod-name> -n <namespace> -c <container-name> --previous
#5、监控与分析内存使用
#5.1、查看历史内存使用:
kubectl top pod <pod-name> --containers
#5.2、检查容器日志:
kubectl logs <pod-name> --previous | grep -i "out of memory"
#6、查询node节点所归属的服务器
kubectl get nodes -o wide