问题描述
我正在尝试使用k8s安装超集,其中Postgresql作为后端数据库,而Redis作为缓存层。
Superset已启动并正在运行,但是当我尝试运行SQL查询时,出现以下错误
列dbs.server_cert在字符814处不存在
下面是我的配置文件和头盔模板。感谢您的任何帮助,谢谢!
# Source: superset/templates/secret.yaml
apiVersion: v1
kind: Secret
Metadata:
name: superset
labels:
app: superset
chart: superset-1.1.11
release: superset
heritage: Helm
namespace: test
type: Opaque
data:
superset_config.py: "attached seperately"
---
# Source: superset/templates/svc.yaml
apiVersion: v1
kind: Service
Metadata:
name: superset
labels:
app: superset
chart: superset-1.1.11
release: superset
heritage: Helm
namespace: test
spec:
type: ClusterIP
ports:
- name: http
port: 9000
targetPort: 8088
protocol: TCP
selector:
app: superset
release: superset
---
# Source: superset/templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
Metadata:
name: superset
labels:
app: superset
chart: superset-1.1.11
release: superset
heritage: Helm
namespace: test
spec:
replicas: 1
selector:
matchLabels:
app: superset
release: superset
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
Metadata:
name: superset
labels:
app: superset
chart: superset-1.1.11
release: superset
heritage: Helm
annotations:
checksum/secrets: 6dd9c87c415d8a5a00981f36d8dca6ad69a2fdeae29d0caa3a02633be4acff07
spec:
securityContext:
runAsUser: 1000
fsGroup: 1000
volumes:
- name: superset-configs
secret:
secretName: superset
- name: storage-volume
persistentVolumeClaim:
claimName: superset-storage
containers:
- env:
- name: PYTHONPATH
value: "${PYTHONPATH}:/home/superset/superset/"
image: amancevice/superset:0.36.0
name: superset
volumeMounts:
- name: superset-configs
mountPath: /home/superset/superset
- name: storage-volume
mountPath: /var/lib/superset
ports:
- name: http
containerPort: 8088
protocol: TCP
livenessProbe:
failureThreshold: 2
httpGet:
path: /health
port: http
initialDelaySeconds: 80
periodSeconds: 10
timeoutSeconds: 5
readinessProbe:
failureThreshold: 2
httpGet:
path: /health
port: http
initialDelaySeconds: 30
periodSeconds: 10
timeoutSeconds: 5
---
#PVC
apiVersion: v1
kind: PersistentVolumeClaim
Metadata:
name: superset-storage
namespace: test
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
超级集配置文件
import os
def get_env_variable(var_name,default=None):
"""Get the environment variable or raise exception.
Args:
var_name (str): the name of the environment variable to look up
default (str): the default value if no env is found
"""
try:
return os.environ[var_name]
except KeyError:
if default is not None:
return default
raise RuntimeError(
'The environment variable {} was missing,abort...'
.format(var_name)
)
# Postgres
POSTGRES_USER = '**'
POSTGRES_PASSWORD = '**'
POSTGRES_HOST = '**'
POSTGRES_PORT = '**'
POSTGRES_DB = '**'
sqlALCHEMY_DATABASE_URI = 'postgresql://{0}:{1}@{2}:{3}/{4}'.format(
POSTGRES_USER,POSTGRES_PASSWORD,POSTGRES_HOST,POSTGRES_PORT,POSTGRES_DB,)
# Redis
REdis_HOST = '**'
REdis_PORT = '**'
# Celery
class CeleryConfig:
broKER_URL = 'redis://{0}:{1}/0'.format(REdis_HOST,REdis_PORT)
CELERY_IMPORTS = ('superset.sql_lab',)
CELERY_RESULT_BACKEND = 'redis://{0}:{1}/1'.format(REdis_HOST,REdis_PORT)
CELERY_ANNOTATIONS = {'tasks.add': {'rate_limit': '10/s'}}
CELERY_TASK_PROTOCOL = 1
CELERY_CONfig = CeleryConfig
FLASK_APP=superset
sqlalchemy.exc.ProgrammingError: (psycopg2.ProgrammingError) column dbs.server_cert does not exist
LINE 1: ...rm,dbs.impersonate_user AS dbs_impersonate_user,dbs.server...
^
[sql: SELECT dbs.created_on AS dbs_created_on,dbs.changed_on AS dbs_changed_on,dbs.id AS dbs_id,dbs.verbose_name AS dbs_verbose_name,dbs.database_name AS dbs_database_name,dbs.sqlalchemy_uri AS dbs_sqlalchemy_uri,dbs.password AS dbs_password,dbs.cache_timeout AS dbs_cache_timeout,dbs.select_as_create_table_as AS dbs_select_as_create_table_as,dbs.expose_in_sqllab AS dbs_expose_in_sqllab,dbs.allow_run_async AS dbs_allow_run_async,dbs.allow_csv_upload AS dbs_allow_csv_upload,dbs.allow_ctas AS dbs_allow_ctas,dbs.allow_dml AS dbs_allow_dml,dbs.force_ctas_schema AS dbs_force_ctas_schema,dbs.allow_multi_schema_Metadata_fetch AS dbs_allow_multi_schema_Metadata_fetch,dbs.extra AS dbs_extra,dbs.encrypted_extra AS dbs_encrypted_extra,dbs.perm AS dbs_perm,dbs.server_cert AS dbs_server_cert,dbs.created_by_fk AS dbs_created_by_fk,dbs.changed_by_fk AS dbs_changed_by_fk
FROM dbs ORDER BY dbs.changed_on DESC
LIMIT %(param_1)s]
应用此配置后,我在pod中执行了exec并运行了以下命令:
解决方法
似乎迁移未成功完成。尝试在超集容器内执行以下操作
superset db upgrade
以执行迁移。
尽管如此,您不必手动在容器中执行命令即可使其工作。超集helm chart接受一个initFile
作为实现此目标的值,而不必手动执行到容器中。