云原生之容器编排实践-SpringBoot应用以YAML描述文件部署pod到minikube

简介: 云原生之容器编排实践-SpringBoot应用以YAML描述文件部署pod到minikube

M{3)02OY}$)~VO6D}UC03ZD.png

背景


Kubernetes 中,启动一个 Pod 最直接的方式是通过 kubectl run 命令;而在实际生产环境下,我们通常是使用 yaml 描述文件。


yaml描述启动Pod


熟悉 SpringBoot 的同学们肯定对 yaml 描述文件不陌生,其实就类似于 propertiesjson 文件的展现方式,这几个之间是可以相互转换的。其中,最关键的配置项为 kind ,我们设置其为 Pod 即表示以 Pod 方式启动;此外我们还在 spec 下指定了要拉取的镜像地址 containers.image 以及拉取镜像的秘钥 imagePullSecrets.name


12M({YOQ`GZ~TLQR[SPBLAP.png

  • cloud-native.yaml


apiVersion: v1
kind: Pod
metadata:
  name: cloud-native
spec:
  containers:
    - name: cloud-native
      image: registry.cn-hangzhou.aliyuncs.com/container-repo/docker-hub:0.0.1-SNAPSHOT
  imagePullSecrets:
    - name: aliyunregistry

然后,应用以上描述文件 kubectl apply -f cloud-native.yaml 即可新启动一个 Pod 并部署到 minikube


[root@k8s0 ~]# kubectl apply -f cloud-native.yaml
pod/cloud-native created

Note: 重点关注 imagePullSecrets ,根据指定的秘钥完成从阿里云私有镜像仓库的拉取操作,具体可参考:minikube传递秘钥使用阿里云私有镜像仓库


进一步了解Pod


  • 查看pod的IP地址

通过 -o wide 可以查看 PodIP 地址以及所在的节点,显然我们这里的节点为 minikube


[root@k8s0 ~]# kubectl get pods -o wide
NAME                              READY   STATUS    RESTARTS         AGE   IP           NODE       NOMINATED NODE   READINESS GATES
cloud-native                      1/1     Running   9 (3m20s ago)    40d   172.17.0.3   minikube   <none>           <none>


  • 端口转发

容器内部端口为8080,这里将容器内部的端口8080转发至本机的9090。


[root@k8s0 ~]# kubectl port-forward cloud-native 8090:8080
  • 查看日志

新开一个 Tab 建立连接,测试我们部署的 Pod 中的服务接口,并查看实时的日志信息。


# 查看最近日志
[root@k8s0 ~]# kubectl logs pod/cloud-native
# 查看实时滚动日志
[root@k8s0 ~]# kubectl logs pod/cloud-native -f
# 通过转发的端口发起请求
[root@k8s0 ~]# curl http://localhost:8090/hello?name=9

TI9$65(5`N]LCQ{%()HGV8S.png

小总结


关于 Pod ,以下知识点值得注意。


  1. 一个Pod中可以有多个容器。
  2. 一个 Pod 是一组紧密相关的容器,它们总是一起运行在同一个工作节点上,以及同一个 Linux 命名空间中。每个 Pod 就像一个独立的逻辑机器,拥有自己的IP、主机名、进程等,运行一个独立的应用程序。
  3. 当一个Pod包含多个容器时,这些容器总是运行于同一个工作节点上,一个Pod绝不会跨越多个工作节点。
  4. Kubenetes 集群中的所有Pod都在同一个共享网络地址空间中,这意味着每个Pod都可以通过其他PodIP地址来实现相互访问。
  5. 当决定是将两个容器放入一个Pod还是两个单独的Pod时,我们需要问自己以下问题:
  • 它们需要一起运行还是可以在不同的主机上运行?
  • 它们代表的是一个整体还是相互独立的组件?
  • 它们必须一起进行扩缩容还是可以分别进行?

If you have any questions or any bugs are found, please feel free to contact me.

Your comments and suggestions are welcome!

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务&nbsp;ACK 容器服务&nbsp;Kubernetes&nbsp;版(简称&nbsp;ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情:&nbsp;https://www.aliyun.com/product/kubernetes
目录
相关文章
|
3天前
|
IDE Cloud Native 开发工具
云原生之在Docker环境下部署Atheos云IDE平台
【2月更文挑战第3天】云原生之在Docker环境下部署Atheos云IDE平台
189 0
|
5天前
|
Kubernetes 应用服务中间件 nginx
百度搜索:蓝易云【使用Kubernetes部署Nginx应用教程】
至此,你已经成功部署了一个简单的Nginx应用到Kubernetes集群中。当然,还有很多更复杂的配置和功能可以实现,例如使用Ingress、设置资源限制等,根据实际需求可以进一步深入学习Kubernetes的更多特性和功能。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
168 2
|
7天前
|
Java 关系型数据库 MySQL
docker 部署springboot项目,连接mysql容器
docker 部署springboot项目,连接mysql容器
18 0
|
11天前
|
Anolis Docker 容器
百度搜索:蓝易云【openAnolis上部署docker容器】
通过以上步骤,你的Docker容器应该已经在OpenAnolis服务器上成功部署并运行了。
23 5
|
19天前
|
NoSQL Redis Docker
深入浅出:使用Docker容器化改进Python应用部署
在快速演进的软件开发领域,持续集成和持续部署(CI/CD)已成为加速产品上市的关键。本文将探索如何利用Docker,一种流行的容器化技术,来容器化Python应用,实现高效、可靠的部署流程。我们将从Docker的基本概念入手,详细讨论如何创建轻量级、可移植的Python应用容器,并展示如何通过Docker Compose管理多容器应用。此外,文章还将介绍使用Docker的最佳实践,帮助开发者避免常见陷阱,优化部署策略。无论是初学者还是有经验的开发人员,本文都将提供有价值的见解,助力读者在自己的项目中实现容器化部署的转型。
|
19天前
|
运维 Java 开发者
深入浅出:使用Docker容器化改善Java应用的部署与运维
在当今快速迭代的软件开发周期中,确保应用的一致性、可移植性与易于管理成为了开发与运维团队面临的重大挑战。本文旨在介绍如何通过Docker容器技术,有效地解决这些问题,特别是针对Java应用。我们将从Docker的基本概念出发,逐步深入到实际操作,展示如何将传统的Java应用容器化,以及这一过程如何帮助简化部署流程、提高应用的可靠性和可伸缩性。不同于常规的技术文章,本文试图以一种更加易于理解和实践的方式,让读者能够快速掌握容器化技术,并将其应用于日常的开发与运维工作中。
75 0
|
20天前
|
JavaScript NoSQL Redis
深入浅出:使用 Docker 容器化部署 Node.js 应用
在当今快速发展的软件开发领域,Docker 作为一种开源的容器化技术,已经成为了提高应用部署效率、实现环境一致性和便于维护的关键工具。本文将通过一个简单的 Node.js 应用示例,引导读者从零开始学习如何使用 Docker 容器化技术来部署应用。我们不仅会介绍 Docker 的基本概念和操作,还会探讨如何构建高效的 Docker 镜像,并通过 Docker Compose 管理多容器应用。此外,文章还将涉及到一些最佳实践,帮助读者更好地理解和应用 Docker 在日常开发和部署中的强大功能。
18 0
|
20天前
|
运维 Java Linux
深入解析:使用Docker容器化技术提升Java应用的部署效率
在快速迭代的软件开发周期中,如何保证应用的快速、一致和可靠部署成为了开发团队需要面对的重大挑战。本文将探讨如何利用Docker容器化技术,结合Java应用,实现高效、一致的部署流程。我们将从Docker的基本概念出发,详细介绍将Java应用容器化的步骤,包括创建Dockerfile、构建镜像以及运行容器等关键环节,并通过示例代码加以说明。此外,本文还将讨论在使用Docker部署Java应用时可能遇到的常见问题及其解决策略,旨在为读者提供一种提升部署效率、优化开发流程的有效方法。
253 2
|
20天前
|
Java 持续交付 虚拟化
深入浅出:使用Docker容器化改善Java应用的开发与部署流程
在快速迭代与持续集成的软件开发周期中,确保应用在各种环境中一致运行是一个挑战。本文介绍了如何利用Docker容器技术,来容器化Java应用,以实现环境一致性、简化配置和加速部署过程。我们将从Docker的基础知识开始,探讨其与传统虚拟机的区别,进而深入到如何创建Dockerfile,构建镜像,以及运行和管理容器。此外,文章还将涵盖使用Docker Compose来管理多容器应用的策略,以及如何利用容器化改善CI/CD流程。通过本文,读者将获得关于如何高效地利用Docker改善Java应用开发与部署流程的实践指导。
137 1
|
4天前
|
IDE 数据中心 Docker
使用PyCharm与Docker容器进行开发:从入门到精通
使用PyCharm与Docker容器进行开发:从入门到精通

相关产品

  • 云迁移中心