kuma 学习三 组件说明
当前官方已经提供了两种可选的运行模式
- 通用模式
- kubernetes 模式
kuma 组件说明
- kuma-cp kuma 的控制面板
- kuma-dp kuma 的数据面板
- enovy 提供sidecar 服务的
- kumactl 命令行与kuma-cp 通信的
- kuma-injector 只有kubernetes 环境需要,用来自动处理容器的sidecar
通用模式
对于通用模式,需要依赖一个后端进行状态存储,官方当前建议的是pg
- 参考架构图

kubernetes 模式
需要依赖kuma-injector ,我们需要在运行的pod中添加注解
kuma.io/sidecar-injection: enabled
- 参考图

后端存储
kuma-cp 对于在通用模式依赖状态存储,默认是内存,实际上在安装包中的配置文件中我们也可以看到
对于pg 数据库的配置如下:
KUMA_STORE_TYPE=postgres \
KUMA_STORE_POSTGRES_HOST=localhost \
KUMA_STORE_POSTGRES_PORT=5432 \
KUMA_STORE_POSTGRES_USER=kuma-user \
KUMA_STORE_POSTGRES_PASSWORD=kuma-password \
KUMA_STORE_POSTGRES_DB_NAME=kuma \
kuma-cp run
kubernetes 模式
KUMA_STORE_TYPE=kubernetes kuma-cp run
数据面板以及数据模型
当kuma-cp 启动之后,需要等待数据面板进行连接以及注册,为了保障数据面板可以正常运行,需要准备两件事情
- 必须至少存在一个mesh,当控制面板启动的时候自动创建一个default 的
- 当通过数据面板连接的时候必须存在一个数据面板实体
参考模型图
说明:
在通用模式中,数据面板实体需要手工创建
数据面板实体
实际可以参考数据面板实体的规范https://kuma.io/docs/0.1.1/documentation/#dataplane-specification
当我们需要启动一个新的数据面板的时候,同样需要包含两件事情
- 数据面板,必须通知自己负责的服务,这个是通过数据面板实体定义的
- 数据面板进程需要处理输入以及输出请求
以上步骤通过两个不行的 命令处理 - 数据面板的注册通过kumactl 或者http api
- 启动数据面板通过kuma-dp run
说明:
在kuberntes 中以上是自动处理的
以下是一个处理redis 服务的
echo "type: Dataplane
mesh: default
name: redis-1
networking:
inbound:
- interface: 127.0.0.1:9000:6379
tags:
service: redis" | kumactl apply -f -
KUMA_CONTROL_PLANE_BOOTSTRAP_SERVER_URL=http://control-plane:5682 \
KUMA_DATAPLANE_MESH=default \
KUMA_DATAPLANE_NAME=redis-1 \
kuma-dp run
以下是一个后端服务依赖redis的
echo "type: Dataplane
mesh: default
name: backend-1
networking:
inbound:
- interface: 127.0.0.1:8000:80
tags:
service: backend
outbound:
- interface: :10000
service: redis" | kumactl apply -f -
KUMA_CONTROL_PLANE_BOOTSTRAP_SERVER_URL=http://control-plane:5682 \
KUMA_DATAPLANE_MESH=default \
KUMA_DATAPLANE_NAME=redis-1 \
kuma-dp run
说明:我们需要处理inbound 以及outbound
envoy
因为kuma 依赖envoy 通过9901 端口我们可以方便的调试常见问题
tags
为了标示服务的角色,需要注意的是必须包含一个service 的tag
数据面板指南
参考格式
type: Dataplane
mesh: default
name: web-01
networking:
inbound:
- interface: 127.0.0.1:11011:11012
tags:
service: backend
outbound:
- interface: :33033
service: redis
格式说明:
type: 必须为Dataplane
mesh: 我们需要关联的数据面板
name: 数据面板实例的名字,必须唯一
networking: 配置数据流量的inbound 以及outbound规则
inbound: 一个数组定义通过数据面板可以暴露的访问地址
interface: 决定请求格式 {address}:{dataplane-port}:{service-port}
tags:定义服务的角色,必须包含一个serevice 的tag
outbound: 服务发出的每个传出请求也必须通过DP,此对象指定DP在接受服务的传出请求时必须侦听的端口
inerface: 向外部服务访问暴露的端口
service: 定义关联的服务
kuma 的几个端口
以下是kuma-cp 暴露的端口
5677: sds 服务的端口
5678: xds grpc 的端口
5680: http 服务,返回健康状态
5681: http 服务 kumactl 依赖次服务端口
5682: 提供envoy bootstrap 配置,当数据面板启动的时候
kuma http api
kuma 通过5681提供管理配置
包含的请求url
/meshes
/meshes/{name}
/meshes/{name}/dataplanes
/meshes/{name}/dataplanes/{name}
参考资料
https://kuma.io/docs/0.1.1/documentation/#overview
kuma 学习三 组件说明的更多相关文章
- Vue学习笔记-Vue.js-2.X 学习(三)===>组件化高级
(四) 组件化高级 1.插槽(slot)的基本使用 A:基本使用: <slot></slot> B:默认置:<slot><h1>中间可以放默认值< ...
- stenciljs 学习三 组件生命周期
stenciljs 组件包含好多生命周期方法, will did load update unload 实现生命周期的方法比价简单类似 componentWillLoad ....,使用typescr ...
- DjangoRestFramework学习三之认证组件、权限组件、频率组件、url注册器、响应器、分页组件
DjangoRestFramework学习三之认证组件.权限组件.频率组件.url注册器.响应器.分页组件 本节目录 一 认证组件 二 权限组件 三 频率组件 四 URL注册器 五 响应器 六 分 ...
- day 83 Vue学习三之vue组件
本节目录 一 什么是组件 二 v-model双向数据绑定 三 组件基础 四 父子组件传值 五 平行组件传值 六 xxx 七 xxx 八 xxx 一 什么是组件 首先给大家介绍一下组件(componen ...
- day91 DjangoRestFramework学习三之认证组件、权限组件、频率组件、url注册器、响应器、分页组件
DjangoRestFramework学习三之认证组件.权限组件.频率组件.url注册器.响应器.分页组件 本节目录 一 认证组件 二 权限组件 三 频率组件 四 URL注册器 五 响应器 六 分 ...
- day 89 DjangoRestFramework学习三之认证组件、权限组件、频率组件、url注册器、响应器、分页组件
DjangoRestFramework学习三之认证组件.权限组件.频率组件.url注册器.响应器.分页组件 本节目录 一 认证组件 二 权限组件 三 频率组件 四 URL注册器 五 响应器 六 分 ...
- day 82 Vue学习三之vue组件
Vue学习三之vue组件 本节目录 一 什么是组件 二 v-model双向数据绑定 三 组件基础 四 父子组件传值 五 平行组件传值 六 xxx 七 xxx 八 xxx 一 什么是组件 首先给 ...
- Vue学习笔记-Vue.js-2.X 学习(二)===>组件化开发
===重点重点开始 ========================== (三) 组件化开发 1.创建组件构造器: Vue.extends() 2.注册组件: Vue.component() 3.使用 ...
- Jetpack Compose学习(5)——从登录页美化开始学习布局组件使用
原文:Jetpack Compose学习(5)--从登录页美化开始学习布局组件使用 | Stars-One的杂货小窝 本篇主要讲解常用的布局,会与原生Android的布局控件进行对比说明,请确保了解A ...
随机推荐
- MySQL远程连接ERROR 2003 (HY000):Can't connect to MySQL server on'XXXXX'(111) 的问题
装了个navicat ,然后去连接mysql服务器,一直连不上,一开始以为是防火墙问题,后来防火墙都关闭, iptable服务关闭,还是不行,网上查了下:主要是因为设置了bind_address=12 ...
- 使用HttpWebRequest和HttpWebResponse时接收数据中文乱码的情况
今天在调试一个get请求的接口的时候发现HttpWebResponse方法接收数据的时候,中文出现乱码的情况. 原因是格式编码转码的问题. 原来自从Windows 2000之后的操作系统在文件处理时默 ...
- (原创)理解主机设备(PLC,PC机)之间的以太网通信
主机设备:PC机,PLC 网络设备:家用路由器 局域网包括了有线局域网和无线局域网(WIFI).怎么去使用2者? 网络设备的职责最终目的为了帮助2台主机的数据传输.路由器,交换机范围不同,目的相同.在 ...
- MySQL之Python与Mysql交互
一:Python操作MySQL步骤 1:Python中操作MySQL的步骤 2.引入模块 在.py文件中引入pymysql模块 import pymysql pymysql是python的一个第三方与 ...
- CodeForces 955D Scissors
昨晚CF比赛比较颓,今天有心情写题解就不错了QWQ 洛谷题目页面传送门 & CodeForces题目页面传送门 给定字符串\(a,b,|a|=n,|b|=m\),求是否可以在\(a\)中选\( ...
- Java自学-类和对象 枚举类型
枚举类型 步骤 1 : 预先定义的常量 枚举enum是一种特殊的类(还是类),使用枚举可以很方便的定义常量 比如设计一个枚举类型 季节,里面有4种常量 public enum Season { SPR ...
- vim巧妙用法
1. 块复制 按ctrl+v键,编辑框最下方将出现"可视 块"字样 使用方向键移动光标,选择矩形区域内的文字 y 键复制文本: d 键剪切文本:p 键粘贴文本 按shift+v键, ...
- Asp.Net Core 生成二维码(NuGet使用QRCoder)
前言 功能:调用web api 接口 1.获取 jpeg 格式的二维码 2.获取中间带有logo 的二维码 3. 下载 jpeg,svg 格式的二维码 需要的NuGet 包: > QRCoder ...
- 无法读取例程 &ROUTINE 中配置文件选项 FND_DEVELOPER_MODE
问题描述:OM>发运>事务处理,进入此界面,FORM出现报错信息:无法读取例程 &ROUTINE 中配置文件选项 FND_DEVELOPER_MODE 解决办法:在系统管理员下,设 ...
- js 压缩图片 上传
感谢,参考了以下作者的绝大部分内容 https://blog.csdn.net/tangxiujiang/article/details/78755292 https://blog.csdn.net/ ...