首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在kubernetes中将jdbc驱动程序jar添加到skywalking 6.5.0图像文件中

如何在kubernetes中将jdbc驱动程序jar添加到skywalking 6.5.0图像文件中
EN

Stack Overflow用户
提问于 2020-08-20 16:09:09
回答 1查看 149关注 0票数 0

在kubernetes集群中,我正在使用skywalking 6.5.0来监视我的应用程序,这是我的天行ui yaml配置:

代码语言:javascript
复制
{
  "kind": "Deployment",
  "apiVersion": "extensions/v1beta1",
  "metadata": {
    "name": "oap",
    "namespace": "fat",
    "selfLink": "/apis/extensions/v1beta1/namespaces/fat/deployments/oap",
    "uid": "41438118-5ae4-4da2-b3d5-6e082263e360",
    "resourceVersion": "44426777",
    "generation": 52,
    "creationTimestamp": "2020-02-28T02:53:28Z",
    "labels": {
      "app": "oap",
      "release": "skywalking"
    },
    "annotations": {
      "deployment.kubernetes.io/revision": "14",
      "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"name\":\"oap\",\"namespace\":\"dabai-fat\"},\"spec\":{\"replicas\":1,\"selector\":{\"matchLabels\":{\"app\":\"oap\"}},\"template\":{\"metadata\":{\"labels\":{\"app\":\"oap\",\"release\":\"skywalking\"}},\"spec\":{\"containers\":[{\"env\":[{\"name\":\"JAVA_OPTS\",\"value\":\"-Xmx2g -Xms2g\"},{\"name\":\"SW_CLUSTER\",\"value\":\"standalone\"},{\"name\":\"SKYWALKING_COLLECTOR_UID\",\"valueFrom\":{\"fieldRef\":{\"fieldPath\":\"metadata.uid\"}}},{\"name\":\"SW_STORAGE\",\"value\":\"elasticsearch\"},{\"name\":\"SW_STORAGE_ES_CLUSTER_NODES\",\"value\":\"172.30.184.10:9200\"},{\"name\":\"SW_NAMESPACE\",\"value\":\"dabai-fat\"},{\"name\":\"SW_ES_USER\",\"value\":\"elastic\"},{\"name\":\"SW_ES_PASSWORD\",\"value\":\"XXXXXX\"}],\"image\":\"registry.cn-hangzhou.aliyuncs.com/dabai_app_k8s/dabai_fat/skywalking-oap-server:6.5.0\",\"imagePullPolicy\":\"Always\",\"livenessProbe\":{\"initialDelaySeconds\":15,\"periodSeconds\":20,\"tcpSocket\":{\"port\":12800}},\"name\":\"oap\",\"ports\":[{\"containerPort\":11800,\"name\":\"grpc\"},{\"containerPort\":12800,\"name\":\"rest\"}],\"readinessProbe\":{\"initialDelaySeconds\":15,\"periodSeconds\":20,\"tcpSocket\":{\"port\":12800}},\"resources\":{\"limits\":{\"memory\":\"2Gi\"},\"requests\":{\"memory\":\"1Gi\"}}}],\"imagePullSecrets\":[{\"name\":\"regcred\"}],\"serviceAccountName\":\"skywalking-oap-sa\"}}}}\n"
    }
  },
  "spec": {
    "replicas": 1,
    "selector": {
      "matchLabels": {
        "app": "oap"
      }
    },
    "template": {
      "metadata": {
        "creationTimestamp": null,
        "labels": {
          "app": "oap",
          "release": "skywalking"
        },
        "annotations": {
          "kubectl.kubernetes.io/restartedAt": "2020-04-18T18:30:58+08:00"
        }
      },
      "spec": {
        "containers": [
          {
            "name": "oap",
            "image": "registry.cn-hangzhou.aliyuncs.com/dabai_app_k8s/dabai_fat/skywalking-oap-server:6.5.0",
            "ports": [
              {
                "name": "grpc",
                "containerPort": 11800,
                "protocol": "TCP"
              },
              {
                "name": "rest",
                "containerPort": 12800,
                "protocol": "TCP"
              }
            ],
            "env": [
              {
                "name": "JAVA_OPTS",
                "value": "-Xmx2g -Xms2g"
              },
              {
                "name": "SW_CLUSTER",
                "value": "standalone"
              },
              {
                "name": "SKYWALKING_COLLECTOR_UID",
                "valueFrom": {
                  "fieldRef": {
                    "apiVersion": "v1",
                    "fieldPath": "metadata.uid"
                  }
                }
              },
              {
                "name": "SW_STORAGE",
                "value": "mysql"
              },
              {
                "name": "SW_JDBC_URL",
                "value": "jdbc:mysql://45.131.218.134:3309/report?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&useSSL=false&verifyServerCertificate=false"
              },
              {
                "name": "SW_NAMESPACE",
                "value": "fat"
              },
              {
                "name": "SW_DATA_SOURCE_USER",
                "value": "root"
              },
              {
                "name": "SW_DATA_SOURCE_PASSWORD",
                "value": "uwesGwew2rewd109dskhgwugPD"
              }
            ],
            "resources": {
              "limits": {
                "memory": "2Gi"
              },
              "requests": {
                "memory": "1Gi"
              }
            },
            "livenessProbe": {
              "tcpSocket": {
                "port": 12800
              },
              "initialDelaySeconds": 15,
              "timeoutSeconds": 1,
              "periodSeconds": 20,
              "successThreshold": 1,
              "failureThreshold": 3
            },
            "readinessProbe": {
              "tcpSocket": {
                "port": 12800
              },
              "initialDelaySeconds": 15,
              "timeoutSeconds": 1,
              "periodSeconds": 20,
              "successThreshold": 1,
              "failureThreshold": 3
            },
            "terminationMessagePath": "/dev/termination-log",
            "terminationMessagePolicy": "File",
            "imagePullPolicy": "IfNotPresent"
          }
        ],
        "restartPolicy": "Always",
        "terminationGracePeriodSeconds": 30,
        "dnsPolicy": "ClusterFirst",
        "serviceAccountName": "skywalking-oap-sa",
        "serviceAccount": "skywalking-oap-sa",
        "securityContext": {},
        "imagePullSecrets": [
          {
            "name": "regcred"
          }
        ],
        "schedulerName": "default-scheduler"
      }
    },
    "strategy": {
      "type": "RollingUpdate",
      "rollingUpdate": {
        "maxUnavailable": "25%",
        "maxSurge": "25%"
      }
    },
    "revisionHistoryLimit": 10,
    "progressDeadlineSeconds": 600
  },
  "status": {
    "observedGeneration": 52,
    "replicas": 1,
    "updatedReplicas": 1,
    "unavailableReplicas": 1,
    "conditions": [
      {
        "type": "Progressing",
        "status": "True",
        "lastUpdateTime": "2020-08-20T13:34:42Z",
        "lastTransitionTime": "2020-04-02T03:01:31Z",
        "reason": "NewReplicaSetAvailable",
        "message": "ReplicaSet \"oap-7cffc4c77d\" has successfully progressed."
      },
      {
        "type": "Available",
        "status": "False",
        "lastUpdateTime": "2020-08-20T13:34:52Z",
        "lastTransitionTime": "2020-08-20T13:34:52Z",
        "reason": "MinimumReplicasUnavailable",
        "message": "Deployment does not have minimum availability."
      }
    ]
  }
}

