iManager for K8S 站点定制(以MongoDB为例)

news2024/12/28 3:56:11

作者:ls

目录

  • 背景
  • 前期准备
  • 实现效果
  • 实现过程
  • 附录
    • YAML中的属性配置
    • 占位符列表

背景

  SuperMap iManager支持一键创建用户定制的站点,可将已添加的站点模板创建为站点环境,并通过站点使用应用。
  定制站点与其他站点相同,在监管方面,可通过拓扑图了解各项服务间的关联及节点状、查看站点账户、查看服务度量指标与追踪记录、添加服务、设置站点资源上限、重新部署站点、删除站点、使用关键字搜索服务。可对服务一键重新部署,调整服务规格,开启/停用服务,修改服务所用镜像,开启/关闭部分服务端口,编辑服务编排,对服务节点手动/动态伸缩,解决单点失效。可查看每个服务的操作日志,并支持在命令行输入shell命令操作服务节点。
  本文将以MongoDB数据库为例,完成对站点的创建、使用、监控与管理等功能。

前期准备

iManager for K8S、MongoDB docker镜像、MongoDB站点编排文件

实现效果

  在iManager中成功部署MongoDB站点后,便可对其进行快捷的管理与监控,包括:调整规格、重新部署、修改进行、指定主机和编辑编排内容等管理操作,以及CPU使用率、内存使用量、网络接收速率、网络传输速率和硬盘使用量等监控功能。
在这里插入图片描述

实现过程

【定制文件制作】

1:制作镜像
  将所需的应用Docker容器化,推荐使用Dockerfile的形式将自己的应用制作为Docker镜像,镜像制作方式可以参考Docker官方文档:https://docs.docker.com/engine/reference/builder/

2:编写YAML文件
  您可以通过编写YAML文件创建应用,iManager支持创建的实例类型包括Service, Deployment, Statefulset, Job, PersistentVolumeClaim, ServiceAccount, ConfigMap。
YAML编写规则可参考: https://kubernetes.io/docs/concepts/
  此外,您可通过配置Service、Deployment和StatefulSet的labels和annotation属性来控制应用的界面展示。支持配置的参数参见本文附录。

提示:编写YAML文件时请使用utf-8编码,否则会出现中文乱码。

本文示例的MongoDB YAML文件详情:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
    labels:
       type: mongo
    #pvc名称,应用的id: ${appsetId}
    name: pvc-nfs-mongo-data-${appsetId}
spec:
   #storageClass名称,固定为appset-storage-class-${GROUP_TYPE},应用所属分组类型:${GROUP_TYPE}
   storageClassName: appset-storage-class-${GROUP_TYPE}
   accessModes:
      - ReadWriteMany
   resources:
      requests:
         storage: 10Gi
---
apiVersion: v1
kind: Service
metadata:
    labels:
       type: mongo
    name: mongo-server
    annotations:
       #服务地址,服务的nodePort:${NODE_PORT}
       addressReg: "mongodb://${SERVICE_IP}:${NODE_PORT}"
       #服务地址对应的targetPort为27017
       showPorts: "[27017]"
spec:
   ports:
   - port: 27017
     targetPort: 27017
     #用户创建站点时自定义的外部端口:${custom_node_port_mongo}
     nodePort: ${custom_node_port_mongo}
   selector:
      app: mongo-server
   type: NodePort
---
apiVersion: apps/v1
kind: Deployment
metadata:
   labels:
      app: mongo-server
   name: mongo-server
   annotations:
      #不支持伸缩
      scale: unscalable
      #站点描述信息
      description: Mongo数据库
      #站点账户信息
      #accountInfo: ""
      #拓扑图信息
      topoProperty: "{'name':'mongo-server','isPivot':'false','index':1}"
spec:
   replicas: 1
   selector:
      matchLabels:
          app: mongo-server
   template:
      metadata:
          labels:
            app: mongo-server
      spec:
         #镜像拉取Secret,镜像拉取Secret:${IMAGE_PULL_SECRET}
         imagePullSecrets:
          - name: "${IMAGE_PULL_SECRET}"
         containers:
          - env:
            #镜像仓库地址:${REGISTRY_URL}
            # 使用的本地私有docker镜像仓库, image: ${REGISTRY_URL}/mongo:x.x.x
            # 使用的公网docker镜像仓库, image: mongo:x.x.x
            image: mongo:5.0.9
            name: mongo-server
            #镜像拉取策略:${IMAGE_PULL_POLICY}
            imagePullPolicy: ${IMAGE_PULL_POLICY}
            resources:
                limits:
                   #创建站点时自定义cpu资源限制:${GIS_APP_LIMIT_CPU}
                   cpu: ${GIS_APP_LIMIT_CPU}
                requests:
                   cpu: 500m
            volumeMounts:
              - mountPath: /data/db
                name: mongo-volume
         restartPolicy: Always
         volumes:
            - name: mongo-volume
              persistentVolumeClaim:
                 claimName: pvc-nfs-mongo-data-${appsetId}

