教程

常见问题解答

  1. Oracle数据库与SuperMap iDesktop连接不上,如何解决?

    答:出现上述情况,请在Oracle中创建并使用新的数据库。具体步骤如下:

    (1)在iManager页面点击数据库->Oracle->名称(您的数据库名称)->oracle->命令行进入Oracle命令行;

    (2)在目录 u01/app/oracle/oradata 下创建“supermapshapefile”文件夹,执行(如果您已有文件夹,请跳过该步骤):

    mkdir -p /u01/app/oracle/oradata/supermapshapefile

    (3)赋予数据库权限,执行:

    chown oracle /u01/app/oracle/oradata/supermapshapefile

    (4)进入Oracle,执行:

    sqlplus / as sysdba

    (5)输入Oracle用户密码,用户密码请在iManager页面点击数据库->Oracle->名称(您的数据库名称)->账户查看;

    (6)创建空间表,大小为200M(可根据实际情况设置),执行:

    create tablespace supermaptbs datafile '/u01/app/oracle/oradata/supermapshapefile/data.dbf' size 200M;

    (7)创建数据库新用户,账号:supermapuser(可自由设置),密码:supermap123(可自由设置),执行:

    create user supermapuser identified by supermap123 default tablespace supermaptbs;

    (8)给新用户赋予权限,执行:

    grant connect,resource to supermapuser;
    grant dba to supermapuser;
  2. 在重新部署/调整规格后,又立马进行重新部署/调整规格操作,导致分配许可失败,如何解决?

    答:在重新部署/调整规格后,请确保本次操作对应的容器在许可中心中分配许可成功后,再进行下一次的重新部署/调整规格操作。

  3. 查看实时监控统计图时,图表中没有数据或数据生成的时间与实际时间不符,如何解决?

    答:查看实时监控统计图时,请确保您的本地机器与Kubernetes节点机器设置的时间一致。

  4. 如何使用https协议?

    答:iManager中支持Keycloak与iManager使用https服务协议,请执行以下步骤:

    (1)进入iManager安装目录(即执行iManager启动命令的目录)并找到values.yml文件,在当前目录下输入命令打开配置:

    sudo vi values.yml

    (2)若Keycloak需使用https服务协议,将变量“deploy_keycloak_service_protocol”的值改为“https”;若iManager需使用https服务协议,将变量“deploy_imanager_service_protocol”的值改为“https”(iManager使用https协议时,Keycloak必须为https协议)。

    (3)保存设置,并重启iManager:

    sudo ./startup.sh
  5. 如何替换iManager for K8s自带的安全证书?

    答:iManager for K8s的安全证书有两种,一种是安全中心(Keycloak)使用的安全证书,另一种是访问入口域名使用的安全证书。请参照以下步骤替换两种证书:

    替换安全中心(Keycloak)的安全证书

    (1)在安装Kubernetes Master节点机器中执行以下命令,找到安全证书挂载目录(下面命令中的<namespace>为iManager所在的命名空间,默认为supermap。如有改动,请替换为您的命名空间名称):

    kubectl -n <namespace> describe pvc pvc-keycloak | grep Volume: | awk -F ' ' '{print $2}' | xargs kubectl describe pv

    (2)将您的安全证书文件存放至步骤(1)查到的挂载目录中;

    注意:
    安全证书文件包括证书和私钥,需要将证书文件重命名为tls.crt,将私钥文件重命名为tsl.key。

    (3)登录iManager,在基础服务中找到Keycloak服务并重新部署。

    替换访问入口的安全证书

    (1)在安装Kubernetes Master节点机器中执行以下命令,找到安全证书挂载目录(下面命令中的<namespace>为iManager所在的命令空间,默认为supermap。如有改动,请替换为您的命名空间名称):

    kubectl -n <namespace> describe pvc pvc-imanager-dashboard-ui | grep Volume: | awk -F ' ' '{print $2}' | xargs kubectl describe pv

    (2)将您的安全证书文件存放至步骤(1)查到的挂载目录中;

    注意:
    安全证书文件包括证书和私钥,需要将证书文件重命名为certificate.crt,将私钥文件重命名为private.key。

    (3)登录iManager,在基础服务中找到imanager-dashboard-ui服务并重新部署。

  6. 配置镜像拉取Secret时,如何在命名空间下创建与Secret同名资源?

    答:配置镜像拉取Secret时,需在Kubernetes中iManager所在命名空间创建与Secret同名的资源。如果开启服务网格(Istio),需在istio-system命名空间下创建Secret同名资源。如果开启metrics server服务,需在kube-system命名空间下创建Secret同名资源。请在Kubernetes Master机器中,输入如下命令创建Secret同名资源:

    kubectl create secret docker-registry <image-pull-secret> --docker-server=<"172.16.17.11:5002"> --docker-username=<admin> --docker-password=<adminpassword> -n <supermap>

    注意:

    1. 输入的内容中,带有尖括号”<>“的需根据您的实际环境替换(替换后去掉尖括号)。 <image-pull-secret>为您的Secret名称; <"172.16.17.11:5002">为您的镜像仓库地址; <admin>为镜像仓库用户名; <adminpassword>为镜像仓库密码; <supermap>为iManager所在命名空间(在istio-system或kube-system下创建Secret同名资源时,<supermap>替换为“istio-system”或“kube-system”)。
    2. 如果命名空间istio-system不存在,在Kubernetes Master节点机器输入“kubectl create ns istio-system”命令进行创建。
  7. 修改iManager的配置文件values.yaml后,重启iManager出现报错“Error: UPGRADE FAILED: cannot patch “pv-nfs-grafana” with kind StorageClass: StorageClass.storage.k8s.io “pv-nfs-grafana” is invalid …”, 怎么办?

    答:该错误产生的原因是K8s patch操作不支持对存储类的提供者进行更新。此报错不影响产品正常使用,可忽略。

  8. Kubernetes证书到期了,如何更新?

    答:Kubernetes证书有效期为1年,过期后需更新证书。请参照以下步骤更新Kubernetes证书:

    (1)在安装Kubernetes的Master节点机器,进入etc目录,备份Kubernetes原始文件:

    cd /etc
    cp -r kubernetes kubernetes.bak

    (2)新建配置文件kubeadm.yaml:

    vi kubeadm.yaml

    (3)配置kubeadm.yaml(下面命令中的“10.10.129.29”为Kubernetes Master节点IP,请根据您的实际环境替换):

    kind: MasterConfiguration
    apiVersion: kubeadm.k8s.io/v1beta1
    kubernetesVersion: v1.14.0
    api:
     advertiseAddress: 10.10.129.29

    (4)使用配置文件重新签发证书:

    kubeadm init phase certs all --config=kubeadm.yaml

    (5)重新生成配置文件:

    kubeadm init phase kubeconfig all --config kubeadm.yaml

    (6)重启kube-apiserver、kube-controller-manager、kube-scheduler、etcd四个容器,使证书生效:

    docker ps |grep -E 'k8s_kube-apiserver|k8s_kube-controller-manager|k8s_kube-scheduler|k8s_etcd_etcd' | awk -F ' ' '{print $1}' |xargs docker restart

    (7)查看证书是否生效:

    openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -text |grep ' Not '

    (8)查看Work节点的工作状态(使用kubectl get nodes命令),如果Work节点的状态为‘NotReady’,执行以下命令重新生成Work节点的配置文件:

    mv /var/lib/kubelet/pki /var/lib/kubelet/pki.bak
    systemctl daemon-reload && systemctl restart kubelet

    (9)再次查看Work节点的工作状态,如果Work节点的状态仍然为‘NotReady’,把Master节点的/etc/kubernetes/pki/ca.crt文件复制到相应Work节点的相同目录下,并再次重启kubelet(使用systemctl restart kubelet命令重启kubelet,重启后需等待三分钟)。

  9. 内置HBase环境如何使用本地存储?

    答:经测试,挂载NFS会影响Hbase的读写性能,可以通过以下方式进行优化:

    (1)修改配置(values.yaml)文件中deploy_disable_hbase_nfs_volume的值为true

    deploy_disable_hbase_nfs_volume: true

    (2)根据编排创建PV:参考 hbase-datanode-local-volume.yaml 文件,根据实际情况进行修改:

    apiVersion: v1
    kind: PersistentVolume
    metadata:
     labels:
       type: icloud-native
     name: icloud-native-hbase-datanode-volume-0  #修改点1
    spec:
     storageClassName: local-volume-storage-class
     capacity:
       storage: 10Ti
     accessModes:
       - ReadWriteMany
     local:
       path: /opt/imanager-data/datanode-data  #修改点2
     persistentVolumeReclaimPolicy: Delete
     nodeAffinity:
       required:
         nodeSelectorTerms:
           - matchExpressions:
             - key: kubernetes.io/hostname
               operator: In
               values:
                 - node1   # 修改点3

    需要修改的内容涉及上图中标记处的3个地方:

    • 修改点1:这里指定PV的名称,只要不重复即可。
    • 修改点2:这里是实际要存储HBase数据的路径,要提前创建好目录。如果想在一个节点上创建多个PV请修改成不同的目录,并提前创建好目录。

    使用以下命令在对应节点上创建目录(路径换成自己设置的具体地址):

    mkdir -p /opt/imanager-data/datanode-data
    • 修改点3:这里填写Kubernetes的节点名称(前提是相应的节点能参与调度)

    (3)修改后通过编排创建PV(在Kubernetes master节点执行以下命令):

    kubectl apply -f hbase-datanode-local-volume.yaml

    备注:

    1. HBase环境中的dataNode有几个副本就要创建几个PV,默认需要3个;如果自己伸缩了,请创建对应数目的PV;
    2. PV可以创建在任意Kubernetes节点上(通过修改点3指定),推荐均匀分布在不同的节点上;
    3. PV既可以在开启/伸缩HBase之前创建,也可以在开启/伸缩HBase之后创建。