Slackbot
01/23/2023, 2:21 PMSClark
01/23/2023, 2:33 PMJason Witkowski
02/02/2023, 3:12 PMJason Witkowski
02/02/2023, 3:12 PMLuiz Augusto
03/13/2023, 5:57 PMdruid-kubernetes-extensions and druid-kubernetes-overlord-extensions properly configured? (maybe @churro)
Tbh looking at the docs I donβt even understand if MM-less druid requires druid-kubernetes-extensions (like the extension names kinda suggest) loaded/running/no-zookeeper or if theyβre incompatible.
Their documentation is far from simple and there are no examples for either. As an example of confusion, Kubernetes extension doc says you need
druid.indexer.runner.type=httpRemote
And MM-less Druid doc says you need
druid.indexer.runner.type: k8s
So⦠what it is? And can they work together?
(Iβm seeing the same exceptions as the people on this thread btw)Luiz Augusto
03/13/2023, 6:03 PMchurro
03/13/2023, 8:29 PMdruid.indexer.runner.type=httpRemote in your common runtime propertieschurro
03/13/2023, 8:29 PMdruid.indexer.runner.type: k8schurro
03/13/2023, 8:29 PMLuiz Augusto
03/13/2023, 10:18 PMdruid.indexer.runner.type=k8s
druid.indexer.runner.namespace=druid
druid.indexer.queue.maxSize=3
druid.indexer.task.encapsulatedTask=true
druid.processing.intermediaryData.storage.type=deepstore
something like this? anything else?churro
03/13/2023, 10:19 PMLuiz Augusto
03/13/2023, 10:22 PMchurro
03/13/2023, 10:22 PMchurro
03/13/2023, 10:22 PMLuiz Augusto
03/13/2023, 10:25 PMLuiz Augusto
03/13/2023, 10:27 PMoverlords:
# Optionally specify for running coordinator as Deployment
# kind: Deployment
nodeType: overlord
druid.port: 8088
nodeConfigMountPath: "/opt/druid/conf/druid/cluster/master/overlord"
replicas: 1
runtime.properties: |
druid.service=druid/overlord
druid.indexer.runner.type=k8s
druid.indexer.runner.namespace=druid
druid.indexer.queue.maxSize=3
druid.indexer.queue.startDelay=PT30S
druid.indexer.task.encapsulatedTask=true
druid.processing.intermediaryData.storage.type=deepstore
extra.jvm.options: |-
-Xmx512M
-Xms512M
β Caused by: com.google.inject.CreationException: Unable to create injector, see the following errors: ββ ββ 1) Unknown provider [k8s] of Key[type=org.apache.druid.discovery.DruidNodeAnnouncer, annotation=[none]], known options [[curator]] ββ at org.apache.druid.guice.PolyBind.createChoiceWithDefault(PolyBind.java:110) (via modules: com.google.inject.util.Modules$OverrideModule -> com.google.inject.util.Modules$OverrideModule -> org.apache.druid.curator.discovery.DiscoveryModule) ββ while locating org.apache.druid.discovery.DruidNodeAnnouncer ββ for field at org.apache.druid.cli.ServerRunnable$DiscoverySideEffectsProvider.announcer(ServerRunnable.java:105) ββ at org.apache.druid.cli.ServerRunnable.bindAnnouncer(ServerRunnable.java:93) (via modules: com.google.inject.util.Modules$OverrideModule -> com.google.inject.util.Modules$OverrideModule -> org.apache.druid.cli.CliCoordinator$1) ββchurro
03/13/2023, 10:28 PMchurro
03/13/2023, 10:28 PMchurro
03/13/2023, 10:28 PMLuiz Augusto
03/13/2023, 10:29 PMLuiz Augusto
03/13/2023, 10:31 PMβ Exception in thread "main" java.lang.RuntimeException: com.google.inject.CreationException: Unable to create injector, see the following errors: ββ ββ 1) Could not find a suitable constructor in org.apache.druid.indexing.common.config.TaskConfig. Classes must have either one (and only one) constructor annotated with @Inject or a zero-argument constructor that is not private.
ββ at org.apache.druid.indexing.common.config.TaskConfig.class(TaskConfig.java:49) ββ while locating org.apache.druid.indexing.common.config.TaskConfig ββ for the 3rd parameter of org.apache.druid.k8s.overlord.KubernetesTaskRunnerFactory.<init>(KubernetesTaskRunnerFactory.java:63) ββ at org.apache.druid.k8s.overlord.K8sOverlordModule.configure(K8sOverlordModule.java:63) (via modules: com.google.inject.util.Modules$OverrideModule -> org.apache.druid.k8s.overlord.K8sOverlordModule)
ββ ββ 1 error ββ at org.apache.druid.cli.GuiceRunnable.makeInjector(GuiceRunnable.java:88) ββ at org.apache.druid.cli.ServerRunnable.run(ServerRunnable.java:62) ββ at org.apache.druid.cli.Main.main(Main.java:112)churro
03/13/2023, 10:34 PMjavaOptsArray
?churro
03/13/2023, 10:34 PMLuiz Augusto
03/13/2023, 10:35 PM-Xmx1gchurro
03/13/2023, 10:36 PMchurro
03/13/2023, 10:36 PMchurro
03/13/2023, 10:38 PMLuiz Augusto
03/13/2023, 10:39 PMdruid.indexer.runner.javaOptsArray=["-Xmx1g"]churro
03/13/2023, 10:39 PMchurro
03/13/2023, 10:39 PMLuiz Augusto
03/13/2023, 10:41 PMdruid-kubernetes-overlord-extensions should exist only in the load list for overlord, is that right?churro
03/13/2023, 10:41 PMonly in the overlord that extensionLuiz Augusto
03/13/2023, 10:44 PMchurro
03/13/2023, 10:45 PMchurro
03/13/2023, 10:46 PMLuiz Augusto
03/13/2023, 10:50 PMchurro
03/13/2023, 10:50 PMchurro
03/13/2023, 10:51 PMLuiz Augusto
03/13/2023, 10:53 PMLuiz Augusto
03/13/2023, 11:25 PMchurro
03/13/2023, 11:25 PMLuiz Augusto
03/13/2023, 11:50 PMβ 2023-03-13T23:41:53+00:00 startup service overlord β
β Setting druid.host=10.1.1.102 in /tmp/conf/druid/cluster/master/coordinator-overlord/runtime.properties β
β WARNING: An illegal reflective access operation has occurred β
β WARNING: Illegal reflective access by com.google.inject.internal.cglib.core.$ReflectUtils$1 (file:/opt/druid/lib/guice-4.1.0.jar) to method java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain) β
β WARNING: Please consider reporting this to the maintainers of com.google.inject.internal.cglib.core.$ReflectUtils$1 β
β WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations β
β WARNING: All illegal access operations will be denied in a future release
But I can see something like this in other service logs and webconsole
β 2023-03-13T23:40:06,294 INFO [org.apache.druid.k8s.discovery.K8sDruidNodeDiscoveryProvider$NodeRoleWatchercoordinator] org.apache.druid.discovery.BaseNodeRoleWatcher - Node [<http://10.1.1.99:8081>] of role [coordinator] detected. β
So I go to load data, submit a ingestion for wikipedia test data and⦠nothing happens, I cant even see a log as I get 404 statusLuiz Augusto
03/13/2023, 11:51 PMchurro
03/13/2023, 11:51 PMwikipediachurro
03/13/2023, 11:52 PMAdheip Singh
03/14/2023, 4:21 AMLuiz Augusto
03/14/2023, 3:50 PMnodeConfigMountPath: "/opt/druid/conf/druid/cluster/master/coordinator-overlord"
As soon as I set them back to this common value, services could start again, they coordinate using k8s API and not Zookeeper, which is great.Luiz Augusto
03/14/2023, 3:51 PMβ 2023-03-14T12:02:09,548 ERROR [k8s-task-runner-0] org.apache.druid.indexing.overlord.TaskQueue - Failed to run task: {class=org.apache.druid.indexing.overlord.TaskQueue, exceptionType=class io.fabric8.kubernetes.client.KubernetesClientException, exceptionMessage=Failure executing: DELETE at: <https://10.96.0.1/apis/batch/v1/namespaces/druid/jobs/indexparallelwikipediafogdhebc20230314t120207965z>. Message: Forbidden!Configured service account doesn't have access. Service account may have been revoked. jobs.batch "indexparallelwikipediafogdhebc20230314t120207965z" is forbidden:
ββ User "system:serviceaccount:druid:default" cannot delete resource "jobs" in API group "batch" in the namespace "druid"., task=index_parallel_wikipedia_fogdhebc_2023-03-14T12:02:07.965Z, type=index_parallel, dataSource=wikipedia} ββ io.fabric8.kubernetes.client.KubernetesClientException: Failure executing: DELETE at: <https://10.96.0.1/apis/batch/v1/namespaces/druid/jobs/indexparallelwikipediafogdhebc20230314t120207965z>. Message: Forbidden!Configured service account doesn't have access. Service account may have been revoked. jobs.batch "indexparallelwikipediafogdhebc20230314t120207965z" is forbidden: User "system:serviceaccount:druid:default" cannot delete resource "jobs" in API group "batch" in the namespace "druid". ββ at io.fabric8.kubernetes.client.dsl.base.OperationSupport.requestFailure(OperationSupport.java:682) ~[?:?] ββ at io.fabric8.kubernetes.client.dsl.base.OperationSupport.requestFailure(OperationSupport.java:661) ~[?:?]
I have the suggested role + role binding, but maybe something is wrong here. I canβt say I understand these k8s roles and bindings very well.
---
apiVersion: <http://rbac.authorization.k8s.io/v1|rbac.authorization.k8s.io/v1>
kind: Role
metadata:
name: druid-cluster
rules:
- apiGroups:
- ""
resources:
- pods
- configmaps
- jobs
verbs:
- '*'
---
kind: RoleBinding
apiVersion: <http://rbac.authorization.k8s.io/v1|rbac.authorization.k8s.io/v1>
metadata:
name: druid-cluster
subjects:
- kind: ServiceAccount
name: default
roleRef:
kind: Role
name: druid-cluster
apiGroup: <http://rbac.authorization.k8s.io|rbac.authorization.k8s.io>Jason Witkowski
03/14/2023, 3:52 PMJason Witkowski
03/14/2023, 3:53 PMLuiz Augusto
03/14/2023, 3:54 PMapiVersion: <http://rbac.authorization.k8s.io/v1|rbac.authorization.k8s.io/v1>
kind: Role
metadata:
name: druid-cluster
rules:
- apiGroups:
- ""
resources:
- pods
- configmaps
- jobs <--- required for the MM-less extension
verbs:
- '*'
- apiGroups:
- batch
resources:
- jobs
verbs:
- '*'Jason Witkowski
03/14/2023, 3:55 PM- apiGroups:
- ""
This means the 'common' or 'base' api (there is a specific term for it, i forget). Jobs do not belong under this apiGroupJason Witkowski
03/14/2023, 3:55 PMbatchJason Witkowski
03/14/2023, 3:55 PMJason Witkowski
03/14/2023, 3:56 PMpods/logs under the first apiGroups: [""] for viewing logs. I havent tested that yet, let me know if you doLuiz Augusto
03/14/2023, 4:15 PMapiVersion: <http://rbac.authorization.k8s.io/v1|rbac.authorization.k8s.io/v1>
kind: Role
metadata:
name: druid-cluster
rules:
- apiGroups:
- ""
resources:
- pods
- configmaps
verbs:
- '*'
- apiGroups:
- batch
resources:
- jobs
verbs:
- '*'
but now all pods crash during startup
β 2023-03-14T16:10:34,772 INFO [main] org.apache.druid.java.util.common.lifecycle.Lifecycle - Starting lifecycle [module] stage [ANNOUNCEMENTS] ββ 2023-03-14T16:10:34,777 INFO [main] org.apache.druid.k8s.discovery.K8sDruidNodeAnnouncer - Announcing DiscoveryDruidNode[DiscoveryDruidNode{druidNode=DruidNode{serviceName='druid/router', host='10.1.1.251', bindOnHost=false, port=-1, plaintextPort=8088, enablePlaintextPort=true, tlsPort=-1, enableTlsPort=false}, nodeRole='ROUTER', services={}}] ββ 2023-03-14T16:10:34,914 INFO [main] org.apache.druid.k8s.discovery.K8sDruidNodeAnnouncer - Json Patch For Node Announcement: [[{"op":"add","path":"/metadata/labels/druidDiscoveryAnnouncement-router","value":"true"},{"op":"add","path":"/metadata/labels/druidDiscoveryAnnouncement-id-hash","value":"1658736627"},{"op":"add","path":"/metadata/labels/druidDiscoveryAnnouncement-cluster-identifier","value":"druid-cluster"},{"op":"add","path":"/metadata/annotations/druidNodeInfo-router","value":"{\"druidNode\":{\"service\":\"druid/router\",\"host\":\"10.1.1.251\",\"bindOnHost\":false,\"plaintextPort\":8088,\"port\":-1,\"tlsPort\":-1,\"enablePlaintextPort\":true,\"enableTlsPort\":false},\"nodeType\":\"router\",\"services\":{}}"}]] ββ TRACE StatusLogger Log4jLoggerFactory.getContext() found anchor class org.apache.druid.java.util.common.logger.Logger ββ 2023-03-14T16:10:35,007 WARN [main] org.apache.druid.java.util.common.RetryUtils - Retrying (1 of 2) in 760ms. ββ <http://org.apache.druid.java.util.common.RE|org.apache.druid.java.util.common.RE>: Failed to patch pod[druid/druid-druid-cluster-routers-0], code[403], error[{ ββ "kind": "Status",
ββ "apiVersion": "v1",
ββ "metadata": {},
ββ "status": "Failure",
ββ "message": "pods \"druid-druid-cluster-routers-0\" is forbidden: User \"system:serviceaccount:druid:default\" cannot patch resource \"pods\" in API group \"\" in the namespace \"druid\"", "reason": "Forbidden", β
β "details": {
β "name": "druid-druid-cluster-routers-0",
β "kind": "pods"
β },
β "code": 403
β }].
β
β at org.apache.druid.k8s.discovery.DefaultK8sApiClient.patchPod(DefaultK8sApiClient.java:71) ~[?:?]
β at org.apache.druid.k8s.discovery.K8sDruidNodeAnnouncer.lambda$announce$0(K8sDruidNodeAnnouncer.java:112) ~[?:?]
(...)Jason Witkowski
03/14/2023, 4:16 PMLuiz Augusto
03/14/2023, 4:16 PMkind: RoleBinding
apiVersion: <http://rbac.authorization.k8s.io/v1|rbac.authorization.k8s.io/v1>
metadata:
name: druid-cluster
subjects:
- kind: ServiceAccount
name: default
roleRef:
kind: Role
name: druid-cluster
apiGroup: <http://rbac.authorization.k8s.io|rbac.authorization.k8s.io>Jason Witkowski
03/14/2023, 4:18 PMdruid ?Luiz Augusto
03/14/2023, 4:19 PMJason Witkowski
03/14/2023, 4:19 PMdefault ?Jason Witkowski
03/14/2023, 4:19 PMsubjects:
- kind: ServiceAccount
name: default
to
subjects:
- kind: ServiceAccount
name: default
namespace: druid
in your roleBinding. Not sure that will fix it, but that is the only diff i see between yours and mineJason Witkowski
03/14/2023, 4:20 PMserviceAccount: defaultLuiz Augusto
03/14/2023, 4:26 PMand the pods are configured to use serviceAccountI was assuming this to be true. But Iβve added?default
serviceAccount: default and now I can see it in the pod, but I got the same errorsLuiz Augusto
03/14/2023, 4:27 PMβ Caused by: <http://org.apache.druid.java.util.common.RE|org.apache.druid.java.util.common.RE>: Failed to patch pod[druid/druid-druid-cluster-overlords-0], code[403], error[{ ββ "kind": "Status", ββ "apiVersion": "v1", ββ "metadata": {}, ββ "status": "Failure", ββ "message": "pods \"druid-druid-cluster-overlords-0\" is forbidden: User \"system:serviceaccount:druid:default\" cannot patch resource \"pods\" in API group \"\" in the namespace \"druid\"",
ββ "reason": "Forbidden", ββ "details": {
β "name": "druid-druid-cluster-overlords-0",
β "kind": "pods"
β },
β "code": 403
β }].Jason Witkowski
03/14/2023, 4:27 PMdefault , did you edit the roleBinding with the namespace?Luiz Augusto
03/14/2023, 4:27 PMkind: RoleBinding
apiVersion: <http://rbac.authorization.k8s.io/v1|rbac.authorization.k8s.io/v1>
metadata:
name: druid-cluster
subjects:
- kind: ServiceAccount
name: default
namespace: druid
roleRef:
kind: Role
name: druid-cluster
apiGroup: <http://rbac.authorization.k8s.io|rbac.authorization.k8s.io>Jason Witkowski
03/14/2023, 4:28 PMJason Witkowski
03/14/2023, 4:28 PMLuiz Augusto
03/14/2023, 4:32 PMJason Witkowski
03/14/2023, 4:33 PMJason Witkowski
03/14/2023, 4:33 PMlogs/app.logLuiz Augusto
03/14/2023, 4:35 PMJason Witkowski
03/14/2023, 4:43 PMdruid namespace ?Luiz Augusto
03/14/2023, 4:44 PMJason Witkowski
03/14/2023, 4:44 PMLuiz Augusto
03/14/2023, 4:48 PMLuiz Augusto
03/14/2023, 4:51 PMLuiz Augusto
03/14/2023, 5:10 PMchurro
03/14/2023, 5:54 PM