当吊舱启动时,日志输出如下:

代码语言:javascript
复制
java.lang.RuntimeException: Failed to get driver instance for jdbcUrl=jdbc:mysql://45.131.218.134:3309/report?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&useSSL=false&verifyServerCertificate=false
    at com.zaxxer.hikari.util.DriverDataSource.<init>(DriverDataSource.java:110) ~[HikariCP-3.1.0.jar:?]
    at com.zaxxer.hikari.pool.PoolBase.initializeDataSource(PoolBase.java:334) ~[HikariCP-3.1.0.jar:?]
    at com.zaxxer.hikari.pool.PoolBase.<init>(PoolBase.java:109) ~[HikariCP-3.1.0.jar:?]
    at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:108) ~[HikariCP-3.1.0.jar:?]
    at com.zaxxer.hikari.HikariDataSource.<init>(HikariDataSource.java:81) ~[HikariCP-3.1.0.jar:?]
    at org.apache.skywalking.oap.server.library.client.jdbc.hikaricp.JDBCHikariCPClient.connect(JDBCHikariCPClient.java:44) ~[library-client-6.5.0.jar:6.5.0]
    at org.apache.skywalking.oap.server.storage.plugin.jdbc.mysql.MySQLStorageProvider.start(MySQLStorageProvider.java:123) ~[storage-jdbc-hikaricp-plugin-6.5.0.jar:6.5.0]
    at org.apache.skywalking.oap.server.library.module.BootstrapFlow.start(BootstrapFlow.java:61) ~[library-module-6.5.0.jar:6.5.0]
    at org.apache.skywalking.oap.server.library.module.ModuleManager.init(ModuleManager.java:67) ~[library-module-6.5.0.jar:6.5.0]
    at org.apache.skywalking.oap.server.starter.OAPServerStartUp.main(OAPServerStartUp.java:43) [server-starter-6.5.0.jar:6.5.0]
Caused by: java.sql.SQLException: No suitable driver
    at java.sql.DriverManager.getDriver(DriverManager.java:315) ~[?:1.8.0_181]
    at com.zaxxer.hikari.util.DriverDataSource.<init>(DriverDataSource.java:103) ~[HikariCP-3.1.0.jar:?]
    ... 9 more

我阅读了天空漫步的官方问题,并告诉我,因为mysql是GPL许可证,而skywalking是Apache,所以我必须自己添加jdbc驱动程序,但是如何将jdbc添加到图像文件中呢?我不知道。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-21 03:24:43

如何将jdbc添加到图像文件中?

一种方法是initContainer:,然后通过-Xbootclasspath人为地注入jdbc驱动程序。

代码语言:javascript
复制
initContainers:
- name: download
  image: busybox:latest
  command:
  - wget
  - -O
  - /foo/jdbc.jar
  - https://whatever-the-jdbc-url-jar-is-goes-here
  volumeMounts:
  - name: tmp
    mountPath: /foo
containers:
- env:
  - name: JAVA_OPTS
    value: -Xmx2g -Xbootclasspath/a:/foo/jdbc.jar
  volumeMounts:
  - name: tmp
    mountPath: /foo
volumes:
- name: tmp
  emptyDir: {}

一种类似的方法,尽管风险稍高,是找到一个已经在图像类路径上的路径,并尝试将jar路径卷到该目录中。

考虑到您的映像看起来像自定义构建的映像,所以正确的操作是更新Dockerfile,以便在构建时下载jar。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63509093

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档