3:创建站点模板
  在站点模板页面,管理员可通过上传文件的方式添加第三方站点,并将站点分配到相应的站点组中。还可以对已添加的站点进行重命名与删除。
请按以下步骤添加站点:
1.登录iManager,点击左侧导航栏站点定制->站点模板。
2. 在站点模板页面点击添加模板,输入站点名称,并上传yaml文件。(站点名称中不能含有百分号“%”)
3. 选择组名,如下图所示。
在这里插入图片描述
4.点击确认,完成站点添加。
5.绑定NFS。点击左侧导航栏存储管理->NFS->绑定,选择您创建的站点组进行绑定。

4:创建站点
1.与创建iManager已有站点操作一致,设置站点名称,选择站点类型后即可完成对站点的创建。
在这里插入图片描述
2.新建MongoDB站点在kubernetes dashboard中的对应命名空间的工作负载详情:
在这里插入图片描述
3.站点添加成功后,可在站点模板页面对已有站点进行删除或更改站点名称。定制站点与其他GIS站点一样,可在站点管理中进行创建、监控与管理。
在这里插入图片描述

5:测试站点可用性-为地图服务添加MongoDB类型缓存
1.打开一个服务实例详情,启用地图瓦片缓存,选择缓存类型为MongoDB并设置必要参数,保存进行地图浏览;
在这里插入图片描述
在这里插入图片描述
2.使用数据库管理工具打开MongoDB数据库,可以查看到对应的缓存数据库,MongoDB站点功能正常。
在这里插入图片描述

附录

YAML中的属性配置

Service支持的annotation属性:

名称描述
addressReg服务地址格式,默认展示为http://${SERVICE_IP}: ${NODE_PORT}格式
showPorts服务暴露多个端口时,服务地址对应的targetPort

Service支持的labels属性:

名称描述
entrance服务地址是否作为访问入口,默认为false,配置为true时该服务地址作为应用访问入口
entrance-port服务暴露多个端口时,访问入口地址对应targetPort,仅在entrance为true时生效

示例:

apiVersion: v1
kind: Service
metadata:
 name: mysql
 labels:
   entrance: "true"
   entrance-port: "3306"
 annotations:
   addressReg: "jdbc:mysql://mysql:3306"
   showPorts: "[3306]"
spec:
 ports:
 - port: 3306
 selector:
   app: mysql
 type: NodePort

Deployment和StatefulSet支持的annotation属性:

名称描述
scale是否支持伸缩,默认为支持,配置为unscalable时不展示伸缩按钮
console是否支持命令行,默认为支持,配置为noconsole时不展示命令行按钮
description服务列表中的描述信息
accountInfo账户信息,支持html格式
topoProperty{name: 该服务Deployment/StatefulSet名称;isPivot: 是否作为中心点;index: 排序编号,“1”为正北方向,按顺时针递增(不填时默认名称的字典序顺时针排列);parents: [{name: 该服务箭头所指服务的Deployment/StatefulSet名称;description: 两服务的关系描述}]}

示例:

apiVersion: apps/v1
kind: Deployment
metadata:
 labels:
  app: mysql
 name: mysql
 annotations:
  scale: unscalable
  console: noconsole
  description: MySQL数据库
  accountInfo: "<p>用户/密码:</p><p> root/supermap</p>"
  topoProperty: "{'name':'mysql','isPivot':'false','index':1,'parents':[{'name':'phpmyadmin','description':'数据库管理UI'}]}"
spec:
 selector:
  matchLabels:
      app: mysql
 template:
  metadata:
      labels:
        app: mysql
  spec:
      containers:
      - env:
        - name: MYSQL_ROOT_PASSWORD
          value: supermap
        image: registry.ispeco.com/supermap/mysql:5.7.12
        name: mysql
        imagePullPolicy: Always
      restartPolicy: Always

PersistentVolumeClaim中的属性:

名称描述
storageClassNamestorageClass名称,固定为appset-storage-class-${GROUP_TYPE}

示例:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
labels:
   type: mysql
name: pvc-nfs-mysql-data-${appsetId}
spec:
storageClassName: appset-storage-class-${GROUP_TYPE}
accessModes:
  - ReadWriteMany
resources:
  requests:
     storage: 1Gi

占位符列表

在YAML文件中使用以下占位符,在应用创建过程中会被真实值替换:

