kk 离线安装的全功能ks3.0

[root@master1 ~]# helm upgrade --install sonarqube sonarqube --repo https://charts.kubesphere.io/main -n kubesphere-devops-system  --create-namespace --set service.type=NodePort
Release "sonarqube" does not exist. Installing it now.
NAME: sonarqube
LAST DEPLOYED: Sat Dec 19 22:34:31 2020
NAMESPACE: kubesphere-devops-system
STATUS: deployed
REVISION: 1
NOTES:
1. Get the application URL by running these commands:
  export NODE_PORT=$(kubectl get --namespace kubesphere-devops-system -o jsonpath="{.spec.ports[0].nodePort}" services sonarqube-sonarqube)
  export NODE_IP=$(kubectl get nodes --namespace kubesphere-devops-system -o jsonpath="{.items[0].status.addresses[0].address}")
  echo http://$NODE_IP:$NODE_PORT
[root@master1 ~]# export NODE_PORT=$(kubectl get --namespace kubesphere-devops-system -o jsonpath="{.spec.ports[0].nodePort}" services sonarqube-sonarqube)
address}")
  echo http://$NODE_IP:$NODE_PORT
[root@master1 ~]#   export NODE_IP=$(kubectl get nodes --namespace kubesphere-devops-system -o jsonpath="{.items[0].status.addresses[0].address}")
[root@master1 ~]#   echo http://$NODE_IP:$NODE_PORT
http://10.0.1.223:31476
[root@master1 ~]# kubectl get pod -A|grep sonar
kubesphere-devops-system       sonarqube-sonarqube-bb595d88b-rvspp                  0/1     Running     1          21s


