Skip to content

Commit 3bce1e7

Browse files
Copilotrbtr
andcommitted
Update documentation for Windows support in retina-shell
Co-authored-by: rbtr <[email protected]>
1 parent f745c25 commit 3bce1e7

File tree

2 files changed

+53
-4
lines changed

2 files changed

+53
-4
lines changed

docs/06-Troubleshooting/shell.md

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@ kubectl retina shell aks-nodepool1-15232018-vmss000001
1414

1515
# To start a shell inside a pod (pod network namespace):
1616
kubectl retina shell -n kube-system pods/coredns-d459997b4-7cpzx
17+
18+
# To start a shell in a Windows node:
19+
kubectl retina shell win-node-001
1720
```
1821

1922
Check connectivity using `ping`:
@@ -146,6 +149,43 @@ root [ / ]# chroot /host systemctl status | head -n 2
146149

147150
**If `systemctl` shows an error "Failed to connect to bus: No data available", check that the `retina shell` command has `--host-pid` set and that you have chroot'd to /host.**
148151

152+
## Windows Support
153+
154+
Retina shell supports Windows nodes by automatically detecting the node OS and using a Windows container image with appropriate networking tools.
155+
156+
### Windows Tools and Commands
157+
158+
When using a Windows node, you'll have access to these networking tools:
159+
160+
- `ipconfig`: Show network configuration
161+
- `netstat`: Show network connections
162+
- `ping`: Test connectivity
163+
- `tracert`: Trace route to destination
164+
- `nslookup`: DNS lookup
165+
- `route`: Show/manipulate routing table
166+
- `netsh`: Network shell for configuration
167+
- `nmap`: Network discovery and security auditing
168+
- `portqry`: Port scanner
169+
- `windump`: Packet analyzer (tcpdump for Windows)
170+
171+
### Windows Example
172+
173+
```bash
174+
# Start a shell in a Windows node
175+
kubectl retina shell win-node-001
176+
177+
# You can specify a specific Windows image tag variant
178+
kubectl retina shell win-node-001 --windows-image-tag windows-ltsc2019-amd64
179+
```
180+
181+
### Windows Host Filesystem Access
182+
183+
For Windows nodes, the host filesystem is mounted at `C:\host` when using `--mount-host-filesystem`:
184+
185+
```bash
186+
kubectl retina shell win-node-001 --mount-host-filesystem
187+
```
188+
149189
## Troubleshooting
150190

151191
### Timeouts
@@ -176,10 +216,17 @@ export RETINA_SHELL_IMAGE_VERSION=v0.0.1 # optional, if not set defaults to the
176216
kubectl retina shell node0001 # this will use the image "example.azurecr.io/retina/retina-shell:v0.0.1"
177217
```
178218

219+
For Windows images, you can also override the Windows image tag suffix:
220+
221+
```bash
222+
export RETINA_SHELL_WINDOWS_IMAGE_TAG="windows-ltsc2019-amd64"
223+
kubectl retina shell win-node-001 # will use the Windows image with the specified tag suffix
224+
```
225+
179226
## Limitations
180227

181-
* Windows nodes and pods are not yet supported.
182228
* `bpftool` and `bpftrace` are not supported.
183229
* The shell image links `iptables` commands to `iptables-nft`, even if the node itself links to `iptables-legacy`.
184230
* `nsenter` is not supported.
185231
* `ip netns` will not work without `chroot` to the host filesystem.
232+
* On Windows, commands specific to Linux containers are not available (e.g., iptables, nft).

shell/README.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,14 @@
33
Retina CLI provides a command to launch an interactive shell in a node or pod for adhoc debugging.
44

55
* The CLI command `kubectl retina shell` creates a pod with `HostNetwork=true` (for node debugging) or an ephemeral container in an existing pod (for pod debugging).
6-
* The container runs an image built from the Dockerfile in this directory. The image is based on Azure Linux and includes commonly-used networking tools.
6+
* For Linux nodes, the container runs an image built from the Dockerfile in this directory, based on Azure Linux and includes commonly-used networking tools.
7+
* For Windows nodes, the container runs a Windows-based image with Windows networking utilities built from Dockerfile.windows.
78

89
For testing, you can override the image used by `retina shell` either with CLI arguments
910
(`--retina-shell-image-repo` and `--retina-shell-image-version`) or environment variables
1011
(`RETINA_SHELL_IMAGE_REPO` and `RETINA_SHELL_IMAGE_VERSION`).
1112

12-
Run `kubectl retina shell -h` for full documentation and examples.
13+
For Windows nodes, you can specify the Windows image tag suffix with the `--windows-image-tag` flag or
14+
the `RETINA_SHELL_WINDOWS_IMAGE_TAG` environment variable.
1315

14-
Currently only Linux is supported; Windows support will be added in the future.
16+
Run `kubectl retina shell -h` for full documentation and examples.

0 commit comments

Comments
 (0)