名称描述
${appsetId}应用的id
示例:PersistentVolumeClaim名称
name: pvc-nfs-mysql-data-${appsetId}
${SERVICE_IP}服务地址ip
示例:为Service添加annotation:
addressReg: “jdbc:mysql://${SERVICE_IP}:8080”
${SERVICE_NAME}服务名称
示例:为Service添加annotation:
addressReg: “jdbc:mysql://${SERVICE_NAME}:8080”
${NODE_PORT}服务的nodePort
示例:为Service添加annotation:
addressReg: “jdbc:mysql://127.0.0.1:${NODE_PORT}”
${TARGET_PORT}服务的targetPort
示例:为Service添加annotation:
addressReg: “jdbc:mysql://127.0.0.1:${TARGET_PORT}”
${IMAGE_PULL_POLICY}镜像拉取策略
示例:imagePullPolicy: ${IMAGE_PULL_POLICY}
${IMAGE_PULL_SECRET}镜像拉取Secret
示例:imagePullSecrets:
- name: ”${IMAGE_PULL_SECRET}”
${REGISTRY_URL}镜像仓库地址
示例:image: ${REGISTRY_URL}supermap/mysql:5.7.12
${GIS_APP_LIMIT_CPU}CPU限制
示例:cpu: ${GIS_APP_LIMIT_CPU}
${GROUP_TYPE}应用所属分组类型
示例:storageClassName: appset-storage-class-${GROUP_TYPE}
${NAMESPACE}应用所属命名空间
示例:namespace: ${NAMESPACE}
${custom_node_port_*}用户自定义的外部端口,配在Service的nodePort参数中,在创建该站点时,可在界面上自定义该外部端口。占位符中的*号根据端口不同需替换成不同的名称。
示例:nodePort: ${custom_node_port_mysql}
注意:在YAML文件中配置命名空间时,勿写入固定值,请使用上表中的占位符。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/748031.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

学习PostgreSQL的优势

学习 PostgreSQL 可以为您打开许多就业机会。 PostgreSQL 是一种强大的关系型数据库管理系统&#xff0c;被广泛用于企业和组织中的数据管理和应用程序开发。 以下是一些学习 PostgreSQL 可能帮助您找到的工作领域&#xff1a; **1.数据库管理员&#xff1a;**作为 PostgreSQ…

负载均衡详解

负载均衡可以简单分为服务端负载均衡和客户端负载均衡这两种。 根据 OSI 模型&#xff0c;服务端负载均衡还可以分为&#xff1a; 二层负载均衡三层负载均衡四层负载均衡七层负载均衡 最常见的是四层和七层负载均衡 四层负载均衡 工作在 OSI 模型第四层&#xff0c;也就是传…

TIA博途中FC或FB块被多次调用后,监控单个块执行情况的具体方法

TIA博途中FC或FB块被多次调用后,监控单个块执行情况的具体方法 本文以简单的电机启保停程序为例进行说明: 如下图所示,首先添加一个“启保停”FC块,定义块的接口变量,并编写梯形图程序, 如下图所示,在PLC数据类型中添加一个motorControl数据类型,其中包含start、stop…

Python replace()函数使用详解,Python替换字符串

「作者主页」&#xff1a;士别三日wyx 「作者简介」&#xff1a;CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」&#xff1a;小白零基础《Python入门到精通》 replace函数使用详解 1、不改变原字符串2、指定替换次数3、转义符4、替换列表、元…

opencv 基础图像操作-彩色图像

opencv 基础图像操作-彩色图像 彩色图像 相比二值图像和灰度图像&#xff0c;彩色图像是更常见的一类图像&#xff0c;它能表现更丰富的细节信息。 神经生理学实验发现&#xff0c;在视网膜上存在三种不同的颜色感受器&#xff0c;能够感受三种不同的颜色&#xff1a;红色、绿色…

边缘计算在智慧校园应用,实现校园智能化管理

随着科技的发展和互联网技术进步&#xff0c;校园管理正逐步实现数字化、智能化转型。边缘计算作为一种新兴技术&#xff0c;通过在离数据源较近的地方进行数据处理&#xff0c;实现了实时性分析与响应&#xff0c;为校园带来了更智能、安全的管理方式。 学生学习状态监控 AI动…

LCD1602屏幕简介(全网最详细教程)

目录 1.接线说明 2.LCD1602显示原理 3.LCD1602时序分析 4.LCD1602显示一个字符 5.LCD1602显示一行 1.接线说明 第1引脚&#xff1a;GND为电源地 第2引脚&#xff1a;VCC接5V电源正极 第3引脚&#xff1a;V0为液晶显示器对比度调整端&#xff0c;接正电源时对比度最弱&…

关于海外的Apple搜索广告

