在云原生趋势下,容器和 Kubernetes 可谓是家喻户晓,许多企业内部的研发团队都在使用 Kubernetes 打造 DevOps 平台。从最早的容器概念到 Kubernetes 再到 DevOps/GitOps 整个技术链非常庞大,Kubernetes 的优势也显而易见 可移动 可扩展 自修复 等,但有一个劣势点就是技术门槛太高,对于开发者来说单单一个 Kubernetes 就够我们学习一段时间了。

通常我们在 Kubernetes 中部署应用需要用 Dockerfile 将业务打成镜像,然后编写 Kubernetes 的 Yaml 部署应用,再结合 Jenkins 的 Pipeline 实现 CI/CD。对于不懂容器的开发者来说,要学习 Dockerfile 语法、K8s Yaml 语法、 Jenkins Pipeline 语法,学习成本有点高。"我还要 Coding 呢!"

本文将分别介绍 如何在 Kubernetes 中部署应用 和 如何在 Rainbond 中部署应用。

在 Kubernetes 中部署应用

在 Kubernetes 中部署一个 Nginx 并通过 NodePort 访问和通过 Ingress 访问。

  1. 创建 nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
  1. 创建 nginx-service.yaml,并设置 Service 类型为 NodePort
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
type: NodePort
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
nodePort: 30080
  1. 创建 Nginx Deployment 和 Nginx Service
$ kubectl apply -f nginx-deployment.yaml
$ kubectl apply -f nginx-service.yaml
  1. 创建 Ingress 策略
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: nginx-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
ingressClassName: nginx-example
rules:
- http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: nginx-service
port:
number: 80
kubectl apply -f nginx-ingress.yaml

以上就是在 Kubernetes 中部署一个 Nginx 并开启 Nodeport 访问和 Ingress 访问的简单示例,这个过程需要理解 K8s 的资源类型 Deployment Service Ingress,以及资源类型之间如何绑定的等等。这仅仅是冰山一角,对于复杂的业务需要写多个这样的 Yaml 以及理清楚业务之间的依赖关系等。

在 Rainbond 中部署应用

Rainbond 是建立在 Kubernetes 之上的云原生应用管理平台,遵循以应用为中心的概念,其目的就是为了让用户不在编写复杂的 Yaml 文件就能轻松的将自己的业务部署在 Kubernetes 中。

通过一条命令安装 Rainbond Allinone

这里同样也是部署一个 Nginx 并通过 NodePort 访问和通过 Ingress 访问。

  1. 部署 Nginx 应用,在 Rainbond 团队视图内 -> 选择基于镜像创建组件 -> 镜像地址选择 nginx:latest 创建即可。

  1. 开启 Ingress 访问,在 Nginx 组件内 -> 端口 -> 打开对外服务,默认会生成可访问的域名。

  1. 开启 Nodeport 访问,在 应用视图内 -> 网关 -> TCP/UDP -> 添加策略一键绑定 TCP 访问策略。

在 Rainbond 上部署应用只需点点点,了解 Rainbond 的一些概念,零学习成本。文中提到的 Rainbond 的一些概念:

组件: 组件对应 K8s 中的控制器,比如 Deployment、Statefulset 等。

应用: 应用是由多个组件组成的应用,通过一套微服务包含多个组件称之为一个应用。

网关: 网关是 Rainbond 对外访问的入口,域名、Tcp访问都是通过网关生成的访问策略。

还有文中没提到的一些概念,比如:

团队: Rainbond的团队意义上是分配给部门使用的,比如开发部门、测试部门,实际底层上团队对应的是 K8s NameSpace。

最后

在 Kubernetes 中部署应用需要我们大量学习容器、Kubernetes的概念以及 Yaml 语法等等。而在 Rainbond 上部署应用只需要在 UI 界面上点点即可完成部署,这对不懂 K8s 和容器的同学们很友好,可以快速部署自己的业务。

