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

这篇具有很好参考价值的文章主要介绍了iManager for K8S 站点定制(以MongoDB为例)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

作者:ls

背景

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

前期准备

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

实现效果

  在iManager中成功部署MongoDB站点后,便可对其进行快捷的管理与监控,包括:调整规格、重新部署、修改进行、指定主机和编辑编排内容等管理操作,以及CPU使用率、内存使用量、网络接收速率、网络传输速率和硬盘使用量等监控功能。
iManager for K8S 站点定制(以MongoDB为例),云GIS,kubernetes,iManager,站点定制

实现过程

【定制文件制作】

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. 选择组名,如下图所示。
iManager for K8S 站点定制(以MongoDB为例),云GIS,kubernetes,iManager,站点定制
4.点击确认,完成站点添加。
5.绑定NFS。点击左侧导航栏存储管理->NFS->绑定,选择您创建的站点组进行绑定。

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

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

附录

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中的属性:

名称 描述
storageClassName storageClass名称,固定为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文件中使用以下占位符,在应用创建过程中会被真实值替换:文章来源地址https://www.toymoban.com/news/detail-596315.html

名称 描述
${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文件中配置命名空间时,勿写入固定值,请使用上表中的占位符。

到了这里,关于iManager for K8S 站点定制(以MongoDB为例)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • K8s的Pod出现Init:ImagePullBackOff问题的解决(以calico为例)

    对于这类问题的解决思路应该都差不多,本文以calico插件安装为例,发现有个Pod的镜像没有pull成功 从上图发现是docker拉取\\\"calico/cni:v3.15.1\\\"失败,那么我们手动拉取一下 Note :我们需要知道这个pod是部署在哪个node上,然后才能在具体的Node上拉取镜像 发现是在k8snode1主机上,那

    2024年02月11日
    浏览(38)
  • ChaosBlade for k8s

    1.1.1 环境准备 1.1.2 安装kubernetes所有虚机的配置 集群中所有主机设置主机名,并添加到/etc/hosts里 关闭swap 关闭防火墙 关闭Selinux 配置NTP时间同步服务 添加网桥过滤和地址转发功能 配置ipvs功能 下载k8s 安装并配置containerd容器 1.1.3 只在master虚机的配置 初始化k8s 设定kubeletl网络

    2024年04月14日
    浏览(56)
  • 在k8s 中部署有状态服务MongoDB高可用集群详解(附带镜像)

    🐇明明跟你说过:个人主页 🏅个人专栏:《Kubernetes航线图:从船长到K8s掌舵者》 🏅 🔖行路有良友,便是天堂🔖 目录 一、前言  1、k8s简介 2、MongoDB介绍 3、为什么要使用MongoDB  4、Mongodb高可用方案  二、环境准备 1、k8s集群搭建 2、MongoDB镜像准备 3、NFS存储准备 4、PV准

    2024年04月16日
    浏览(21)
  • k8s部署mongodb-sharded7.X集群(多副本集)

    默认副本数较多。我修改为3+3 搜索replicaCount 修改 最后安装 再分享一个web客户端

    2024年02月03日
    浏览(28)
  • 微服务探索之路06篇k8s配置文件Yaml部署Redis使用Helm部署MongoDB和kafka

    1.1创建配置文件redis.conf 切换到自己的目录下如本文是放在/home/ubuntu下 cd /home/ubuntu vim redis.conf 1.2创建deployment配置文件 vim redis.yaml 1.创建k8sConfig Maps配置文件 kubectl create cm redis-conf --from-file=redis.conf 2.部署redis Deployments kubectl create -f redis.yaml 3.将资源公开一个新的服务service`kube

    2024年02月16日
    浏览(30)
  • k8s删除pod镜像没响应marking for deletion pod TaintManagerEviction

    1、将master的admin.conf 文件拷贝到 node节点 2、配置环境变量 3、测试 Pod的状态为\\\"Marking for deletion\\\"表示该Pod正在被标记为待删除状态,但实际上并没有被删除。这可能是因为以下原因之一: 删除操作被阻塞:可能是由于某些资源或容器正在使用该Pod,导致删除操作被阻塞。您可

    2024年02月11日
    浏览(39)
  • k8s安装recognize “calico.yaml“: no matches for kind “PodDisruptionBudget“ in version “policy/v1“

    报错内容 calico版本 与 k8s版本不匹配 查看k8s的版本 kubectl version   查看k8s对应的calico的版本 https://projectcalico.docs.tigera.io/archive/v3.20/getting-started/kubernetes/requirements  查看需要v3.2.0的版本的calico 重新下载正确版本calico 再执行 kubectl apply -f calico.yaml 可以看到以下效果,代表成功了

    2024年02月12日
    浏览(38)
  • k8s搭建集群报错failed to set up sandbox container “xxx“ network for pod “coredns-xxx“:networkPlugin cni fa

    今天在搭建k8s集群时发现coredns一直处于containerCreating状态,如下图所示: 到相应的node节点上查看日志去排查问题: kubectl describe pods -n kube-system coredns-66bff467f8-n7q8f 发现报错的日志如下图: 我的是因为之前部署的时候选择了calico网络插件,这次启动选的是flannel,导致node节点上

    2024年02月16日
    浏览(28)
  • k8s 安装 kubernetes安装教程 虚拟机安装k8s centos7安装k8s kuberadmin安装k8s k8s工具安装 k8s安装前配置参数

    k8s采用master, node1, node2 。三台虚拟机安装的一主两从,机器已提前安装好docker。下面是机器配置,k8s安装过程,以及出现的问题与解决方法   虚拟机全部采用静态ip, master 30机器, node1 31机器, node2 32机器                                        机器ip 192.168.

    2024年02月11日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包