kubesphere升级到3.1.1版本之后,之前在项目下安装的应用现在看不到了。
启用多集群功能后,项目中已部署的应用列表不再显示。
FeynmanK零SK贰SK壹S
- 已编辑
wmwm061061 你确定是在同一个 workspace 下的同一个项目中看的吗?后台 kubectl get ns –all-namespaces 检查一下?
- 已编辑
Feynman 是的,我这里只有3个项目,其中两个项目是正在使用的,这两个项目里面都无法看到之前部署的应用。但是之前应用部署的那些pod还是正常运行的,只是在管理界面看不到应用。
- 另外升级之后openpitrix-system名称空间现在也没有了, 还有这个名称空间下的 openpitrix-hyperpitrix-deployment 也没有了。
- 另外我现在在这个kubesphere上面添加了另外一个GKE集群,不知道是否是多集群的原因?
FeynmanK零SK贰SK壹S
wmwm061061 1. 3.1.1 已经没有 openpitrix-system 这个单独的 ns 了,合并到了 ks-apiserver 里。2. 跟多集群没有关系。你先用我说的命令检查一下那几个项目 namespace 在后台是否还存在。
Feynman 使用这个命令看了,项目对应的ns都还在的,之前部署的那些应用对应pod也都在正常运行。
FeynmanK零SK贰SK壹S
wmwm061061 那你把这些项目手动分配到对应的 workspace 下就行了 https://kubesphere.com.cn/docs/faq/access-control/add-kubernetes-namespace-to-kubesphere-workspace/
- 已编辑
我之前使用的ns,都不是使用kubectl create namespace命令创建的,而是直接在浏览器管理界面上的企业空间创建的项目。
我现在可以正常看到企业空间下的项目,包括项目下的服务、工作负载、任务、应用路由、容器组,存储等等,唯独“应用”这个选项下无任何内容。
我之前在项目下创建了redis、rabbitmq、kafka、mysql等应用现在都看不到了
kevendengK零S
wmwm061061
在KubeSphere由v3.0升级到v3.1时,会将已有的应用数据迁移到新的格式中,此操作由一个job pod执行,你可查看该pod日志,检查其是否正常运行结束
kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l component=openpitrix-upgrade-job -o name)
在v3.1中,部署的应用由helmrelease CR对象表示,你可检查其是否存在:
kubectl get helmreleases
若release都存在,只是workspace与namespace不正确,可手动修改,即可在项目页面中展示。
- 已编辑
kevendeng
1、 kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l component=openpitrix-upgrade-job -o name)
这个命令执行报错,component=openpitrix-upgrade-job 这个标签我这里找不到。我这里是这个 component=openpitrix-import-job
执行完命令之后,输出以下信息
$ kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l component=openpitrix-import-job -o name)
I0817 11:05:15.915258 1 dumpconfig.go:22] configmap: authentication:
authenticateRateLimiterMaxTries: 10
authenticateRateLimiterDuration: 10m0s
loginHistoryRetentionPeriod: 168h
maximumClockSkew: 10s
multipleLogin: False
kubectlImage: kubesphere/kubectl:v1.18.0
jwtSecret: "****************"
ldap:
host: openldap.kubesphere-system.svc:389
managerDN: cn=admin,dc=kubesphere,dc=io
managerPassword: ******************
userSearchBase: ou=Users,dc=kubesphere,dc=io
groupSearchBase: ou=Groups,dc=kubesphere,dc=io
redis:
host: redis.kubesphere-system.svc
port: 6379
password: ""
db: 0
s3:
endpoint: http://minio.kubesphere-system.svc:9000
region: us-east-1
disableSSL: True
forcePathStyle: True
accessKeyID: ************
secretAccessKey: ****************
bucket: **********
network:
ippoolType: none
devops:
host: http://ks-jenkins.kubesphere-devops-system.svc/
username: admin
password: ********************
maxConnections: 100
openpitrix:
s3:
endpoint: http://minio.kubesphere-system.svc:9000
region: us-east-1
disableSSL: True
forcePathStyle: True
accessKeyID: ******************
secretAccessKey: ****************
bucket: app-store
monitoring:
endpoint: http://prometheus-operated.kubesphere-monitoring-system.svc:9090
logging:
host: http://elasticsearch.kubesphere-logging-system.svc.cluster.local:9200
indexPrefix: ks-logstash-log
W0817 11:05:15.916224 1 client_config.go:552] Neither --kubeconfig nor --master was specified. Using the inClusterConfig. This might not work.
I0817 11:05:15.920830 1 import.go:163] start to create app, chart name: apisix, version: 0.1.7
I0817 11:05:15.935448 1 import.go:176] helm application exists, name: apisix, version: 0.1.7
I0817 11:05:15.943249 1 import.go:248] start to create app version, chart name: apisix, version: 0.1.7
I0817 11:05:15.951316 1 import.go:265] helm application version exists, name: apisix, version: 0.1.7
I0817 11:05:15.952862 1 import.go:163] start to create app, chart name: elasticsearch-exporter, version: 3.3.3
I0817 11:05:15.962680 1 import.go:176] helm application exists, name: elasticsearch-exporter, version: 3.3.3
I0817 11:05:15.968032 1 import.go:248] start to create app version, chart name: elasticsearch-exporter, version: 3.3.3
I0817 11:05:15.974375 1 import.go:265] helm application version exists, name: elasticsearch-exporter, version: 3.3.3
I0817 11:05:15.975153 1 import.go:163] start to create app, chart name: etcd, version: 0.1.3
I0817 11:05:15.983965 1 import.go:176] helm application exists, name: etcd, version: 0.1.3
I0817 11:05:15.986288 1 import.go:248] start to create app version, chart name: etcd, version: 0.1.3
I0817 11:05:15.993135 1 import.go:265] helm application version exists, name: etcd, version: 0.1.3
I0817 11:05:16.000161 1 import.go:163] start to create app, chart name: harbor, version: 1.4.1
I0817 11:05:16.009126 1 import.go:176] helm application exists, name: harbor, version: 1.4.1
I0817 11:05:16.128821 1 import.go:248] start to create app version, chart name: harbor, version: 1.4.1
I0817 11:05:16.327854 1 import.go:265] helm application version exists, name: harbor, version: 1.4.1
I0817 11:05:16.328935 1 import.go:163] start to create app, chart name: memcached, version: 3.2.5
I0817 11:05:16.530525 1 import.go:176] helm application exists, name: memcached, version: 3.2.5
I0817 11:05:16.725069 1 import.go:248] start to create app version, chart name: memcached, version: 3.2.5
I0817 11:05:16.928136 1 import.go:265] helm application version exists, name: memcached, version: 3.2.5
I0817 11:05:16.931702 1 import.go:163] start to create app, chart name: minio, version: 6.0.5
I0817 11:05:17.129929 1 import.go:176] helm application exists, name: minio, version: 6.0.5
I0817 11:05:17.326450 1 import.go:248] start to create app version, chart name: minio, version: 6.0.5
I0817 11:05:17.528415 1 import.go:265] helm application version exists, name: minio, version: 6.0.5
I0817 11:05:17.529363 1 import.go:163] start to create app, chart name: mongodb, version: 0.3.2
I0817 11:05:17.730688 1 import.go:176] helm application exists, name: mongodb, version: 0.3.2
I0817 11:05:17.924722 1 import.go:248] start to create app version, chart name: mongodb, version: 0.3.2
I0817 11:05:18.127806 1 import.go:265] helm application version exists, name: mongodb, version: 0.3.2
I0817 11:05:18.129118 1 import.go:163] start to create app, chart name: mysql, version: 1.6.8
I0817 11:05:18.329761 1 import.go:176] helm application exists, name: mysql, version: 1.6.8
I0817 11:05:18.525503 1 import.go:248] start to create app version, chart name: mysql, version: 1.6.8
I0817 11:05:18.727580 1 import.go:265] helm application version exists, name: mysql, version: 1.6.8
I0817 11:05:18.729744 1 import.go:163] start to create app, chart name: mysql-exporter, version: 0.5.6
I0817 11:05:18.930170 1 import.go:176] helm application exists, name: mysql-exporter, version: 0.5.6
I0817 11:05:19.124942 1 import.go:248] start to create app version, chart name: mysql-exporter, version: 0.5.6
I0817 11:05:19.328055 1 import.go:265] helm application version exists, name: mysql-exporter, version: 0.5.6
I0817 11:05:19.329202 1 import.go:163] start to create app, chart name: nginx, version: 1.3.5
I0817 11:05:19.530190 1 import.go:176] helm application exists, name: nginx, version: 1.3.5
I0817 11:05:19.725616 1 import.go:248] start to create app version, chart name: nginx, version: 1.3.5
I0817 11:05:19.927725 1 import.go:265] helm application version exists, name: nginx, version: 1.3.5
I0817 11:05:19.928601 1 import.go:163] start to create app, chart name: postgresql, version: 0.4.2
I0817 11:05:20.130900 1 import.go:176] helm application exists, name: postgresql, version: 0.4.2
I0817 11:05:20.324928 1 import.go:248] start to create app version, chart name: postgresql, version: 0.4.2
I0817 11:05:20.528573 1 import.go:265] helm application version exists, name: postgresql, version: 0.4.2
I0817 11:05:20.529390 1 import.go:163] start to create app, chart name: rabbitmq, version: 0.3.2
I0817 11:05:20.731234 1 import.go:176] helm application exists, name: rabbitmq, version: 0.3.2
I0817 11:05:20.924464 1 import.go:248] start to create app version, chart name: rabbitmq, version: 0.3.2
I0817 11:05:21.127815 1 import.go:265] helm application version exists, name: rabbitmq, version: 0.3.2
I0817 11:05:21.130421 1 import.go:163] start to create app, chart name: radondb-mysql, version: 1.0.0
I0817 11:05:21.330610 1 import.go:176] helm application exists, name: radondb-mysql, version: 1.0.0
I0817 11:05:21.529355 1 import.go:248] start to create app version, chart name: radondb-mysql, version: 1.0.0
I0817 11:05:21.728154 1 import.go:265] helm application version exists, name: radondb-mysql, version: 1.0.0
I0817 11:05:21.732403 1 import.go:163] start to create app, chart name: radondb-postgresql, version: 1.0.1
I0817 11:05:21.931000 1 import.go:176] helm application exists, name: radondb-postgresql, version: 1.0.1
I0817 11:05:22.130203 1 import.go:248] start to create app version, chart name: radondb-postgresql, version: 1.0.1
I0817 11:05:22.327998 1 import.go:265] helm application version exists, name: radondb-postgresql, version: 1.0.1
I0817 11:05:22.328836 1 import.go:163] start to create app, chart name: redis, version: 0.3.5
I0817 11:05:22.529785 1 import.go:176] helm application exists, name: redis, version: 0.3.5
I0817 11:05:22.724634 1 import.go:248] start to create app version, chart name: redis, version: 0.3.5
I0817 11:05:22.928914 1 import.go:265] helm application version exists, name: redis, version: 0.3.5
I0817 11:05:22.930119 1 import.go:163] start to create app, chart name: redis-exporter, version: 3.4.4
I0817 11:05:23.129751 1 import.go:176] helm application exists, name: redis-exporter, version: 3.4.4
I0817 11:05:23.324993 1 import.go:248] start to create app version, chart name: redis-exporter, version: 3.4.4
I0817 11:05:23.527861 1 import.go:265] helm application version exists, name: redis-exporter, version: 3.4.4
I0817 11:05:23.528746 1 import.go:163] start to create app, chart name: tomcat, version: 0.4.3
I0817 11:05:23.730017 1 import.go:176] helm application exists, name: tomcat, version: 0.4.3
I0817 11:05:23.924565 1 import.go:248] start to create app version, chart name: tomcat, version: 0.4.3
I0817 11:05:24.127770 1 import.go:265] helm application version exists, name: tomcat, version: 0.4.3
以上日志中只有这一条有问题W0817 11:05:15.916224 1 client_config.go:552] Neither --kubeconfig nor --master was specified. Using the inClusterConfig. This might not work.
,其他日志内容看不出问题。不知道迁移工作是否成功。
2、 执行完 kubectl get helmreleases
命令后,release都存在,workspace和namespace也全部正确。但是浏览器管理界面还是看不到应用
kevendengK零S
wmwm061061
这说明部署的应用CR都还保存在集群中,但是没有正确获取到。
试试在界面按下F12看看具体的网络请求路径与响应值,是否有什么异常吗?
- 已编辑
- 最佳回复由 wmwm061061 选择
kevendeng
非常感谢,找到原因了,是这次升级之后新加了一个 kubesphere 集群,变成了多集群,点击项目应用时请求K8S apiserver 会多传入一个label kubesphere.io/cluster
,而 helmrelease 下的资源CLUSTER为空,所以在项目应用下看不到之前的应用。
1、执行 kubectl get helmreleases
之后,会发现CLUSTER为空。
2、在浏览器按F12打开调试模式,点击项目应用时,会出现下面这条报文,其中 labelSelector 会选择两条标签
,分别是 kubesphere.io/cluster
和 kubesphere.io/namespace
。由于 helmreleases 资源的 CLUSTER 为空,所以点击项目应用时看不到之前安装的应用。
ws://192.168.xxx.xxx:30xxx/apis/application.kubesphere.io/v1alpha1/watch/helmreleases?labelSelector=kubesphere.io/cluster=host,kubesphere.io/namespace=xx-test
3、编辑 CLUSTER 为空的资源,然后添加一个 labels kubesphere.io/cluster: host
,其中host为集群名。
kubectl edit helmreleases.application.kubesphere.io cl-j30xqr8lo31m5m
apiVersion: application.kubesphere.io/v1alpha1
kind: HelmRelease
metadata:
labels:
kubesphere.io/cluster: host
之后再执行 kubectl get helmreleases
,会发现 CLUSTER 这一列的值为 host。
此时在浏览器管理界面的项目应用下就可以看到之前安装的应用了。
kevendengK零S
wmwm061061
是的,这应该就是真实原因了,我猜测这是由于在启用多集群功能之前,因为并没有多集群的概念,这些已部署应用的CR对象中是没有对应信息的。而启用多集群之后,由于API查询条件加入了集群信息,因此这些应用都没有查到。
这应该是一个Bug。
建议将此贴标记为已解决,并将你的解决方法标记为最佳回复,以方便其他遇到类似问题的人检索。
同时,也建议将帖子标题修改为更加符合实际情况的描述:启用多集群功能后,项目中已部署的应用列表不再显示。
kevendeng
是的,在发现这个问题的前一天,我对 kubesphere 集群做了两个比较大的操作
- 将 kubesphere 版本由 v3.1.0 升级至 v3.1.1
- 启用了多集群功能,添加了另一个 kubesphere 集群。
开始以为是版本升级的原因,经过这么多次排错。真正的原因就是你说的这个
由于在启用多集群功能之前,因为并没有多集群的概念,这些已部署应用的CR对象中是没有对应信息的。而启用多集群之后,由于API查询条件加入了集群信息,因此这些应用都没有查到。