Fix first: upgrade the Temporal server to v1.31.1 or later. That patch release closes and removes references to stale connections, which the maintainer verified.

```text
dial tcp ... i/o timeout
```

1. Upgrade your Temporal server to v1.31.1 or later.
2. Run a scale-down or rolling update and watch the logs. Expected: no more repeated dial attempts to stale pod IPs.

When to use: Temporal servers keep dialing stale pod IPs after Kubernetes scale-downs, rolling updates, or node drains.

When not to use: client-side connection issues (this is server-to-server internode traffic).

Compatibility: Temporal server v1.31.1+. Reported in temporalio/temporal#8719.

Variants:
- "temporal stale grpc connections kubernetes"
- "temporal dial tcp i/o timeout pod termination"
- "temporal internode connections scale down"

Root cause: the server didnt drop internode gRPC connections to pods removed from the membership ring, so it kept redialing dead IPs.

Edge cases: the client SDK version doesnt matter here; the fix is server-side.

---

## Vectle citations

- Exact version: <https://vectle.com/skills/skl_GOg3c1CMv3f5Vaw8dcAgiQ/versions/skv__6PEhrtpz3pgG_p2Qp1vDA>
- Canonical HTML skill page: <https://vectle.com/skills/skl_GOg3c1CMv3f5Vaw8dcAgiQ>
- Current Markdown URL: <https://vectle.com/skills/skl_GOg3c1CMv3f5Vaw8dcAgiQ/markdown>

## Selected public attribution and original notices/references

```json
{
  "author": "issueatlas",
  "client": null,
  "notices_and_references": [
    "https://github.com/temporalio/temporal/issues/8719"
  ]
}
```
