当前位置: 首页 > news >正文

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

背景

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

yaml描述启动Pod

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

2022-10-04-Yaml2JSON.jpg

  • 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

2022-10-04-TestService.jpg

小总结

关于 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!

相关文章:

  • 【K8S】kubectl常用命令总结
  • 一文搞懂大数据入门之 Hadoop,HDFS,Hbase,Hive
  • FreeRTOS-实现任务调度器
  • 基于51单片机公交车到站指示灯设计
  • MySQL表的增删查改
  • 开关电源学习(一) MP2315S简介
  • String类详解(上)
  • 【数据结构与算法】栈的深入学习(上)
  • C++向量复习题以及知识讲解
  • 深入理解python装饰器
  • 大数据趣味学习探讨(三):怎么确定学习目标
  • SSM整合(超详细)
  • 【程序语言】-- 编程语言分类和应用
  • Springboot三层架构--DAO层、Service层、Colltroler层--这波我在外太空
  • Selenium快速入门
  • 《用数据讲故事》作者Cole N. Knaflic:消除一切无效的图表
  • 【css3】浏览器内核及其兼容性
  • 【刷算法】从上往下打印二叉树
  • Android框架之Volley
  • jquery cookie
  • MySQL用户中的%到底包不包括localhost?
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • QQ浏览器x5内核的兼容性问题
  • 复习Javascript专题(四):js中的深浅拷贝
  • 回流、重绘及其优化
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 解析带emoji和链接的聊天系统消息
  • 看域名解析域名安全对SEO的影响
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 前端相关框架总和
  • 通信类
  • 最近的计划
  • python最赚钱的4个方向,你最心动的是哪个?
  • ​2020 年大前端技术趋势解读
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • ​比特币大跌的 2 个原因
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (WSI分类)WSI分类文献小综述 2024
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • (总结)Linux下的暴力密码在线破解工具Hydra详解
  • ****Linux下Mysql的安装和配置
  • .net Application的目录
  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
  • .net core使用RPC方式进行高效的HTTP服务访问
  • .Net环境下的缓存技术介绍
  • .NET学习全景图
  • /etc/X11/xorg.conf 文件被误改后进不了图形化界面
  • @ConditionalOnProperty注解使用说明
  • [ C++ ] 继承
  • [20150707]外部表与rowid.txt