> For the complete documentation index, see [llms.txt](https://docs.bindplane.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.bindplane.com/how-to-guides/cloud-and-platform-integrations/kubernetes/kubernetes-node-agent-on-gke-auto-pilot.md).

# Kubernetes Node Collector on GKE Auto Pilot

[GKE Autopilot](https://cloud.google.com/kubernetes-engine/docs/concepts/autopilot-overview) is not officially supported on the [Bindplane Node Collector](/deployment/kubernetes/collector/install.md#node) at this time. This is due to [volume mount restrictions](https://cloud.google.com/kubernetes-engine/docs/concepts/autopilot-security) that are in place on auto-pilot clusters.

The Bindplane [Node Collector](/deployment/kubernetes/collector/install.md#node) deployment manifest can be modified to deploy to auto-pilot clusters.

### Modifications

Follow the [Install Kubernetes Collectors](/deployment/kubernetes/collector/install.md) documentation. After downloading the YAML manifest, open it in your preferred text editor.

Modify the `volumes` section at `spec.template.spec.volumes` and comment or remove the following\
volume definitions:

* `runlog`
* `dockerlogs`

```yaml
volumes:
  - name: config
    emptyDir: {}
  # - name: runlog
  #   hostPath:
  #     path: /run/log/journal
  - name: varlog
    hostPath:
      path: /var/log
  # - name: dockerlogs
  #   hostPath:
  #     path: /var/lib/docker/containers
  - name: storage
    hostPath:
      path: /var/lib/observiq/otelcol/container
  - name: setup
    configMap:
      name: bindplane-node-agent-setup
```

Modify the `storage` volume to use an `emptyDir` volume type.

```yaml
- name: storage
  emptyDir: {}
  # hostPath:
  #   path: /var/lib/observiq/otelcol/container
```

Modify `opentelemetry-collector` container's `volumeMounts` at `spec.template.spec.containers` and comment or remove the following volume mount definitions:

* `runlog`
* `dockerlogs`

```yaml
volumeMounts:
  - mountPath: /etc/otel/config
    name: config
  # - mountPath: /run/log/journal
  #   name: runlog
  #   readOnly: true
  - mountPath: /var/log
    name: varlog
    readOnly: true
  # - mountPath: /var/lib/docker/containers
  #   name: dockerlogs
  #   readOnly: true
  - mountPath: /etc/otel/storage
    name: storage
```

### Apply

Once the modifications have been made, the YAML manifest can be applied to your clusters.

```bash
kubectl apply -f bindplane-agent.yaml
```

```bash
namespace/bindplane-agent created
serviceaccount/bindplane-agent created
clusterrole.rbac.authorization.k8s.io/bindplane-agent created
clusterrolebinding.rbac.authorization.k8s.io/bindplane-agent created
service/bindplane-node-agent created
service/bindplane-node-agent-headless created
configmap/bindplane-node-agent-setup created
daemonset.apps/bindplane-node-agent created
```

### Frequently Asked Questions

**Q: Will this support Docker-based clusters?**

**A:** No, however, GKE Auto Pilot clusters use the [containerd runtime](https://cloud.google.com/kubernetes-engine/docs/concepts/using-containerd) and do not require the docker volume mounts.

**Q: Is an emptyDir volume safe for configuration persistence**

**A:** The `hostPath` volume is used to ensure the collector's configuration is\
persisted in the unlikely event that the Bindplane Collector pod is updated and\
restarted during a Bindplane control plane outage. GKE Auto Pilot does not\
allow `hostPath` volumes, therefore a temporary volume is used to store the\
configuration pushed by Bindplane to the collector.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.bindplane.com/how-to-guides/cloud-and-platform-integrations/kubernetes/kubernetes-node-agent-on-gke-auto-pilot.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