随着Apple平台成为大多数应用的服务支柱&#xff0c;我们需要比以往任何时候都更加关注iOS搜索广告&#xff0c;从而成功与用户建立联系。Apple Search Ads能够通过搜索为我们的应用带来流量&#xff0c;让用户在App Store中输入相关关键词时能够高效、简单地发现应用。 Apple …

超详细的学习笔记:CSS浮动(附代码示例)

笔记参考b站网课&#xff1a;【前端开发入门教程&#xff0c;web前端零基础html5 css3前端项目视频教程】https://www.bilibili.com/video/BV1Kg411T7t9?p124&vd_source06e5549bf018e111f4275c259292d0da 目录 一、结构伪类选择器 二、伪元素 三、标准流 四、浮动 1、…

WEB APIs day3 (1)

一、表单全选反选案例 <!DOCTYPE html><html><head lang"en"><meta charset"UTF-8"><title>全选反选案例</title><style>* {margin: 0;padding: 0;}table {border-collapse: collapse;border-spacing: 0;border…

【ROS2】仿真入门

一、说明 在机器人项目中,仿真是一个具有多种用途的重要方面。首先,您可以测试希望机器人执行的行为代码。其次,您可以使用仿真来测试不同类型的硬件,例如距离传感器、相机或 3D 点云传感器,看看哪种效果最好。第三,可视化模拟的相同软件可以与真正的机器人实时使用,在机…

基于51单片机和proteus的智能垃圾桶系统

此系统是基于51单片机和proteus的仿真设计&#xff0c;功能如下&#xff1a; 1. LCD1602实时显示系统状态。 2. 超声波测距模拟检测人体靠近垃圾桶 3. 舵机模拟开启或关闭垃圾桶桶盖。 4. 垃圾桶满溢后报警指示。 5. LED指示人体状态满溢状态及系统状态。 功能框图如下&am…

BTP Integration Suite学习笔记 - (Unit2) Developing with SAP Integration Suite

BTP Integration Suite学习笔记 - (Unit1) Developing with SAP Integration Suite 这章内容比较大而空 Unit2 iPaaS介绍 2.1 SAP的集成策略 这张图应该不陌生&#xff0c;很多地方都可以看到&#xff0c;SAP对于智能企业的集成策略。它有四个原则&#xff1a; Predefined in…

剑指 offer 动态规划算法题:斐波那契数列(青蛙普通跳台阶)

题目描述&#xff1a;写一个函数&#xff0c;输入 n &#xff0c;求斐波那契&#xff08;Fibonacci&#xff09;数列的第 n 项&#xff08;即 F(N)&#xff09;。斐波那契数列的定义如下&#xff1a;F(0) 0, F(1) 1&#xff0c;F(N) F(N - 1) F(N - 2), 其中 N > 1.斐…

wordpress 导航栏 调用

环境&#xff1a;wordpress6、twentytwentyone模板 一、wp-content/themes/twentytwentyone/functions.php 添加以下代码&#xff1a; 1、注册 (左边是别名&#xff0c;右边是名称。别名会用在导航栏的调用上&#xff0c;名称则显示在菜单后台页面上&#xff1a;外观->菜单…

解密Sketch文件打开秘籍:简单两步操作!

虽然Figma&#xff0c;sketch,xd都很好用&#xff0c;但是设计师在设计工作流中经常会遇到无法在这三者软件中自由导入导出的情况。但是只要我们转变一下思路&#xff0c;因为这三种软件都支持导入sketch格式,所以我们只要将文件格式转成sketch&#xff0c;就能自由的在不同软件…

Visual Studio 新功能:Include 语句清理

Visual Studio 17.7 预览版 3 引入了一项新功能&#xff0c;用来提升开发者的生产力。我们很高兴地宣布这项新功能&#xff1a;Include 语句清理&#xff0c;这是一个帮助你维护干净代码的工具。如需使用此功能&#xff0c;请确保更新到最新版本的 Visual Studio 预览版。 Inc…

macOS 14 Sonama - 小记

文章目录 Sonoma 官方资讯关于 Sonama 命名关于 壁纸Sonoma 官方资讯 macOS Sonoma Preview https://www.apple.com/hk/en/macos/sonoma-preview/官方视频介绍 Apple Events --> Watch the Keynote --> 00:43:13 (约14min) https://www.apple.com/hk/en/apple-events/mac…

WEB APIs day3 (2)

3.其它事件 页面加载事件 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthde…

Mac环境下安装nginx并本地部署项目

1、前提 必须安装了homebrew&#xff0c;可在终端输入命令brew -v查看是否已经安装&#xff0c;如果输入指令出现版本号说明已经安装成功 如果未安装先安装&#xff08;homebrew官网地址&#xff09; /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/H…