在云原生趋势下,容器和 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. 花两万培训Java的三个同学,最后都怎么样了

    仙路尽头谁为峰,学完Java学Python. 前言 对于IT行业的培训,例如Java.大数据.H5等等,我一直保持着肯定的态度. 因为当年大学时期的我,也差点去参加Java培训.一是因为那时钱包空空, ...

  2. vue传值的几种方式

    props:适用于 父组件 ==> 子组件 通信 由父组件传值子组件在props中接收即可: (由父组件给子组件传递 函数类型 的props可实现 子组件 ==> 父组件 传递数据,较为繁 ...

  3. 1.1 操作系统的第一个功能——虚拟化硬件资源 -《zobolの操作系统学习札记》

    1.1 操作系统的第一个功能--虚拟化硬件资源 目录 1.1 操作系统的第一个功能--虚拟化硬件资源 问1:操作系统一般处于计算机系统的哪一个位置? 问2:管理硬件资源为什么要单独交给操作系统? 问3 ...

  4. BUUCTF-佛系少年

    佛系少年 这题我感觉超扯,不知道当时环境是不是断网的,断网咋解密的出来.. 下载后有个压缩包,带加密的,首先16进制看看是否是真加密 这里可以看到,压缩包数据区这里都是未加密的方式 但是到了压缩包目录 ...

  5. 记一次beego通过go get命令后找不到bee.exe的坑

    学习goweb开发,gin是个轻量级的框架.如果想要一个类如aspnetmvc帮我们搭建好了的goweb框架,beego值得去学习.否则gin下面需要动手构建好多代码.新手还是先学现成的节约时间成本. ...

  6. bat-配置环境变量

    查看环境变量 set 查看当前所有变量 set path 查看变量path的值 echo %xxx% 查看某一个环境变量 临时设置环境变量 set xxx=xxx set xxx= 永久设置环境变量 ...

  7. NC200211 装备合成

    NC200211 装备合成 题目 题目描述 牛牛有 \({x}\) 件材料 \({a}\) 和 \({y}\) 件材料 \({b}\) ,用 \({2}\) 件材料 \({a}\) 和 \({3}\) ...

  8. Node.js精进(7)——日志

    在 Node.js 中,提供了console模块,这是一个简单的调试控制台,其功能类似于浏览器提供的 JavaScript 控制台. 本系列所有的示例源码都已上传至Github,点击此处获取. 一.原 ...

  9. 腾讯云数据库公有云市场稳居TOP 2!

    7月4日,国际权威机构IDC发布的<2021年下半年中国关系型数据库软件市场跟踪报告>显示,腾讯云数据库在关系型数据库软件市场(公有云模式)中,位列第二. IDC报告显示,2021下半年中 ...

  10. 智能指针思想实践(std::unique_ptr, std::shared_ptr)

    1 smart pointer 思想 ​ 个人认为smart pointer实际上就是一个对原始指针类型的一个封装类,并对外提供了-> 和 * 两种操作,使得其能够表现出原始指针的操作行为. ​ ...