2025年hprof文件生成原因(hprof文件怎么看)

hprof文件生成原因(hprof文件怎么看)系列文章 第一章 k8s 入门 裸机部署 k8s 集群 第二章 k8s 入门 部署应用到 k8s 集群 第三章 k8s 入门 service 简单使用 第四章 k8s 入门 StatefulSet 简单使用 第五章 k8s 入门 存储 storage 第六章 K8S 配置 storageclass 使用 nfs 动态申领本地磁盘空间 第七章 k8s 入门 配置

大家好,我是讯享网,很高兴认识大家。



系列文章

第一章:✨ k8s入门:裸机部署 k8s 集群 第二章:✨ k8s入门:部署应用到 k8s 集群 第三章:✨ k8s入门:service 简单使用 第四章:✨ k8s入门:StatefulSet 简单使用 第五章:✨ k8s入门:存储(storage) 第六章:✨ K8S 配置 storageclass 使用 nfs 动态申领本地磁盘空间 第七章:✨ k8s入门:配置 ConfigMap & Secret 第八章:✨ k8s入门:k8s入门:Helm 构建 MySQL 第九章:✨ k8s入门:kubernetes-dashboard 安装 第十章:✨ k8s入门:kube-prometheus-stack 全家桶搭建(Grafana + Prometheus)


文章目录

  • 系列文章
  • 一、简介
  • 二、pod 和 deployment 关系
  • 三、k8s 使用本地镜像部署
  • 四、上传镜像到仓库
  • 五、公共镜像部署
  • 六、私人镜像部署
  • 1、创建阿里云验证
  • 2、私人镜像创建 pod
  • ①、kubectl port-forward 临时暴露端口访问测试
  • ②、错误: open /run/flannel/subnet.env: no such file or directory</li><li>③、创建 pod 暴露端口</li></ul><ul data-indent="4"><li>3、创建 Deployment</li><li>4、历史版本控制</li><li>5、其他命令</li></ul><ul data-indent="3"><li>七、小妙招</li><li>八、遗留问题</li></ul><p> <br></p><hr style="background-color: rgb(232, 232, 232); border: 1px solid transparent; margin: 18px 0px;"><p>参考文章: https://k8s.easydoc.net/</p><h5>一、简介</h5><p>接上篇裸机部署 k8s 集群:</p><p>基础环境:</p><ul><li>系统⭐Linux、centos 7.9 、3 台虚拟机</li><li>虚拟机IP⭐master:192.168.25.100,node1:192.168.25.101,node2:192.168.25.102</li><li>k8s 版本⭐1.23.1</li><li>docker 版本⭐20.10.16</li></ul><p>官方文档</p><ul><li>Kubernetes 官方文档:https://kubernetes.io/zh/docs/setup/ </li><li>Kubernetes 中文社区 | 中文文档:http://docs.kubernetes.org.cn/ </li><li>spring-cloud-kubernetes:https://docs.spring.io/spring-cloud-kubernetes/docs/current/reference/html/ </li><li>kubectl 命令:https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands </li></ul><h5>二、pod 和 deployment 关系</h5><ul><li>pod </li></ul><ul data-indent="1"><li>Pod 是 k8s 的最小调度单位</li><li>一个 Pod 代表集群上正在运行的一个进程</li><li>Pod 中运行一个容器,可以将 Pod 视为单个封装的容器,但是 K8s 是直接管理 Pod 而不是容器</li><li>Pod 中运行多个容器,这些容器可以形成一个单一的内部service单位,可以相互通信,共享数据</li><li>一个 Pod 被分配一个独立的IP地址,Pod中的每个容器共享 IP 地址和网络端口,Pod 内的容器可以使用 localhost 相互通信。</li><li>Pod 中的容器与Pod 外部通信时,他们必须协调如何使用共享网络资源(如端口)。</li></ul><ul><li>deployment </li></ul><ul data-indent="1"><li>创建 deployment 的时候一定会创建Pod</li><li>Deployment 可以新建及管理多副本应用(即多个副本 Pod)</li><li>deployment 可以部署多个Pod,所有 Pod 的名字后面会随机带一串随机数避免重复</li><li>Deployement 会配合 RC 调度保障定量的 Pod 数量。</li></ul><h5>三、k8s 使用本地镜像部署</h5><p>使用 Dockerfile 在本地生成的镜像,不用上传到仓库,<mark>该方法不常用</mark></p><p>k8s默认会从远端拉取镜像,其默认配置参数 imagePullPolicy 为 Always,我们可以将该参数设置为Never 或者 IfNotPresent,k8s 就会从本地拉取镜像了。</p><p>master 节点 pod 配置</p><div></div><p><mark>注意:</mark></p><p> 本地拉去镜像:指的是如果有一个 master 节点、两个 node1、node2 节点,如果 kubectl 选择将 pod 运行在 node2 节点,则 node2 本地必须有 yaml 指定的镜像,否则会报错<br></p><p style="text-align:center;"><img src='https://s2.51cto.com/images/blog/202410/09144928_670627782f49d47221.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184' alt='python 自动生成k8s yaml文件_docker' title="在这里插入图片描述" style="width: 842px; visibility: visible;"></p><p><br></p><p> 这种方法节点少还可以用,节点多不适用<br></p><h5>四、上传镜像到仓库</h5><p>将准备好的 jar 制作成镜像上传到私人仓库,可参考我另一篇博客 </p><p>上传成功可以拉取镜像测试一下,jar 包中接口如下</p><p style="text-align:center;"><img src='https://s2.51cto.com/images/blog/202410/09144928_6706277856eed27116.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184' alt='python 自动生成k8s yaml文件_kubernetes_02' title="在这里插入图片描述" style="width: 571px; visibility: visible;"></p><h5>五、公共镜像部署</h5><p>对于公共镜像可以直接使用 kubectl run 创建 pod</p><div></div><p>使用公共镜像创建 pod,公共镜像可以直接 docker pull 拉取,不需要登陆</p><p>在可以使用 kubectl 工具的节点(一般建议 master 节点)新建 k8s-pod-dockerhub-public.yaml 文件,添加如下内容</p><div></div><p>使用 部署 pod</p><ul><li><li>kubectl get pod -o wide 查看 pod 状态以及部署详情</li><p style="text-align:center;"><img src='https://s2.51cto.com/images/blog/202410/09144928_670627788ce2365128.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184' alt='python 自动生成k8s yaml文件_linux_03' title="在这里插入图片描述" style="width: 770px; visibility: visible;"></p></li><li><li>kubectl describe pod nginx 查看 pod 部署日志</li><p style="text-align:center;"><img src='https://s2.51cto.com/images/blog/202410/09144928_67062778ce90628759.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184' alt='python 自动生成k8s yaml文件_k8s_04' title="在这里插入图片描述" style="width: 754px; visibility: visible;"></p></li><li><li>kubectl logs -f test-pod 查看 pod 中指定容器启动日志</li><p style="text-align:center;"><img src='https://s2.51cto.com/images/blog/202410/09144929_670627790517931956.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184' alt='python 自动生成k8s yaml文件_linux_05' title="在这里插入图片描述" style="width: 890px; visibility: visible;"></p></li><li><li>kubectl exec -it test-pod /bin/sh 进入容器</li><p style="text-align:center;"><img src='https://s2.51cto.com/images/blog/202410/09144929_670627793bca22474.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184' alt='python 自动生成k8s yaml文件_容器_06' title="在这里插入图片描述" style="width: 890px; visibility: visible;"></p></li></ul><h5>六、私人镜像部署</h5><p>dockerhub 和阿里云仓库操作类似</p><h6>1、创建阿里云验证</h6><p>登陆阿里云仓库 ,登陆成功会生成 ~/.docker/config.json 验证文件</p><p>k8s 集群中通过 ~/.docker/config.json 文件制作 secret 凭证</p><div></div><p>保存好下面的信息<br></p><p style="text-align:center;"><img src='https://s2.51cto.com/images/blog/202410/09144929_6706277972b0d10356.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184' alt='python 自动生成k8s yaml文件_k8s_07' title="在这里插入图片描述" style="width: 916px; visibility: visible;"></p><p>新建一个 secret 的 yaml 文件,就叫 registry-secret.yaml</p><div></div><p>创建并检查 secret 凭证</p><div></div><p>如下创建成功<br></p><p style="text-align:center;"><img src='https://s2.51cto.com/images/blog/202410/09144929_67062779a8d6434888.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184' alt='python 自动生成k8s yaml文件_docker_08' title="在这里插入图片描述" style="width: 392px; visibility: visible;"></p><h6>2、私人镜像创建 pod</h6><p>新建 aliyun-private-springboot-pod.yaml 文件,添加 secret 验证拉取私人镜像</p><div></div><p>创建并查看 pod 信息</p><div></div><p>查看 pod 状态已启动,部署到了 node1 节点,拉去镜像用时 14 s,查看 pod 启动日志发现端口 8080</p><div></div><h6>①、kubectl port-forward 临时暴露端口访问测试</h6><p>把集群内 8080 端口映射到节点 8090,在 master 节点执行(在可以使用 kubectl 命令的节点都可以执行)</p><ul><li>本机访问<br> 默认只能本地访问 127.0.0.1(IPv4) 和 ::1 (IPv6)</li></ul><div></div><p>重新打开一个 master 连接,因为使用 kubectl port-forward 是临时的,不能关闭,关闭即不起作用</p><div></div><ul><li>所有地址<br> 使用 --address 0.0.0.0 指定所有地址都可访问</li></ul><div></div><p>在宿主机使用虚拟机 master IP地址访问 http://192.168.25.100:8090/k8s/test</p><p style="text-align:center;"><img src='https://s2.51cto.com/images/blog/202410/09144929_67062779d7ffb25886.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184' alt='python 自动生成k8s yaml文件_kubernetes_09' title="在这里插入图片描述" style="width: 582px; visibility: visible;"></p><h6>②、错误: open /run/flannel/subnet.env: no such file or directory

    报错:如果你运行 报错错误

    python 自动生成k8s yaml文件_容器_10
    讯享网

    ③、创建 pod 暴露端口

    使用 DockerHub 镜像 redis:latest,创建一个 redis,暴露节点 6379 端口

    创建 pod

    python 自动生成k8s yaml文件_容器_11

    3、创建 Deployment

    Deployment 示例,新建 aliyun-private-springboot-deployment.yaml 文件添加如下内容,使用阿里云私人镜像部署三个 pod

    创建 Deployment 查看运行状态

    python 自动生成k8s yaml文件_容器_12

    命令行指定 pod 副本数量,可用于伸缩扩展副本

    python 自动生成k8s yaml文件_k8s_13

    如果想访问测试可以使用

    4、历史版本控制
    • 新增一个镜像版本 registry.cn-zhangjiakou.aliyuncs.com/k8s-private/springboot:1.1
    • 修改 aliyun-private-springboot-deployment.yaml 文件指定镜像版本为 1.1
    • 重新使用 kubectl apply -f aliyun-private-springboot-deployment.yaml 部署

    python 自动生成k8s yaml文件_linux_14

    查看部署详情 ,可以看到拉取 1.1版本

    python 自动生成k8s yaml文件_linux_15

    查看历史版本:,可以发现有两个版本

    python 自动生成k8s yaml文件_k8s_16

    版本回滚可以使用如下命令

    5、其他命令
    七、小妙招

    在使用vim进行文档操作时,粘贴多行时,会出现错位、错乱(行注释极为明显)

    八、遗留问题
    • 每次只能访问一个 pod,没有负载均衡自动转发到不同 pod
    • 访问还需要端口转发
    • Pod 重新创建后 IP 变了,名字也变了

    下一篇使用 Service 解决这些问题

小讯
上一篇 2025-06-10 10:13
下一篇 2025-05-17 08:41

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/199208.html