鲲鹏云k8s环境下PostGIS安装部署

1、镜像选取
鲲鹏服务器的芯片为arm64/armv8架构,所以需要选择支持arm64架构的postgis镜像来安装。docker仓库中已经有可选的镜像,所以不用再从新基于arm64架构通过源码编译制作该镜像。

镜像版本:nickblah/postgis:14-postgis-3
2、yaml编写

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  annotations:
    deployment.kubernetes.io/revision: "1"
  generation: 1
  labels:
    app: postgis-server
  name: postgis-server
spec:
  progressDeadlineSeconds: 600
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app: postgis-server
  strategy:
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 1
    type: RollingUpdate
  template:
    metadata:
      labels:
        app: postgis-server
    spec:
      containers:
      - env:
        - name: POSTGRES_USER
          value: fpi
        - name: POSTGRES_PASSWORD
          value: 123456
        - name: POSTGRES_DB
          value: gis
        - name: ALLOW_IP_RANGE
          value: 0.0.0.0/0
        - name: PGDATA
          value: /var/lib/postgresql/data
        - name: TZ
          value: Asia/Shanghai
        image: nickblah/postgis:14-postgis-3
        imagePullPolicy: IfNotPresent
        name: postgis-server
        ports:
        - containerPort: 5432
          name: postgis
          protocol: TCP
        resources:
          limits:
            memory: 2Gi
          requests:
            cpu: 100m
            memory: 500Mi
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
        volumeMounts:
        - mountPath: /var/lib/postgresql/data
          name: data
          subPath: postgresql/data
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 30
      nodeName: 192.168.0.44 #固定到k8s节点,方便客户端访问
      volumes:
      - name: data #创建存储卷将数据保存到NAS存储,避免pod重建后数据丢失
        persistentVolumeClaim:
          claimName: test-default 
 
---
apiVersion: v1
kind: Service
metadata:
  labels:
    app: postgis-server
  name: postgis-server
spec:
  ports:
  - name: postgis
    port: 15432
    protocol: TCP
    nodePort: 30432
    targetPort: postgis
  selector:
    app: postgis-server
  sessionAffinity: None
  type: NodePort

3、安装扩展
postgis镜像部署好以后,并不会给创建的postgresql数据库添加postgis扩展。需要连接到数据库后再sql命令窗口执行添加扩展的sql指令。

postgis需要的指令如下:

部分SQL语句创建及查询
  
--给PostGIS添加扩展及扩展解释
CREATE EXTENSION postgis; --postgis的基本核心功能,仅支持地理图形(矢量要素),在其他Extension前启用
CREATE EXTENSION postgis_raster; --对栅格数据的支持
CREATE EXTENSION postgis_topology; --拓扑功能的支持
CREATE EXTENSION postgis_sfcgal; --这个Extension主要是集成了CGAL(Computational Geometry Algorithms Library,计算几何算法库),来进行三维空间数据的空间运算,例如:ST_3DDifference、ST_3DUnion 等,可见是通常空间运算在三维空间上的拓展
CREATE EXTENSION address_standardizer_data_us;
CREATE EXTENSION address_standardizer;
CREATE EXTENSION fuzzystrmatch;
CREATE EXTENSION postgis_tiger_geocoder; --TIGER指的是(拓扑集成地理编码和参考),这个是美国人口普查局的GIS数据,提供了美国全国的行政区划、交通道路、水系等空间数据。这个Extension提供了TIGER数据的地理编码支持,需要注意的是这个Extension启用前,需要先启用fuzzystrmatch(字符串模糊查询)Extension,以及可选的address_standardizer(TIGER数据地址规则化)address_standardizer_data_us(地址规则化示例数据集)Extension
  
-- --二维空间数据创建
-- -- 创建含有单点的几何表
-- CREATE TABLE point (name varchar, geom geometry);
-- INSERT INTO point VALUES ('Point', 'POINT(0 0)');
  
-- -- 创建含有单线的几何表
-- CREATE TABLE line (name varchar, geom geometry);
-- INSERT INTO line VALUES ('road', 'LINESTRING(0 0, 1 1, 2 1, 2 2)');
  
-- -- 创建含有单面的几何表
-- CREATE TABLE polygon (name varchar, geom geometry);
-- INSERT INTO polygon VALUES ('boundary', 'POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))');
  
-- --三维空间数据创建
-- -- 创建含有三棱柱的表
-- CREATE TABLE triangularPyramid (name varchar, geom geometry);
-- INSERT INTO triangularPyramid (name, geom) VALUES ('beam', ST_Extrude(ST_GeomFromText('POLYGON((0 0,1 3,2 0, 0 0))'),0,0,10));
  
-- -- 创建含有立方体的表
-- CREATE TABLE cubeBox (name varchar, geom geometry);
-- INSERT INTO cubeBox (name, geom) VALUES ('box', ST_Extrude(ST_GeomFromText('POLYGON((0 0,2 0,2 2,0 2,0 0))'),0,0,2));
  
-- --查询预览
-- -- 查询含有三棱柱的表
-- SELECT name, ST_AsText(geom) AS ewkt FROM triangularPyramid;
-- -- 查询含有立方体的表
-- SELECT name, ST_AsText(geom) AS ewkt FROM cubeBox;
-- -- 查看三棱柱的X3D格式文本
-- SELECT ST_AsX3D(geom) AS x3d FROM triangularPyramid;
-- -- 查看立方体的X3D格式文本
-- SELECT ST_AsX3D(geom) AS x3d FROM cubeBox

你可能感兴趣的:(鲲鹏云k8s环境下PostGIS安装部署)