Open xl204431 opened 11 months ago
Hi @xl204431
To get a raw sqlite shell you can use the following command:
/snap/microk8s/current/bin/dqlite \
--cert /var/snap/microk8s/current/var/kubernetes/backend/cluster.crt \
--key /var/snap/microk8s/current/var/kubernetes/backend/cluster.key \
--servers file:////var/snap/microk8s/current/var/kubernetes/backend/cluster.yaml \
k8s
To retrieve a snapshot of the database (current status of all keys/values), you might the following command to be useful:
microk8s dbctl --debug backup
This will print all current database keys and create a tarball that you can inspect. Hope this helps
It would also help if you share some details about what is the issue that are you experiencing. Thanks again!
@neoaggelos Thank you so much for your response!! I think I might need more help!
I can view the pod when get namespace
root@somehost# microk8s.kubectl get pod -n some-namespace
NAME READY STATUS RESTARTS AGE
problem-pod 1/1 Terminating 0 447d
normal-pod 1/1 Running 0 xxd
...
normal-pod 1/1 Running 0 xxd
But I can not get, describe or delete this problem pod
root@somehost# microk8s.kubectl get pod problem-pod -n some-namespace
Error from server (NotFound): pods "problem-pod" not found
root@somehost# microk8s.kubectl describe pod problem-pod -n some-namespace
Error from server (NotFound): pods "problem-pod" not found
root@somehost# microk8s.kubectl delete pod problem-pod -n some-namespace
Error from server (NotFound): pods "problem-pod" not found
So, this problem-pod keeps its data and affect velero node-agent
Have no idea how it happened
I use microk8s dbctl --debug backup
, and got some data, but some data can be displayed in text format, others are binary format. Why? How can I inspect this data?
I tried
/snap/microk8s/current/bin/dqlite \
--cert /var/snap/microk8s/current/var/kubernetes/backend/cluster.crt \
--key /var/snap/microk8s/current/var/kubernetes/backend/cluster.key \
--servers file:////var/snap/microk8s/current/var/kubernetes/backend/cluster.yaml \
k8s
It connected, but I want to inspect what tables are in the db for further check, however, the command turns out to be error
dqlite> .tables
Error: exec: near ".": syntax error
I try to learn k8s-dqlite's code, and only find migrator without any other tools to use.
I don't know how to solve this issue and need your help.
Hi @xl204431, sorry for missing this
One way to observe the current state of the datastore is to use:
microk8s dbctl --debug backup
Example output from an empty cluster:
The debug output shows the index of each key in the datastore. You can then inspect the tarball to check the $index.key
and $index.value
files. The first should be the key, the other should be the contents (most likely raw protobuf bytes)
Hope this helps
@neoaggelos
I tried this. The problem is that I don't know $index.value
file's format thus I cannot recognize its data. Are there any tools to inspect this data file?
Hi @xl204431
I imagine this is using the internal protobufs found on the Kubernetes project, so I am not sure if I can help more in this direction. The type definition would be https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/api/core/v1/types.go#L4333
I am not aware of any tooling to directly inspect the data.
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.
Background
a pod can be get under namespace, and the status stick as "Terminating"
but when
get
by name,describe
ordelete
this pod , it shows that the pod can not be found.Error from server (NotFound): pods "XXX" not found
Support need
I guess the data is corrupted and want to investigate dqlite's data. How can I access dqlite?