05|K8s 极简实战:示例应用介绍
架构介绍
应用架构
- 深入了解
- 翻译
- 解释
- 总结
本文介绍了一个 K8s 极简实战示例应用的部署过程,旨在让读者通过实际操作来感受 K8s 和 GitOps 的强大之处。示例应用是一套微服务架构的应用,包括前端、后端和数据库,展示了前端界面和 K8s 部署架构。文章详细介绍了如何在本地创建新的 K8s 集群,部署示例应用的步骤,包括创建命名空间、部署数据库、前后端工作负载和服务、Ingress 和 HPA 策略等。读者可以通过一次性部署所有示例应用对象或逐个创建对象来部署示例应用。最后,文章展示了如何检查资源状态,并指引读者在浏览器中访问示例应用的前端界面。整体来说,本文通过实际操作向读者展示了 K8s 极简实战示例应用的部署过程,适合读者快速了解 K8s 部署实践的技术特点。文章还提到了 K8s 对象解析和思考题,为读者提供了更多的学习和思考空间。
《云原生架构与 GitOps 实战》,新⼈⾸单¥59
全部留言(25)
- 最新
- 精选
- includestdio.h“首先,你可以使用 kubect get all 来查看某个命名空间下的所有资源” 。命令写错了,kubectl 删除 Postgres Pod 后,添加的数据不存在。原因:写入的数据位于容器的可写层,不commit不保存,delete 后,重新拉起的 Pod 基于原始容器镜像创建,仅存在原始的只读层数据。需要保存数据的话,可以提前通过 volume 等做好持久化方案,把容器和数据解耦
作者回复: 感谢指正。 回答非常正确!
2022-12-19归属地:广东7 - Y继续追剧
作者回复: 😄
2022-12-19归属地:广东3 - GAC·DU前端添加的数据会被删除,因为没有挂盘存储。生产环境用那种存储框架?
作者回复: 在生产环境下有很多存储方案,比如: 1. https://github.com/rook/rook 2. https://github.com/ceph/ceph 3. https://github.com/longhorn/longhorn 如果你用的是云厂商的托管 K8s 集群,云厂商一般会直接提供现成的存储方案,比如结合自家云盘的存储,不需要自建。
2022-12-19归属地:广东2 - 熊悟空的凶老师你好 麻烦问下 您画图工具用什么画的 挺好的
作者回复: Draw.io
2022-12-29归属地:广东1 - Amosヾ图里不是5个pod吗
作者回复: 感谢指正。
2022-12-19归属地:广东1 - Sophia-百鑫我在学习后面章节时 ,找到了 503 失败的原因,是在我clone 到本地的代码里, frontend deployment 中 pod定义标签 和 frontend service 中 pod 选择器的标签不同 (估计是我不小心碰到误改了老师的原文),导致后面无法生产endpoint对象 也无法找到frontend service 与 front pod 的对应关系,导致无法提供服务。 能读懂各个manifest文件及里面参数的含义和关联关系非常重要。是学习K8S 的核心。
作者回复: 👍🏻值得借鉴的解决思路
2023-07-12归属地:上海 - Sophia-百鑫Mac 上完成集群部署,解决了 frontend pod OOMKILL 问题后,5个pod 都正常 running。 但浏览器访问127.0.0.1 报 503 。 kubernetes-example git:(main) ✗ kubectl get pods -n example NAME READY STATUS RESTARTS AGE backend-f8ffdcdd6-57qkp 1/1 Running 0 28m backend-f8ffdcdd6-7rvhv 1/1 Running 0 28m frontend-696c87cc48-4qqvv 1/1 Running 0 28m frontend-696c87cc48-kg2jw 1/1 Running 0 28m postgres-f4745bb69-2m2bt 1/1 Running 0 28m ➜ kubernetes-example git:(main) ✗ kubectl get all -n example NAME READY STATUS RESTARTS AGE pod/backend-f8ffdcdd6-57qkp 1/1 Running 0 31m pod/backend-f8ffdcdd6-7rvhv 1/1 Running 0 31m pod/frontend-696c87cc48-4qqvv 1/1 Running 0 31m pod/frontend-696c87cc48-kg2jw 1/1 Running 0 31m pod/postgres-f4745bb69-2m2bt 1/1 Running 0 31m NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/backend-service ClusterIP 10.96.56.77 <none> 5000/TCP 31m service/frontend-service ClusterIP 10.96.119.215 <none> 3000/TCP 31m service/pg-service ClusterIP 10.96.46.127 <none> 5432/TCP 31m NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/backend 2/2 2 2 31m deployment.apps/frontend 2/2 2 2 31m deployment.apps/postgres 1/1 1 1 31m NAME DESIRED CURRENT READY AGE replicaset.apps/backend-f8ffdcdd6 2 2 2 31m replicaset.apps/frontend-696c87cc48 2 2 2 31m replicaset.apps/postgres-f4745bb69 1 1 1 31m NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AG
作者回复: 是用的 Kind 吗,检查一下 ingress-nginx 是否部署成功,ingress 对象是否正常匹配到了 service,service 关联的 pod 是否正常运行。
2023-07-09归属地:上海3 - Da Vinci部署完ingress,访问404,是有什么不对吗,老师
作者回复: 检查一下 ingress-nginx pod 是不是 running 状态。
2023-04-23归属地:广东 - 渣渣辉老师你好,我通过下载github项目进行部署。但是当我访问前端的时候出现了502 BadGateway错误。然后查看pod的时候发现前端的pod重启了。并且在重启成功后再次访问还是出现了502的错误。我用的是m1芯片的macbook。
作者回复: 方便贴一下 pod 的日志信息吗
2023-04-13归属地:日本3 - Alex针对无法拉取镜像的情况,建议修改下KIND内集群的镜像源到国内阿里的镜像源上 kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 nodes: - role: control-plane kubeadmConfigPatches: - | kind: InitConfiguration imageRepository: registry.aliyuncs.com/google_containers nodeRegistration: kubeletExtraArgs: node-labels: "ingress-ready=true" extraPortMappings: - containerPort: 80 hostPort: 80 protocol: TCP - containerPort: 443 hostPort: 443 protocol: TCP
作者回复: 👍🏻感谢分享
2023-04-12归属地:山东