K8s小白?应用部署太难?看这篇就够了!的更多相关文章

  1. C#实现多级子目录Zip压缩解压实例 NET4.6下的UTC时间转换 [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了 asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程 asp.net core异步进行新增操作并且需要判断某些字段是否重复的三种解决方案 .NET Core开发日志

    C#实现多级子目录Zip压缩解压实例 参考 https://blog.csdn.net/lki_suidongdong/article/details/20942977 重点: 实现多级子目录的压缩, ...

  2. .NET Core实战项目之CMS 第二章 入门篇-快速入门ASP.NET Core看这篇就够了

    作者:依乐祝 原文链接:https://www.cnblogs.com/yilezhu/p/9985451.html 本来这篇只是想简单介绍下ASP.NET Core MVC项目的(毕竟要照顾到很多新 ...

  3. [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了

    [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了 本文首发自:博客园 文章地址: https://www.cnblogs.com/yilezhu/p/ ...

  4. Vue学习看这篇就够

    Vue -渐进式JavaScript框架 介绍 vue 中文网 vue github Vue.js 是一套构建用户界面(UI)的渐进式JavaScript框架 库和框架的区别 我们所说的前端框架与库的 ...

  5. Python GUI之tkinter窗口视窗教程大集合(看这篇就够了) JAVA日志的前世今生 .NET MVC采用SignalR更新在线用户数 C#多线程编程系列(五)- 使用任务并行库 C#多线程编程系列(三)- 线程同步 C#多线程编程系列(二)- 线程基础 C#多线程编程系列(一)- 简介

    Python GUI之tkinter窗口视窗教程大集合(看这篇就够了) 一.前言 由于本篇文章较长,所以下面给出内容目录方便跳转阅读,当然也可以用博客页面最右侧的文章目录导航栏进行跳转查阅. 一.前言 ...

  6. React入门看这篇就够了

    摘要: 很多值得了解的细节. 原文:React入门看这篇就够了 作者:Random Fundebug经授权转载,版权归原作者所有. React 背景介绍 React 入门实例教程 React 起源于 ...

  7. net core体系-web应用程序-4asp.net core2.0 项目实战(CMS)-第二章 入门篇-快速入门ASP.NET Core看这篇就够了

    .NET Core实战项目之CMS 第二章 入门篇-快速入门ASP.NET Core看这篇就够了   原文链接:https://www.cnblogs.com/yilezhu/p/9985451.ht ...

  8. [转]React入门看这篇就够了

    摘要: 很多值得了解的细节. 原文:React入门看这篇就够了 作者:Random Fundebug经授权转载,版权归原作者所有. React 背景介绍 React 入门实例教程 React 起源于 ...

  9. 想了解SAW,BAW,FBAR滤波器的原理?看这篇就够了!

    想了解SAW,BAW,FBAR滤波器的原理?看这篇就够了!   很多通信系统发展到某种程度都会有小型化的趋势.一方面小型化可以让系统更加轻便和有效,另一方面,日益发展的IC**技术可以用更低的成本生产 ...

  10. [转帖]Zookeeper入门看这篇就够了

    Zookeeper入门看这篇就够了 https://my.oschina.net/u/3796575/blog/1845035 Zookeeper是什么 官方文档上这么解释zookeeper,它是一个 ...

随机推荐

  1. 探究Presto SQL引擎(3)-代码生成

    ​ vivo 互联网服务器团队- Shuai Guangying 探究Presto SQL引擎 系列:第1篇<探究Presto SQL引擎(1)-巧用Antlr>介绍了Antlr的基本用法 ...

  2. 30.Mysql主从复制、读写分离

    Mysql主从复制.读写分离 目录 Mysql主从复制.读写分离 读写分离 读写分离概述 为什么要读写分离 什么时候要读写分离 主从复制与读写分离 mysql支持的复制类型 主从复制的工作过程 初始环 ...

  3. 六、LVM和从磁盘配额

    一.LVM概述 Logical Volume Manager,逻辑卷管理 优点:能够保证在现有数据不变的情况下,动态调整磁盘容量,从而提高磁盘管理的灵活性 /boot分区用于存放引导文件,不能基于LV ...

  4. BUUCTF-后门查杀

    后门查杀 后门查杀这种题最好还是整个D盾直接扫描目录方便. 查看文件得到flag

  5. 单片机 MCU 固件打包脚本软件

    ​ 1 前言 开发完 MCU 软件后,通常都会生成 hex 文件或者 bin 文件,用来做固件烧录或者升级,如果用来做产品开发,就涉及到固件版本的问题,初学者通常采用固件文件重命名来区分版本. 如果需 ...

  6. 让你的Nginx支持分布式追踪

    Background NGINX 是一个通用且流行的应用程序.也是最流行的 Web 服务器,它可用于提供静态文件内容,但也通常与其他服务一起用作分布式系统中的组件,在其中它用作反向代理.负载均衡 或 ...

  7. Thread类的常用方法_获取线程名称的方法和设置线程名称的方法

    Thread类的常用方法 获取线程的名称: 1.使用Thread类中的方法getName() String getName() 返回该线程的名称 2.可以先获取到当前正在执行的线程,使用线程中的方法g ...

  8. 浏览器js调试

    经常忘记,还是需要记录一下啊 右键,检查元素 在元素DOM节点右击,复制CSS选择器 function sleep (time) { return new Promise((resolve) => ...

  9. XML入门介绍

    目录 XML 简介 xml 语法 文档声明 (1)创建一个 xml 文件 (2)图书有 id 性 属性 一 表示唯一 标识,书名,有作者,价格的信息 xml 注释 元素(标签) 1)什么是 xml 元 ...

  10. Qucs初步使用指南(不是multism)

    众所周知,Multism是一款强大的电路仿真软件,学习电子电路的同学都会接触到. 但是,这软件不支持Linux.(这就很魂淡了啊) 我的主力机是Linux,不能进行电路仿真成了学习的最大障碍. 使用w ...