[root@master1 ~]# kubectl logs -f -n kubesphere-devops-system sonarqube-sonarqube-bb595d88b-rvspp
2020.12.19 14:35:19 INFO  app[][o.s.a.AppFileSystem] Cleaning or creating temp directory /opt/sonarqube/temp
2020.12.19 14:35:19 INFO  app[][o.s.a.es.EsSettings] Elasticsearch listening on /127.0.0.1:9001
2020.12.19 14:35:19 INFO  app[][o.s.a.ProcessLauncherImpl] Launch process[[key='es', ipcIndex=1, logFilenamePrefix=es]] from [/opt/sonarqube/elasticsearch]: /opt/sonarqube/elasticsearch/bin/elasticsearch
2020.12.19 14:35:19 INFO  app[][o.s.a.SchedulerImpl] Waiting for Elasticsearch to be up and running
OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
2020.12.19 14:35:19 INFO  app[][o.e.p.PluginsService] no modules loaded
2020.12.19 14:35:19 INFO  app[][o.e.p.PluginsService] loaded plugin [org.elasticsearch.transport.Netty4Plugin]
2020.12.19 14:35:21 INFO  es[][o.e.e.NodeEnvironment] using [1] data paths, mounts [[/opt/sonarqube/data (/dev/sda1)]], net usable_space [46.7gb], net total_space [49.9gb], types [xfs]
2020.12.19 14:35:21 INFO  es[][o.e.e.NodeEnvironment] heap size [503.6mb], compressed ordinary object pointers [true]
2020.12.19 14:35:21 INFO  es[][o.e.n.Node] node name [sonarqube], node ID [nzF3QP1WRi-YIrnl6PyOQg]
2020.12.19 14:35:21 INFO  es[][o.e.n.Node] version[6.8.4], pid[21], build[default/tar/bca0c8d/2019-10-16T06:19:49.319352Z], OS[Linux/3.10.0-1160.6.1.el7.x86_64/amd64], JVM[Oracle Corporation/OpenJDK 64-Bit Server VM/11.0.7/11.0.7+10]
2020.12.19 14:35:21 INFO  es[][o.e.n.Node] JVM arguments [-XX:+UseConcMarkSweepGC, -XX:CMSInitiatingOccupancyFraction=75, -XX:+UseCMSInitiatingOccupancyOnly, -Des.networkaddress.cache.ttl=60, -Des.networkaddress.cache.negative.ttl=10, -XX:+AlwaysPreTouch, -Xss1m, -Djava.awt.headless=true, -Dfile.encoding=UTF-8, -Djna.nosys=true, -XX:-OmitStackTraceInFastThrow, -Dio.netty.noUnsafe=true, -Dio.netty.noKeySetOptimization=true, -Dio.netty.recycler.maxCapacityPerThread=0, -Dlog4j.shutdownHookEnabled=false, -Dlog4j2.disable.jmx=true, -Djava.io.tmpdir=/opt/sonarqube/temp, -XX:ErrorFile=../logs/es_hs_err_pid%p.log, -Des.enforce.bootstrap.checks=true, -Xmx512m, -Xms512m, -XX:+HeapDumpOnOutOfMemoryError, -Des.path.home=/opt/sonarqube/elasticsearch, -Des.path.conf=/opt/sonarqube/temp/conf/es, -Des.distribution.flavor=default, -Des.distribution.type=tar]
2020.12.19 14:35:22 INFO  es[][o.e.p.PluginsService] loaded module [analysis-common]
2020.12.19 14:35:22 INFO  es[][o.e.p.PluginsService] loaded module [lang-painless]
2020.12.19 14:35:22 INFO  es[][o.e.p.PluginsService] loaded module [mapper-extras]
2020.12.19 14:35:22 INFO  es[][o.e.p.PluginsService] loaded module [parent-join]
2020.12.19 14:35:22 INFO  es[][o.e.p.PluginsService] loaded module [percolator]
2020.12.19 14:35:22 INFO  es[][o.e.p.PluginsService] loaded module [reindex]
2020.12.19 14:35:22 INFO  es[][o.e.p.PluginsService] loaded module [repository-url]
2020.12.19 14:35:22 INFO  es[][o.e.p.PluginsService] loaded module [transport-netty4]
2020.12.19 14:35:22 INFO  es[][o.e.p.PluginsService] no plugins loaded
2020.12.19 14:35:24 WARN  es[][o.e.d.c.s.Settings] [http.enabled] setting was deprecated in Elasticsearch and will be removed in a future release! See the breaking changes documentation for the next major version.
2020.12.19 14:35:24 INFO  es[][o.e.d.DiscoveryModule] using discovery type [zen] and host providers [settings]
2020.12.19 14:35:25 INFO  es[][o.e.n.Node] initialized
2020.12.19 14:35:25 INFO  es[][o.e.n.Node] starting ...
2020.12.19 14:35:25 INFO  es[][o.e.t.TransportService] publish_address {127.0.0.1:9001}, bound_addresses {127.0.0.1:9001}
2020.12.19 14:35:25 INFO  es[][o.e.b.BootstrapChecks] explicitly enforcing bootstrap checks
2020.12.19 14:35:28 INFO  es[][o.e.c.s.MasterService] zen-disco-elected-as-master ([0] nodes joined), reason: new_master {sonarqube}{nzF3QP1WRi-YIrnl6PyOQg}{N_-stkgjRZOIOTT0T9EOVA}{127.0.0.1}{127.0.0.1:9001}{rack_id=sonarqube}
2020.12.19 14:35:28 INFO  es[][o.e.c.s.ClusterApplierService] new_master {sonarqube}{nzF3QP1WRi-YIrnl6PyOQg}{N_-stkgjRZOIOTT0T9EOVA}{127.0.0.1}{127.0.0.1:9001}{rack_id=sonarqube}, reason:apply cluster state (from master [master {sonarqube}{nzF3QP1WRi-YIrnl6PyOQg}{N_-stkgjRZOIOTT0T9EOVA}{127.0.0.1}{127.0.0.1:9001}{rack_id=sonarqube} committed version [1] source [zen-disco-elected-as-master ([0] nodes joined)]])
2020.12.19 14:35:28 INFO  es[][o.e.n.Node] started
2020.12.19 14:35:28 INFO  es[][o.e.g.GatewayService] recovered [0] indices into cluster_state
2020.12.19 14:35:28 INFO  app[][o.s.a.SchedulerImpl] Process[es] is up
2020.12.19 14:35:28 INFO  app[][o.s.a.ProcessLauncherImpl] Launch process[[key='web', ipcIndex=2, logFilenamePrefix=web]] from [/opt/sonarqube]: /usr/local/openjdk-11/bin/java -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djava.io.tmpdir=/opt/sonarqube/temp --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED -Xmx512m -Xms128m -XX:+HeapDumpOnOutOfMemoryError -Dhttp.nonProxyHosts=localhost|127.*|[::1] -cp ./lib/common/*:/opt/sonarqube/lib/jdbc/postgresql/postgresql-42.2.8.jar org.sonar.server.app.WebServer /opt/sonarqube/temp/sq-process18224158253306316028properties
2020.12.19 14:35:29 INFO  web[][o.s.p.ProcessEntryPoint] Starting web
2020.12.19 14:35:29 INFO  web[][o.a.t.u.n.NioSelectorPool] Using a shared selector for servlet write/read
2020.12.19 14:35:30 INFO  web[][o.e.p.PluginsService] no modules loaded
2020.12.19 14:35:30 INFO  web[][o.e.p.PluginsService] loaded plugin [org.elasticsearch.join.ParentJoinPlugin]
2020.12.19 14:35:30 INFO  web[][o.e.p.PluginsService] loaded plugin [org.elasticsearch.percolator.PercolatorPlugin]
2020.12.19 14:35:30 INFO  web[][o.e.p.PluginsService] loaded plugin [org.elasticsearch.transport.Netty4Plugin]
2020.12.19 14:35:31 INFO  web[][o.s.s.e.EsClientProvider] Connected to local Elasticsearch: [127.0.0.1:9001]
2020.12.19 14:35:31 INFO  web[][o.s.s.p.LogServerVersion] SonarQube Server / 8.2.0.32929 / ffde725e701a0acdc2bfac653743c4d91063cd45
2020.12.19 14:35:31 INFO  web[][o.sonar.db.Database] Create JDBC data source for jdbc:postgresql://sonarqube-postgresql:5432/sonarDB
2020.12.19 14:35:32 ERROR web[][o.s.s.p.PlatformImpl] Web server startup failed
java.lang.IllegalStateException: Fail to connect to database
	at org.sonar.db.DefaultDatabase.start(DefaultDatabase.java:87)
	at org.sonar.core.platform.StartableCloseableSafeLifecyleStrategy.start(StartableCloseableSafeLifecyleStrategy.java:40)
	at org.picocontainer.injectors.AbstractInjectionFactory$LifecycleAdapter.start(AbstractInjectionFactory.java:84)
	at org.picocontainer.behaviors.AbstractBehavior.start(AbstractBehavior.java:169)
	at org.picocontainer.behaviors.Stored$RealComponentLifecycle.start(Stored.java:132)
	at org.picocontainer.behaviors.Stored.start(Stored.java:110)
	at org.picocontainer.DefaultPicoContainer.potentiallyStartAdapter(DefaultPicoContainer.java:1016)
	at org.picocontainer.DefaultPicoContainer.startAdapters(DefaultPicoContainer.java:1009)
	at org.picocontainer.DefaultPicoContainer.start(DefaultPicoContainer.java:767)
	at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:135)
	at org.sonar.server.platform.platformlevel.PlatformLevel.start(PlatformLevel.java:90)
	at org.sonar.server.platform.platformlevel.PlatformLevel1.start(PlatformLevel1.java:164)
	at org.sonar.server.platform.PlatformImpl.start(PlatformImpl.java:213)
	at org.sonar.server.platform.PlatformImpl.startLevel1Container(PlatformImpl.java:172)
	at org.sonar.server.platform.PlatformImpl.init(PlatformImpl.java:86)
	at org.sonar.server.platform.web.PlatformServletContextListener.contextInitialized(PlatformServletContextListener.java:43)
	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4770)
	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5236)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1423)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1413)
	at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.base/java.lang.Thread.run(Unknown Source)
Caused by: java.lang.IllegalStateException: Can not connect to database. Please check connectivity and settings (see the properties prefixed by 'sonar.jdbc.').
	at org.sonar.db.DefaultDatabase.checkConnection(DefaultDatabase.java:119)
	at org.sonar.db.DefaultDatabase.start(DefaultDatabase.java:84)
	... 24 common frames omitted
Caused by: java.sql.SQLException: Cannot create PoolableConnectionFactory (Connection to sonarqube-postgresql:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.)
	at org.apache.commons.dbcp2.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:669)
	at org.apache.commons.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:544)
	at org.apache.commons.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:753)
	at org.sonar.db.profiling.NullConnectionInterceptor.getConnection(NullConnectionInterceptor.java:31)
	at org.sonar.db.profiling.ProfiledDataSource.getConnection(ProfiledDataSource.java:317)
	at org.sonar.db.DefaultDatabase.checkConnection(DefaultDatabase.java:116)
	... 25 common frames omitted
Caused by: org.postgresql.util.PSQLException: Connection to sonarqube-postgresql:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
	at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:280)
	at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49)
	at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:195)
	at org.postgresql.Driver.makeConnection(Driver.java:458)
	at org.postgresql.Driver.connect(Driver.java:260)
	at org.apache.commons.dbcp2.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:55)
	at org.apache.commons.dbcp2.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:355)
	at org.apache.commons.dbcp2.BasicDataSource.validateConnectionFactory(BasicDataSource.java:115)
	at org.apache.commons.dbcp2.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:665)
	... 30 common frames omitted
Caused by: java.net.ConnectException: Connection refused (Connection refused)
	at java.base/java.net.PlainSocketImpl.socketConnect(Native Method)
	at java.base/java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
	at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
	at java.base/java.net.AbstractPlainSocketImpl.connect(Unknown Source)
	at java.base/java.net.SocksSocketImpl.connect(Unknown Source)
	at java.base/java.net.Socket.connect(Unknown Source)
	at org.postgresql.core.PGStream.<init>(PGStream.java:75)
	at org.postgresql.core.v3.ConnectionFactoryImpl.tryConnect(ConnectionFactoryImpl.java:91)
	at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:192)
	... 38 common frames omitted
2020.12.19 14:35:32 WARN  web[][o.a.c.l.WebappClassLoaderBase] The web application [ROOT] appears to have started a thread named [elasticsearch[_client_][[timer]]] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 java.base@11.0.7/java.lang.Thread.sleep(Native Method)
 app//org.elasticsearch.threadpool.ThreadPool$CachedTimeThread.run(ThreadPool.java:574)
2020.12.19 14:35:32 WARN  web[][o.a.c.l.WebappClassLoaderBase] The web application [ROOT] appears to have started a thread named [elasticsearch[_client_][scheduler][T#1]] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 java.base@11.0.7/jdk.internal.misc.Unsafe.park(Native Method)
 java.base@11.0.7/java.util.concurrent.locks.LockSupport.parkNanos(Unknown Source)
 java.base@11.0.7/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(Unknown Source)
 java.base@11.0.7/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(Unknown Source)
 java.base@11.0.7/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(Unknown Source)
 java.base@11.0.7/java.util.concurrent.ThreadPoolExecutor.getTask(Unknown Source)
 java.base@11.0.7/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
 java.base@11.0.7/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
 java.base@11.0.7/java.lang.Thread.run(Unknown Source)
2020.12.19 14:35:32 WARN  web[][o.a.c.l.WebappClassLoaderBase] The web application [ROOT] appears to have started a thread named [elasticsearch[_client_][transport_worker][T#1]] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 java.base@11.0.7/sun.nio.ch.EPoll.wait(Native Method)
 java.base@11.0.7/sun.nio.ch.EPollSelectorImpl.doSelect(Unknown Source)
 java.base@11.0.7/sun.nio.ch.SelectorImpl.lockAndDoSelect(Unknown Source)
 java.base@11.0.7/sun.nio.ch.SelectorImpl.select(Unknown Source)
 app//io.netty.channel.nio.SelectedSelectionKeySetSelector.select(SelectedSelectionKeySetSelector.java:62)
 app//io.netty.channel.nio.NioEventLoop.select(NioEventLoop.java:765)
 app//io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:413)
 app//io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:909)
 java.base@11.0.7/java.lang.Thread.run(Unknown Source)
2020.12.19 14:35:32 WARN  web[][o.a.c.l.WebappClassLoaderBase] The web application [ROOT] appears to have started a thread named [elasticsearch[_client_][generic][T#1]] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 java.base@11.0.7/jdk.internal.misc.Unsafe.park(Native Method)
 java.base@11.0.7/java.util.concurrent.locks.LockSupport.park(Unknown Source)
 java.base@11.0.7/java.util.concurrent.LinkedTransferQueue.awaitMatch(Unknown Source)
 java.base@11.0.7/java.util.concurrent.LinkedTransferQueue.xfer(Unknown Source)
 java.base@11.0.7/java.util.concurrent.LinkedTransferQueue.take(Unknown Source)
 java.base@11.0.7/java.util.concurrent.ThreadPoolExecutor.getTask(Unknown Source)
 java.base@11.0.7/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
 java.base@11.0.7/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
 java.base@11.0.7/java.lang.Thread.run(Unknown Source)
2020.12.19 14:35:32 WARN  web[][o.a.c.l.WebappClassLoaderBase] The web application [ROOT] appears to have started a thread named [elasticsearch[_client_][transport_worker][T#2]] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 java.base@11.0.7/sun.nio.ch.EPoll.wait(Native Method)
 java.base@11.0.7/sun.nio.ch.EPollSelectorImpl.doSelect(Unknown Source)
 java.base@11.0.7/sun.nio.ch.SelectorImpl.lockAndDoSelect(Unknown Source)
 java.base@11.0.7/sun.nio.ch.SelectorImpl.select(Unknown Source)
 app//io.netty.channel.nio.SelectedSelectionKeySetSelector.select(SelectedSelectionKeySetSelector.java:62)
 app//io.netty.channel.nio.NioEventLoop.select(NioEventLoop.java:765)
 app//io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:413)
 app//io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:909)
 java.base@11.0.7/java.lang.Thread.run(Unknown Source)
2020.12.19 14:35:32 INFO  web[][o.s.s.a.EmbeddedTomcat] HTTP connector enabled on port 9000
2020.12.19 14:35:32 INFO  web[][o.s.p.ProcessEntryPoint] Hard stopping process
2020.12.19 14:35:33 INFO  app[][o.s.a.SchedulerImpl] Process[web] is stopped
2020.12.19 14:35:33 WARN  app[][o.s.a.p.AbstractManagedProcess] Process exited with exit value [es]: 143
2020.12.19 14:35:33 INFO  app[][o.s.a.SchedulerImpl] Process[es] is stopped
2020.12.19 14:35:33 INFO  app[][o.s.a.SchedulerImpl] SonarQube is stopped
freemankevin 更改标题为「helm安装sonar报无法连接数据库
[root@master1 ~]# kubectl get storageclass
NAME                    PROVISIONER        RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
local (default)         openebs.io/local   Delete          WaitForFirstConsumer   false                  2d21h
storage-nfs (default)   storage.pri/nfs    Delete          Immediate              false                  2d20h
[root@master1 ~]#
freemankevin 更改标题为「【已解决】helm安装sonar报无法连接数据库

解决办法:修改SC,然后卸载helm安装的sonar,然后看日志
原因:kk安装时配置的就是local,然后后面以为自己没用默认的local,自己部署了nfs,所以系统中存在了两个存储类,再然后直接使用命令将local的default去掉,发现因为很多东西部署都是基于local然后改不动,后面大兄弟建议改sc,后面改了果然立即生效了,然后删了重装马上生效,以下为演示部分:

开始使用kk安装时,没注意这里,话说回来,kk没装之前storageClass似乎也没法自己先装,还是要后面手动改下,是的吧???

[root@master1 offline]# vim config-sample.yaml
  storage:
    defaultStorageClass: localVolume
    localVolume:
      storageClassName: local

这将这里的true变false

[root@master1 offline]# kubectl edit sc
      openebs.io/cas-type: local
      storageclass.beta.kubernetes.io/is-default-class: "false"

可以看到立即生效了

[root@master1 offline]# kubectl get storageclass
NAME                    PROVISIONER        RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
local                   openebs.io/local   Delete          WaitForFirstConsumer   false                  2d21h
storage-nfs (default)   storage.pri/nfs    Delete          Immediate              false                  2d21h

卸载重装,看日志

[root@master1 offline]# helm uninstall sonarqube -n kubesphere-devops-system
[root@master1 offline]# helm upgrade --install sonarqube sonarqube --repo https://charts.kubesphere.io/main -n kubesphere-devops-system  --create-namespace --set service.type=NodePort
[root@master1 offline]# kubectl get pod -A|grep sonar
[root@master1 offline]# kubectl logs -f sonarqube-sonarqube-bb595d88b-wk6vj -n kubesphere-devops-system

看下地址端口

[root@master1 offline]# export NODE_PORT=$(kubectl get --namespace kubesphere-devops-system -o jsonpath="{.spec.ports[0].nodePort}" services sonarqube-sonarqube)
[root@master1 offline]# export NODE_IP=$(kubectl get nodes --namespace kubesphere-devops-system -o jsonpath="{.items[0].status.addresses[0].address}")
[root@master1 offline]#   echo http://$NODE_IP:$NODE_PORT
http://10.0.1.223:31548

改完之后的效果

4 年 后
freemankevin 更改标题为「helm安装sonar报无法连接数据库