Offline file server for Kubespray v2.25.0 deployment. Contains all required binary files for Kubernetes v1.29.10 and related components, served via Nginx with HTTP file browsing.
# Pull the image
docker pull sgfoot/kubespray-files:v0.1.0-2.25.0
# Run the file server
docker run -d -p 8080:80 --name kubespray-files \
sgfoot/kubespray-files:v0.1.0-2.25.0
# Browse files
curl http://localhost:8080/k8s/
# Download example (kubectl)
curl -O http://localhost:8080/k8s/dl.k8s.io/release/v1.29.10/bin/linux/amd64/kubectl
This image contains binary files for both AMD64 and ARM64 architectures:
This image contains files for both architectures in a single image:
/opt/k8s/k8s/
āāā dl.k8s.io/release/v1.29.10/bin/linux/
ā āāā amd64/ # AMD64 (x86_64) files
ā ā āāā kubelet
ā ā āāā kubectl
ā ā āāā kubeadm
ā āāā arm64/ # ARM64 (aarch64) files
ā āāā kubelet
ā āāā kubectl
ā āāā kubeadm
āāā ...
Supported Platforms:
Kubespray automatically selects the correct architecture based on the target node.
# On your deployment server
docker run -d -p 8080:80 --restart always \
--name kubespray-files \
sgfoot/kubespray-files:v0.1.0-2.25.0
Edit inventory/mycluster/group_vars/all/offline.yml:
# Point to your file server
files_repo: "http://192.168.1.100:8080/k8s"
# Kubespray will automatically download the correct architecture:
# - AMD64 nodes: .../linux/amd64/kubectl
# - ARM64 nodes: .../linux/arm64/kubectl
ansible-playbook -i inventory/mycluster/hosts.yaml cluster.yml
Perfect for heterogeneous clusters with different CPU architectures:
# Single file server supports all node types
files_repo: "http://192.168.1.100:8080/k8s"
# Nodes automatically get the right files:
# - x86_64 control plane ā AMD64 binaries
# - ARM64 workers ā ARM64 binaries
v0.1.0-2.25.0 - Kubespray v2.25.0, Kubernetes v1.29.10latest - Latest stable release# Start the server
docker run -d -p 8080:80 --name test-files \
sgfoot/kubespray-files:v0.1.0-2.25.0
# Check AMD64 files
curl http://localhost:8080/k8s/dl.k8s.io/release/v1.29.10/bin/linux/amd64/
# Check ARM64 files
curl http://localhost:8080/k8s/dl.k8s.io/release/v1.29.10/bin/linux/arm64/
# Health check
curl http://localhost:8080/health
version: '3.8'
services:
kubespray-files:
image: sgfoot/kubespray-files:v0.1.0-2.25.0
container_name: kubespray-files
ports:
- "8080:80"
restart: unless-stopped
healthcheck:
test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost/k8s/"]
interval: 30s
timeout: 10s
retries: 3
No environment variables required. The image works out of the box.
Use with the companion image registry:
# Pull image registry
docker pull sgfoot/kubespray-images:v0.1.0-2.25.0
# Deploy both services
docker run -d -p 8080:80 --name kubespray-files \
sgfoot/kubespray-files:v0.1.0-2.25.0
docker run -d -p 5000:5000 --name kubespray-registry \
sgfoot/kubespray-images:v0.1.0-2.25.0
# Check container logs
docker logs kubespray-files
# Verify nginx is running
docker exec kubespray-files ps aux | grep nginx
# Use a different port
docker run -d -p 9090:80 --name kubespray-files \
sgfoot/kubespray-files:v0.1.0-2.25.0
# Verify both architectures are present
docker run --rm sgfoot/kubespray-files:v0.1.0-2.25.0 \
ls -la /opt/k8s/k8s/dl.k8s.io/release/v1.29.10/bin/linux/
Persistent Storage: Mount a volume to preserve downloaded files
docker run -d -p 8080:80 -v files-data:/opt/k8s \
sgfoot/kubespray-files:v0.1.0-2.25.0
Custom Port: Change the host port as needed
docker run -d -p 9090:80 sgfoot/kubespray-files:v0.1.0-2.25.0
Health Monitoring: Use the /health endpoint
curl http://localhost:8080/health
MIT License - See LICENSEā
Contributions welcome! Please visit the GitHub repositoryā .
If this image helps you, please star the GitHub repositoryā !
Maintained by: sgfootā
Kubespray Version: v2.25.0
Kubernetes Version: v1.29.10
Last Updated: 2024-12
Content type
Image
Digest
sha256:9de403b85ā¦
Size
1000.2 MB
Last updated
9 months ago
docker pull sgfoot/kubespray-files