云原生之容器编排实践-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
目录
相关文章
|
8天前
|
Cloud Native 测试技术 数据安全/隐私保护
云原生之使用Docker部署Teedy轻量级文档管理系统
【5月更文挑战第8天】云原生之使用Docker部署Teedy轻量级文档管理系统
37 1
|
6天前
|
运维 监控 Cloud Native
构建高效稳定的云原生应用部署策略
【5月更文挑战第17天】 在现代软件工程实践中,云原生架构已成为实现敏捷开发、持续交付和微服务治理的关键。本文深入探讨了如何构建一个既能满足业务快速迭代需求,又能保障系统稳定性的云原生应用部署策略。通过分析容器化技术、微服务设计原则以及自动化部署工具的选择与使用,提出了一种综合部署流程优化方案。文章旨在为运维工程师提供一种系统性解决方案,以应对复杂多变的生产环境挑战。
12 1
|
8天前
|
Java 应用服务中间件 测试技术
深入探索Spring Boot Web应用源码及实战应用
【5月更文挑战第11天】本文将详细解析Spring Boot Web应用的源码架构,并通过一个实际案例,展示如何构建一个基于Spring Boot的Web应用。本文旨在帮助读者更好地理解Spring Boot的内部工作机制,以及如何利用这些机制优化自己的Web应用开发。
34 3
|
2天前
|
Cloud Native Devops 持续交付
构建未来:云原生架构在现代企业中的应用与实践
【5月更文挑战第21天】 随着数字化转型的加速,企业对于敏捷性、可扩展性和成本效益的需求日益增长。云原生技术以其独特的优势应运而生,成为推动企业IT架构现代化的重要力量。本文将深入探讨云原生架构的核心概念、关键技术以及如何在企业中实施云原生解决方案,以实现真正的弹性、自动化和持续交付。
|
2天前
|
Cloud Native 搜索推荐 测试技术
云原生之使用Docker部署homarr个人导航页
【5月更文挑战第18天】云原生之使用Docker部署homarr个人导航页
17 1
|
2天前
|
运维 监控 JavaScript
【阿里云云原生专栏】Serverless架构下的应用部署与运维:阿里云Function Compute深度探索
【5月更文挑战第21天】阿里云Function Compute是事件驱动的无服务器计算服务,让用户无需关注基础设施,专注业务逻辑。本文详述了在FC上部署应用的步骤,包括创建函数、编写代码和部署,并介绍了运维功能:监控告警、日志管理、版本管理和授权管理,提供高效低成本的计算服务。
126 6
|
2天前
|
Cloud Native 数据管理 关系型数据库
【阿里云云原生专栏】云原生数据管理:阿里云数据库服务的分布式实践
【5月更文挑战第21天】阿里云数据库服务在云原生时代展现优势,应对分布式数据管理挑战。PolarDB等服务保证高可用和弹性,通过多副本机制和分布式事务确保数据一致性和可靠性。示例代码展示了在阿里云数据库上进行分布式事务操作。此外,丰富的监控工具协助用户管理数据库性能,支持企业的数字化转型和业务增长。
169 1
|
3天前
|
Cloud Native 安全 持续交付
构建未来应用:云原生架构的演进与实践
【5月更文挑战第20天】 在数字化转型的浪潮中,云原生技术以其独特的弹性、可扩展性和敏捷性成为推动企业IT架构现代化的关键力量。本文将深入探讨云原生的核心概念、关键技术以及如何在企业环境中实施云原生架构。我们将从容器化技术的基本原理出发,解析微服务架构的设计原则,并讨论如何通过持续集成和持续部署(CI/CD)实现快速迭代。此外,文章还将涉及如何利用云平台的资源和服务优化云原生应用的性能和安全性。通过对云原生生态的深度剖析,本文旨在为开发者和企业提供一条明晰的路径,以构建和维护在不断变化的市场环境中能够持续创新的应用程序。
|
3天前
|
Cloud Native 测试技术 数据库
【云原生之Docker实战】使用Docker部署flatnotes笔记工具
【5月更文挑战第17天】使用Docker部署flatnotes笔记工具
35 8
|
3天前
|
存储 弹性计算 Kubernetes
【阿里云云原生专栏】深入解析阿里云Kubernetes服务ACK:企业级容器编排实战
【5月更文挑战第20天】阿里云ACK是高性能的Kubernetes服务,基于开源Kubernetes并融合VPC、SLB等云资源。它提供强大的集群管理、无缝兼容Kubernetes API、弹性伸缩、安全隔离及监控日志功能。用户可通过控制台或kubectl轻松创建和部署应用,如Nginx。此外,ACK支持自动扩缩容、服务发现、负载均衡和持久化存储。多重安全保障和集成监控使其成为企业云原生环境的理想选择。
138 3

热门文章

最新文章