Aviad Deri
12/12/2025, 5:37 AMkapa.ai
12/12/2025, 5:37 AMkubectl (or abctl, which uses Kubernetes under the hood) is trying to talk to the kubelet on 172.19.0.2:10250 to fetch the pod logs, but the TCP connection is being refused by that node. In Airbyte’s troubleshooting docs, a similar “connection refused” situation is documented when abctl can’t talk to the Kubernetes API/server, resulting in errors like: > unable to initialize local command: error communicating with kubernetes ... connect: connection refused [[Troubleshoot abctl](https://docs.airbyte.com/platform/deploying-airbyte/troubleshoot-deploy#connection-refused)]. In both cases, “connection refused” means the Kubernetes endpoint abctl expects to reach is not accepting connections (service not running, not listening on that port, or blocked). However, the provided knowledge sources do not give specific remediation steps for kubelet (10250) connection issues, only the general “connection refused” case above. Because of that, I can only say with confidence that: - The problem is a network/availability issue between `abctl`/`kubectl` and the Kubernetes node at 172.19.0.2 (the node is refusing connections on 10250). - It’s analogous in nature to the documented “connection refused” error where abctl cannot communicate with Kubernetes. [[Troubleshoot abctl](https://docs.airbyte.com/platform/deploying-airbyte/troubleshoot-deploy#connection-refused)] The knowledge sources do not explicitly state the exact root cause or step‑by‑step fix for your specific kubelet log endpoint error.Aviad Deri
12/12/2025, 5:39 AMkapa.ai
12/12/2025, 5:39 AMkapa.ai
12/12/2025, 5:39 AMabctl, you restart the relevant Kubernetes deployments in the airbyte-abctl namespace with kubectl. From the docs, kubectl is used to manage the abctl-created cluster and deployments, and you can inspect pods and logs in the airbyte-abctl namespace. [[Developing locally 1.8](https://docs.airbyte.com/platform/1.8/contributing-to-airbyte/developing-locally#prerequisites)] A pattern for restarting services is shown for the worker and workload API: [[Issue 66692](https://github.com/airbytehq/airbyte/issues/66692)] bash kubectl -n airbyte-abctl rollout restart deployment airbyte-abctl-server kubectl -n airbyte-abctl rollout status deployment airbyte-abctl-server If you also need to restart other components involved in handling requests (as in the 502 examples), you can restart them similarly, for example: bash kubectl -n airbyte-abctl rollout restart deployment airbyte-abctl-worker kubectl -n airbyte-abctl rollout restart deployment airbyte-abctl-workload-api-server kubectl -n airbyte-abctl rollout status deployment airbyte-abctl-worker kubectl -n airbyte-abctl rollout status deployment airbyte-abctl-workload-api-serverAviad Deri
12/12/2025, 5:46 AMkapa.ai
12/12/2025, 5:46 AMkapa.ai
12/12/2025, 5:46 AMWaiting for temporal server... - Waiting for namespace default to be initialized in temporal... - Then repeated UNAVAILABLE: io exception and Connection refused: airbyte-abctl-temporal/10.96.77.137:7233. This pattern (gRPC UNAVAILABLE / Connection refused to airbyte-temporal) matches several documented issues where Airbyte components cannot talk to the Temporal pod/service; in those cases workers, server, or other pods keep restarting or returning 502s because Temporal isn’t reachable. [[GKE connection refused](https://github.com/airbytehq/airbyte/issues/50948); [Server–Temporal connection](https://github.com/airbytehq/airbyte/issues/68655)] From the knowledge sources, the only clear conclusion is: - The Airbyte server process is up, but it cannot establish a gRPC connection to the Temporal endpoint (airbyte-abctl-temporal:7233), so scheduling/executing jobs will not work. - This is a connectivity/availability problem on the Temporal side (pod not ready, not listening, or service misconfigured), not an application‑level configuration error inside the server. The docs and issues provided do not include a definitive, step‑by‑step fix for this specific airbyte-abctl-temporal “connection refused” situation when using abctl. They only show that such errors mean Temporal is not reachable and cause Airbyte components to fail. [[Temporal connection refused](https://github.com/airbytehq/airbyte/issues/50948); [Temporal UNAVAILABLE](https://github.com/airbytehq/airbyte/issues/68655)] So, based strictly on the sources: - Your problem is: Airbyte server cannot connect to the Temporal service (airbyte-abctl-temporal:7233), which is refusing connections. - The knowledge sources do not explicitly document how to repair this for abctl deployments (e.g., whether it is a pod crash, service selector issue, or cluster networking problem), so I cannot reliably give you more specific remediation steps from the provided material.Aviad Deri
12/12/2025, 5:48 AMkapa.ai
12/12/2025, 5:48 AMkapa.ai
12/12/2025, 5:48 AMGet "<https://172.19.0.2:10250/containerLogs/...>": dial tcp 172.19.0.2:10250: connect: connection refused So: - The **Temporal pod log itself is not being returned**; instead the API server is failing to connect to the kubelet on 172.19.0.2:10250. - This is the same class of “connection refused” problem documented for abctl, where it can’t talk to the Kubernetes endpoint it expects. [[Troubleshoot abctl](https://docs.airbyte.com/platform/deploying-airbyte/troubleshoot-deploy#connection-refused)] Based on the provided sources, the only firm conclusion is: - This error indicates a Kubernetes node / kubelet connectivity issue, not a Temporal‑specific log error. - Because the sources don’t include remediation steps for kubelet 10250 failures, I can’t reliably outline the exact fix (e.g., restarting kubelet, checking node health, firewall rules) from the given material.Aviad Deri
12/12/2025, 7:20 AMkapa.ai
12/12/2025, 7:21 AMkapa.ai
12/12/2025, 7:21 AMjob_id: 31966, attempt no: 0), but there is no corresponding stats record, so the server throws IdNotFoundKnownException instead of returning data. From the logs and issues you shared, this is the same underlying situation as the repeated warnings: > Missing stats for job <id> attempt <n> [[Jobs DB schema](https://docs.airbyte.com/platform/understanding-airbyte/database-data-catalog#jobs-database); [JobHistoryHandler warnings](https://discuss.airbyte.io/t/4016)] Key points based on the sources: - Airbyte stores job + attempt metadata in the jobs and attempts tables (status, timestamps, etc.), and separately stores attempt stats which some handlers use to build responses for the UI/API. [[Jobs DB schema](https://docs.airbyte.com/platform/understanding-airbyte/database-data-catalog#jobs-database)] - When those stats are missing for a given (job_id, attempt_number), server-side code logs “Missing stats for job … attempt …” and, for certain API calls (like getAttemptCombinedStats), now raises IdNotFoundKnownException: Could not find attempt stats …. [[JobHistoryHandler warnings](https://discuss.airbyte.io/t/4016); [Missing stats noise](https://discuss.airbyte.io/t/3804)] - In the forum threads, this is treated as log noise / missing stats, not as something that necessarily breaks syncs; there is no documented data loss or corruption associated with it, only incomplete statistics and noisy logs. [[JobHistoryHandler warnings](https://discuss.airbyte.io/t/4016); [Missing stats noise](https://discuss.airbyte.io/t/3804)] What this implies for you: - The sync for job 31966 may still have run; but Airbyte cannot return combined stats for attempt 0 because those stats are absent. - The knowledge sources do not document a supported way to “rebuild” or backfill attempt stats, nor a configuration toggle to suppress this specific IdNotFoundKnownException. They only show that: - The stats are read from persistence and may be missing. [[JobHistoryHandler warnings](https://discuss.airbyte.io/t/4016)] - Users see repeated “Missing stats for job … attempt …” messages in logs. [[Missing stats noise](https://discuss.airbyte.io/t/3804)] Because of that, I can’t give you a confirmed repair procedure (like SQL fixes or config changes) from the provided material. From what we can say based on the sources: - This error indicates missing attempt stats for that job/attempt, which affects UI/API stats views for that run. - There’s no explicit evidence in the docs/issues provided that this alone causes jobs to hang or fail; it mainly affects observability and triggers noisy warnings/errors in logs. If this is blocking you functionally (e.g., UI fails to load pages), the next documented step would be to gather the job/attempt IDs and open an issue or support ticket, as users did in the linked GitHub and forum threads when they encountered similar “Missing stats” behavior. [[JobHistoryHandler warnings](https://discuss.airbyte.io/t/4016); [Missing stats noise](https://discuss.airbyte.io/t/3804)]Aviad Deri
12/12/2025, 8:08 AMkapa.ai
12/12/2025, 8:08 AMkapa.ai
12/12/2025, 8:09 AM<http://mirror.gcr.io|mirror.gcr.io>, but the token request to <http://mirror.gcr.io|mirror.gcr.io> is being rejected with 403 Forbidden, so the image can’t be pulled: > failed to fetch anonymous token … `https://mirror.gcr.io/v2/token?...`: 403 Forbidden You can work around this in two main ways, depending on how you deploy Airbyte: --- ### 1. Kubernetes + Helm: use a custom / proxy registry Configure Airbyte to pull all platform and connector images from a custom or proxy registry that you control (e.g., your own Docker Hub mirror, GCR/Artifact Registry, ECR, ACR). In `values.yaml`: yaml global: image: registry: <http://ghcr.io/NAMESPACE|ghcr.io/NAMESPACE> This tells Airbyte to use <http://ghcr.io/NAMESPACE|ghcr.io/NAMESPACE> instead of <http://docker.io|docker.io> when pulling images (including airbyte/source-postgres). [[Custom image registry](https://docs.airbyte.com/platform/deploying-airbyte/integrations/custom-image-registries#step-1-customize-airbyte-to-use-your-image-registry)] If the registry is private, create an image‑pull secret and reference it: bash kubectl create secret generic regcred \ --from-file=.dockerconfigjson=<path/to/.docker/config.json> \ --type=<http://kubernetes.io/dockerconfigjson|kubernetes.io/dockerconfigjson> yaml global: image: registry: <http://ghcr.io/NAMESPACE|ghcr.io/NAMESPACE> imagePullSecrets: - name: regcred [[Custom image registry](https://docs.airbyte.com/platform/deploying-airbyte/integrations/custom-image-registries#step-1-customize-airbyte-to-use-your-image-registry)] Make sure your Airbyte Helm chart is recent (≥ v1.2.0); older chart versions had issues where the custom registry setting did not apply to connectors, causing them to still pull from <http://docker.io|docker.io> and hit rate/authorization limits. Upgrading to ≥ v1.5.1 is confirmed to fix this behavior. [[Custom registry connectors](https://github.com/airbytehq/airbyte/discussions/57509)] --- ### 2. Docker Compose or custom connectors from a private registry If you are using Docker Compose and/or custom connectors in a private registry (e.g., GCR, ECR, ACR, private Docker Hub): - Authenticate both: - The environment where you build/push the image, and - The host where Airbyte runs (so it can pull the image). For example, with ECR: bash aws ecr get-login-password --region <region> \ | docker login --username AWS --password-stdin <aws_account_id>.dkr.ecr.<region>.<http://amazonaws.com|amazonaws.com> Similar flows exist for GCP Artifact Registry, Azure Container Registry, Docker Hub service accounts, or a self‑hosted registry. [[Uploading custom connectors](https://docs.airbyte.com/platform/operator-guides/using-custom-connectors#3-adhere-to-airbytes-docker-image-requirements)] - For Kubernetes worker jobs that need to pull from another private registry, create a Kubernetes Secret for your registry credentials and set: bash # name of your image-pull secret JOB_KUBE_MAIN_CONTAINER_IMAGE_PULL_SECRET=<secret-name> on the airbyte-worker pod, so job pods can authenticate when pulling connector images. [[Uploading custom connectors](https://docs.airbyte.com/platform/operator-guides/using-custom-connectors#3-adhere-to-airbytes-docker-image-requirements)] --- In short, the 403 is coming from <http://mirror.gcr.io|mirror.gcr.io> when trying to anonymously proxy Docker Hub. To resolve it with the documented approaches, route image pulls through a registry/proxy you control (via global.image.registry) and/or ensure proper authentication with your private registry and Kubernetes/Docker environment.