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

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 云原生之容器编排实践-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!

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
24天前
|
存储 Prometheus 监控
Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行
本文深入探讨了在Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行。
30 5
|
24天前
|
开发框架 安全 开发者
Docker 是一种容器化技术,支持开发者将应用及其依赖打包成容器,在不同平台运行而无需修改。
Docker 是一种容器化技术,支持开发者将应用及其依赖打包成容器,在不同平台运行而无需修改。本文探讨了 Docker 在多平台应用构建与部署中的作用,包括环境一致性、依赖管理、快速构建等优势,以及部署流程和注意事项,展示了 Docker 如何简化开发与部署过程,提高效率和可移植性。
53 4
|
26天前
|
运维 Kubernetes Docker
深入理解容器化技术及其在微服务架构中的应用
深入理解容器化技术及其在微服务架构中的应用
54 1
|
26天前
|
Kubernetes Linux 开发者
深入探索容器化技术——Docker 的实战应用
深入探索容器化技术——Docker 的实战应用
74 0
|
27天前
|
存储 Cloud Native 开发者
深入探索容器化技术——Docker的实战应用
深入探索容器化技术——Docker的实战应用
36 0
|
15天前
|
监控 NoSQL 时序数据库
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
153 77
|
24天前
|
监控 Docker 容器
在Docker容器中运行打包好的应用程序
在Docker容器中运行打包好的应用程序
|
2天前
|
存储 Kubernetes 开发者
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
Docker 是一种开源的应用容器引擎,允许开发者将应用程序及其依赖打包成可移植的镜像,并在任何支持 Docker 的平台上运行。其核心概念包括镜像、容器和仓库。镜像是只读的文件系统,容器是镜像的运行实例,仓库用于存储和分发镜像。Kubernetes(k8s)则是容器集群管理系统,提供自动化部署、扩展和维护等功能,支持服务发现、负载均衡、自动伸缩等特性。两者结合使用,可以实现高效的容器化应用管理和运维。Docker 主要用于单主机上的容器管理,而 Kubernetes 则专注于跨多主机的容器编排与调度。尽管 k8s 逐渐减少了对 Docker 作为容器运行时的支持,但 Doc
19 5
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
|
8天前
|
关系型数据库 应用服务中间件 PHP
实战~如何组织一个多容器项目docker-compose
本文介绍了如何使用Docker搭建Nginx、PHP和MySQL的环境。首先启动Nginx容器并查看IP地址,接着启动Alpine容器并安装curl测试连通性。通过`--link`方式或`docker-compose`配置文件实现服务间的通信。最后展示了Nginx配置文件和PHP代码示例,验证了各服务的正常运行。
28 3
实战~如何组织一个多容器项目docker-compose
|
17天前
|
数据建模 应用服务中间件 nginx
docker替换宿主与容器的映射端口和文件路径
通过正确配置 Docker 的端口和文件路径映射,可以有效地管理容器化应用程序,确保其高效运行和数据持久性。在生产环境中,动态替换映射配置有助于灵活应对各种需求变化。以上方法和步骤提供了一种可靠且易于操作的方案,帮助您轻松管理 Docker 容器的端口和路径映射。
59 3