diff --git a/deployment/kubernetes-manifests/00-README.md b/deployment/kubernetes-manifests/00-README.md index a8e627a..bce821b 100644 --- a/deployment/kubernetes-manifests/00-README.md +++ b/deployment/kubernetes-manifests/00-README.md @@ -253,6 +253,18 @@ kubectl delete -f deployment/kubernetes-manifests/ --- +## Troubleshooting + +### Container Runtime Auto-Detection + +Inspektor Gadget DaemonSet, pod başlangıcında bir init container aracılığıyla container runtime socket yolunu otomatik tespit eder. Desteklenen platformlar: K3s, RKE2, standard K8s, MicroK8s. Init container loglarında tespit edilen socket yolunu görebilirsiniz: + +```bash +kubectl logs -n $NS -l app=inspektor-gadget -c detect-runtime +``` + +--- + ## Microservices Status | Service | YAML Ready | Implementation | Status | diff --git a/deployment/kubernetes-manifests/09-inspektor-gadget-config.yaml b/deployment/kubernetes-manifests/09-inspektor-gadget-config.yaml index 9a57342..dbb07ba 100644 --- a/deployment/kubernetes-manifests/09-inspektor-gadget-config.yaml +++ b/deployment/kubernetes-manifests/09-inspektor-gadget-config.yaml @@ -9,7 +9,11 @@ metadata: data: config.yaml: | events-buffer-length: 16384 - containerd-socketpath: /run/containerd/containerd.sock + # Auto-detected by init container at pod startup. Supported platforms: + # K3s/RKE2: /run/k3s/containerd/containerd.sock + # MicroK8s: /var/snap/microk8s/common/run/containerd.sock + # Standard: /run/containerd/containerd.sock + containerd-socketpath: CONTAINERD_SOCKET_AUTO crio-socketpath: /run/crio/crio.sock docker-socketpath: /run/docker.sock podman-socketpath: /run/podman/podman.sock diff --git a/deployment/kubernetes-manifests/10-inspektor-gadget.yaml b/deployment/kubernetes-manifests/10-inspektor-gadget.yaml index 11b7419..098c279 100644 --- a/deployment/kubernetes-manifests/10-inspektor-gadget.yaml +++ b/deployment/kubernetes-manifests/10-inspektor-gadget.yaml @@ -33,6 +33,9 @@ spec: prometheus.io/port: "2223" prometheus.io/path: "/metrics" spec: + hostPID: true + hostNetwork: true + dnsPolicy: ClusterFirstWithHostNet serviceAccountName: inspektor-gadget nodeSelector: kubernetes.io/os: linux @@ -53,6 +56,39 @@ spec: operator: Exists - effect: NoExecute operator: Exists + initContainers: + - name: detect-runtime + image: busybox:1.36 + command: ['sh', '-c'] + args: + - | + if [ -S /host/run/k3s/containerd/containerd.sock ]; then + SOCKET="/run/k3s/containerd/containerd.sock" + echo "Detected K3s/RKE2 containerd socket" + elif [ -S /host/run/containerd/containerd.sock ]; then + SOCKET="/run/containerd/containerd.sock" + echo "Detected standard containerd socket" + elif [ -S /host/var/snap/microk8s/common/run/containerd.sock ]; then + SOCKET="/host/var/snap/microk8s/common/run/containerd.sock" + echo "Detected MicroK8s containerd socket" + else + SOCKET="/run/containerd/containerd.sock" + echo "WARNING: No containerd socket found at known paths, using default" + fi + echo "Using containerd socket: $SOCKET" + sed "s|CONTAINERD_SOCKET_AUTO|$SOCKET|g" /config-template/config.yaml > /config-generated/config.yaml + volumeMounts: + - name: run + mountPath: /host/run + readOnly: true + - name: var + mountPath: /host/var + readOnly: true + - name: config + mountPath: /config-template + readOnly: true + - name: config-generated + mountPath: /config-generated containers: - name: gadget image: ghcr.io/inspektor-gadget/inspektor-gadget:v0.48.0 @@ -160,7 +196,7 @@ spec: mountPath: /sys/fs/bpf - name: oci mountPath: /var/lib/ig - - name: config + - name: config-generated mountPath: /etc/ig readOnly: true - name: wasm-cache @@ -202,6 +238,8 @@ spec: configMap: name: inspektor-gadget-config defaultMode: 0400 + - name: config-generated + emptyDir: {} - name: wasm-cache emptyDir: {} --- diff --git a/deployment/kubernetes-manifests/OPENSHIFT_GADGET_FIX.md b/deployment/kubernetes-manifests/OPENSHIFT_GADGET_FIX.md index 0b479f8..7517ec8 100644 --- a/deployment/kubernetes-manifests/OPENSHIFT_GADGET_FIX.md +++ b/deployment/kubernetes-manifests/OPENSHIFT_GADGET_FIX.md @@ -60,6 +60,12 @@ time="..." level=info msg="Serving on gRPC socket /run/gadgettracermanager.socke time="..." level=info msg="Starting gRPC server on 0.0.0.0:16060" ``` +The init container (`detect-runtime`) auto-detects the containerd socket path. Check its output: +```bash +oc logs -n $OPENSHIFT_NAMESPACE -l app=inspektor-gadget -c detect-runtime +# Expected: "Detected standard containerd socket" or "Detected K3s/RKE2 containerd socket" +``` + ## Quick Deploy Script (Automated) **Recommended Method:** Use the provided deployment script: