kubemq-io / kubemq-community Goto Github PK
View Code? Open in Web Editor NEWKubeMQ is a Kubernetes native message queue broker
Home Page: https://kubemq.io
License: Apache License 2.0
KubeMQ is a Kubernetes native message queue broker
Home Page: https://kubemq.io
License: Apache License 2.0
Hi, I came across a problem when doing some testing against the kubemq community docker image in that /dev/random kept hitting ulimits when running the docker on a linux machine. The solution was to add below to the docker run command line, it forces /dev/random to point to /dev/urandom which has less limitations. I suggest adding it to the readme for anyone running this docker image on a linux machine. On windows there was no issue.
-v /dev/urandom:/dev/random
In several places in the k8s.yaml
file the port listing for the API service is 8080
, however in the "CONFIG" section it lists the port as 8090
This causes port mapping for the API port to fail, as the container is starting the API service on 8090
as requested by the config section.
Submitted a PR #17 for the change. Will need redeploy of https://deploy.kubemq.io/community
Hi
Do you plan to implement retries? Do you have a roadmap that lists all future features?
Bad version in cli
$ curl -L 'https://github.com/kubemq-io/kubemq-community/releases/download/v2.3.5/kubemq-linux-amd64.tar.gz' | tar xzf - && \
chmod +x ./kubemq && \
./kubemq --version
# return
kubemq version v2.3.0-beta-2
I have tested with :
I have test other release
release version | return version |
---|---|
v2.3.0-beta-1 | v2.2.13 |
v2.3.0-beta-2 | v2.3.0-beta-1 |
v2.3.0 | v2.3.0-beta-2 |
v2.3.1 | v2.3.0-beta-2 |
v2.3.2 | v2.3.0-beta-2 |
v2.3.3 | v2.3.0-beta-2 |
v2.3.4 | v2.3.0-beta-2 |
v2.3.5 | v2.3.0-beta-2 |
I have issue when i run kubemq server
with certificate (The same command work without TLS)
I can't send message in queue via gRPC:
$ kubemq queues send qdock1 'hello word 1'
2022/12/07 14:33:54 loaded configuration from /tmp/tmp.Ebe1N53171/config.yaml
Sending Queue Message:
{
"id": "",
"channel": "qdock1",
"client_id": "908ci19b-ec5a-4224-8422-64f386761da4",
"body_string": "hello word 1"
}
error: error sending queue message, rpc error: code = Unavailable desc = error reading from server: EOF
But I can list the queue (via API)
The certificates is valid (pub, key and ca)
I test with:
I looked the exchanges of kubemq queues send qdock1 'hello word 1'
with the server:
With TLS or without TLS: i can read all exchanges
When I run the following command:
docker run -d -p 8080:8080 -p 50000:50000 -p 9090:9090 kubemq/kubemq-community:latest
And then go to http://localhost:8080/dashboard
I see the dashboard, and I see a banner appear at the top every few seconds: "KubeMQ Server is Disconnected".
I was able to create a channel and send messages to the channel, so other things appear to work - but not the web interface :(
If there are multi consumer within one consumer group, how to guarantee the order of message consuming? Like kafka's topic partition, each partition can be listened by each consumer, message can be hashed to special partition.
Hi,
Is there and difference between community edition and paid?
Perhaps this should be documented somewhere so you know what you get when trying out the community edition.
Hi,
I'am running a v1.12.10 K8S cluster and I am trying to deploy a kubemq cluster on it.
Right after the kubectl apply -f https://get.kubemq.io/deploy
command, I see that the operator pod is in an error state with this message :
...
{"level":"info","ts":1587365069.465001,"logger":"controller-runtime.controller","caller":"controller/controller.go:190","msg":"Starting workers","controller":"kubemqdashboard-controller","worker count":1}
{"level":"error","ts":1587365069.9703064,"logger":"controller-runtime.source","caller":"source/source.go:88","msg":"if kind is a CRD, it should be installed before calling Start","kind":"Ingress.networking.k8s.io","error":"no matches for kind \"Ingress\" in version \"networking.k8s.io/v1beta1\""}
{"level":"error","ts":1587365069.9703994,"logger":"cmd","caller":"manager/main.go:124","msg":"Manager exited non-zero","error":"no matches for kind \"Ingress\" in version \"networking.k8s.io/v1beta1\""}
(The dashboard pod is running)
Do I miss something ?
Thank you for your help
Hi all, I'm writing this issue to understand if you are evaluating the integration with an open policy agent or not
error: running kubemq community version on kubernetes is not supported anymore, please use kubemq commercial version. we believe that kubeMQ community version will support kubernetes - any suggestions on this error?
Architecture: x64
O/S: Linux
Kubernetes environment: Minikube (latest as of date of posting this)
after following the instructions to install KubeMQ (Community), and verifying that I can send a hello world
message, the following fails:
kubemqctl get dashboard
Current Kubernetes cluster context connection: minikube
error: the server could not find the requested resource (get kubemqdashboards.core.k8s.kubemq.io)
Any clues would be very much appreciated, thanks.
The operator pod doesn't run properly on an ARM machine cluster, I see there are ARM releases, can we also have some ARM images published?
I tried installing Kube MQ with kubectl command mentioned : "kubectl apply -f https://deploy.kubemq.io/community".
But there is an error in installing and it says : Unable to connect to the server: x509: certificate signed by unknown authority.
Configurations:
Ubuntu VM with a minikube installation. The kubectl is configured by the minikube.
Hi! I'm using KubeMQ to connect some microservices, yesterday suddenly the server became inaccessible due to CPU/memory usage (usually there are ~15 kubemq-run
processes, while in this case there were a lot of these processes that consumed every resource, below a screenshot of some of them).
what I did
I deleted and recreated the cluster to fix this issue. I also made some tests to provoke it again (by sending 32k messages at the same time using parallel processes, 8k per process) and nothing happened, there was never a resource peak, so what can cause this issue?
params
reading the documentation I see there are some resource-related params
--resources-limits-key-CPU string set resources limits CPU (default "1000m")
--resources-limits-key-memory string set resources limits memory (default "512Mi")
--resources-requests-key-CPU string set resources requests CPU (default "100m")
--resources-requests-memory string set resources request memory (default "256Mi")
but they seem to be settings per instance and do not limit the number of processes spawned by kubemq.
Any idea? Thanks
Hello,
Julia is prominent language in DataScience and please provide Julia SDK. Because of unavailability of Julia SDK, we can not use this software and we do not want to use any other language for the sake of message broker. We are currently using kafka.
2020-06-08T09:26:36.591768413-03:00 {"level":"ERROR","time":"2020-06-08T12:26:36.591Z","msg":"error on getting queues info for metrics reporting: Get "http://localhost:32963/streaming/channelsz?limit=100000&subs=1\": dial tcp 13.227.106.60:32963: i/o timeout","host":"kubemq-cluster-0","module":"transport-server"}
looks like using localhost in MicroK8 is not translated well to the localhost IP
My Setup:
1 Node k3s deployment on IPv4 ONLY lab network
Other workloads up and working as expected
KubeMQ Community latest release (as of 2/25/22) deployed using default config
What happens:
When the community edition is deployed it starts, however all listeners only bind to the containers IPv6 address. This makes it impossible to connect to the container with the CLI from an IPv4 network.
What's expected:
Listeners should bind to both IPv4 and IPv6 interfaces.
Digging in the code, the raw TCP socket listeners appear to be correctly setting the bind port according to the net.Listen
documentation. As well the echo servers appear to be setup correctly as well.
Ref: grpc/server.go:111
lis, err := net.Listen("tcp", fmt.Sprintf(":%d", port))
Ref: rest/server.go:172
_ = s.echoWebServer.Start(fmt.Sprintf(":%d", conf.Port))
However as seen from the startup log output, it appears to ignore this.
2022-02-26T02:07:21.322Z INFO starting kubemq community edition version: , cores: 16 {"host": "f1a8683371dc", "module": "server"}
2022-02-26T02:07:21.323Z INFO ⇨ http server started on [::]:8080
{"host": "f1a8683371dc", "module": "server-api"}
2022-02-26T02:07:22.324Z INFO Starting broker-server version 2.1.9 {"host": "f1a8683371dc", "module": "broker"}
2022-02-26T02:07:22.324Z INFO Git commit [not set] {"host": "f1a8683371dc", "module": "broker"}
2022-02-26T02:07:22.324Z INFO Listening for client connections on 0.0.0.0:39983 {"host": "f1a8683371dc", "module": "broker"}
2022-02-26T02:07:22.324Z INFO Server id is NAT3D4HT53N6MRBB4T35ZVRXEPEC3CSRAWKTVZ5JXGCI3TWT2772BX2E {"host": "f1a8683371dc", "module": "broker"}
2022-02-26T02:07:22.324Z INFO Server is ready {"host": "f1a8683371dc", "module": "broker"}
2022-02-26T02:07:22.325Z INFO In-Memory client server connection pipe: ya3PsP8PSdGJarJJX9lIIC started {"host": "f1a8683371dc", "module": "broker"}
2022-02-26T02:07:22.350Z INFO STREAM: Starting broker-streaming-server[kubemq] version 0.19.0 {"host": "f1a8683371dc", "module": "broker-store-server"}
2022-02-26T02:07:22.350Z INFO STREAM: ServerID: 08rN2ijHYGp37AYGf7AYqI {"host": "f1a8683371dc", "module": "broker-store-server"}
2022-02-26T02:07:22.350Z INFO STREAM: Go version: go1.17.7 {"host": "f1a8683371dc", "module": "broker-store-server"}
2022-02-26T02:07:22.350Z INFO STREAM: Git commit: [not set] {"host": "f1a8683371dc", "module": "broker-store-server"}
2022-02-26T02:07:22.352Z INFO STREAM: Recovering the state... {"host": "f1a8683371dc", "module": "broker-store-server"}
2022-02-26T02:07:22.352Z INFO STREAM: No recovered state {"host": "f1a8683371dc", "module": "broker-store-server"}
2022-02-26T02:07:22.603Z INFO STREAM: Message store is FILE {"host": "f1a8683371dc", "module": "broker-store-server"}
2022-02-26T02:07:22.603Z INFO STREAM: Store location: store/f1a8683371dc {"host": "f1a8683371dc", "module": "broker-store-server"}
2022-02-26T02:07:22.603Z INFO STREAM: ---------- Store Limits ---------- {"host": "f1a8683371dc", "module": "broker-store-server"}
2022-02-26T02:07:22.603Z INFO STREAM: Channels: unlimited {"host": "f1a8683371dc", "module": "broker-store-server"}
2022-02-26T02:07:22.603Z INFO STREAM: --------- Channels Limits -------- {"host": "f1a8683371dc", "module": "broker-store-server"}
2022-02-26T02:07:22.603Z INFO STREAM: Subscriptions: unlimited {"host": "f1a8683371dc", "module": "broker-store-server"}
2022-02-26T02:07:22.603Z INFO STREAM: Messages : unlimited {"host": "f1a8683371dc", "module": "broker-store-server"}
2022-02-26T02:07:22.603Z INFO STREAM: Bytes : unlimited {"host": "f1a8683371dc", "module": "broker-store-server"}
2022-02-26T02:07:22.603Z INFO STREAM: Age : 24h0m0s {"host": "f1a8683371dc", "module": "broker-store-server"}
2022-02-26T02:07:22.603Z INFO STREAM: Inactivity : 24h0m0s {"host": "f1a8683371dc", "module": "broker-store-server"}
2022-02-26T02:07:22.603Z INFO STREAM: ---------------------------------- {"host": "f1a8683371dc", "module": "broker-store-server"}
2022-02-26T02:07:22.603Z INFO STREAM: Streaming Server is ready {"host": "f1a8683371dc", "module": "broker-store-server"}
2022-02-26T02:07:23.603Z INFO routing service loaded {"host": "f1a8683371dc", "module": "services"}
2022-02-26T02:07:23.606Z WARN started insecure grpc server at port 50000 {"host": "f1a8683371dc", "module": "grpc"}
2022-02-26T02:07:23.606Z WARN grpc interface is accepting traffic {"host": "f1a8683371dc", "module": "grpc"}
2022-02-26T02:07:23.606Z WARN rest interface is accepting traffic {"host": "f1a8683371dc", "module": "rest-interface"}
2022-02-26T02:07:23.606Z INFO started insecure rest server at port 9090 {"host": "f1a8683371dc", "module": "rest-interface"}
2022-02-26T02:07:23.606Z INFO ⇨ http server started on [::]:9090
{"host": "f1a8683371dc", "module": "rest-api"}
2022-02-26T02:07:23.606Z INFO STREAM: Channel "_QUEUE_DELAY_" has been created {"host": "f1a8683371dc", "module": "broker-store-server"}
This is confirmed by remoting into the container and listing the bound ipv4 and ipv6 ports
Open IPv4 ports
I have no name!@f1a8683371dc:/kubemq$ declare -a array=($(tail /proc/net/tcp | cut -d":" -f"3"|cut -d" " -f"1")) && for port in ${array[@]}; do echo $((0x$port)); done | sort | uniq
57560
Open IPv6 ports
I have no name!@f1a8683371dc:/kubemq$ declare -a array=($(tail /proc/net/tcp6 | cut -d":" -f"3"|cut -d" " -f"1")) && for port in ${array[@]}; do echo $((0x$port)); done | sort | uniq
36742
39983
42349
50000
8080
9090
Things I've tried:
ListenerNetwork
for echo servers to tcp
The only thing that has successfully allowed the project to bind on ipv4 was to set the first param of Listen and the ListenerNetwork
property of the echo servers to tcp4
, which of course forced IPv4 only.
2022-02-26T03:00:41.577Z INFO ⇨ http server started on 0.0.0.0:9090
I've run out of things to try to allow both ipv4 and ipv6, any ideas?
Is it possible for kubemq to provide ARM image?
This Error : running kubemq community version on kubernetes is not supported anymore, please use kubemq commercial version
You have solution for Clear or Delete channel name type Events-Store or type other.
Have a need to delete channel after expire date or set time for delete channel.
Very cool project @kubemq! Wondering about benchmarks for max client connections when using the Pub/Sub pattern in the community edition(3 nodes)? Looking to use your python lib. Thanks!
I'd love to use your service, but not being able see any code is a bit of a deterrent.
There is an issue with the client section of the config where viper seems to ignore the values during unmarshal to appConfig
. This seems to be known with using underscores in JSON tags as referenced here spf13/viper#498. Will be submitting a PR to fix.
Running the tests with go test ./...
fails with port conflicts:
service: api service, error: listen tcp 0.0.0.0:8080: bind: address already in use
If I constrain the tests to being single threaded go test -p=1 ./...
they run for longer but still eventually fail with several different failures. Is there something I'm missing?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.