- CLAUDE.md for AI agents to understand the codebase - GITEA-GUIDE.md centralizes all Gitea operations (API, Registry, Auth) - DEVELOPMENT-WORKFLOW.md explains complete dev process - ROADMAP.md, NEXT-SESSION.md for planning - QUICK-REFERENCE.md, TROUBLESHOOTING.md for daily use - 40+ detailed docs in /docs folder - Backend as submodule from Gitea Everything documented for autonomous operation. Co-Authored-By: Claude Sonnet 4.5 (1M context) <noreply@anthropic.com>
121 lines
3.9 KiB
Markdown
121 lines
3.9 KiB
Markdown
# AiWorker Kubernetes HA Cluster
|
|
**Location**: Houston, Texas (us-hou-1)
|
|
**Created**: 2026-01-19
|
|
**K3s Version**: v1.35.0+k3s1
|
|
**Network**: 10.100.0.0/24 (k8s-cluster-network)
|
|
|
|
## Architecture
|
|
```
|
|
[Floating IP]
|
|
|
|
|
┌────────────┴────────────┐
|
|
| |
|
|
[LB-01 (HA)] [LB-02 (HA)]
|
|
| |
|
|
└────────────┬────────────┘
|
|
|
|
|
┌───────────────┼───────────────┐
|
|
| | |
|
|
[CP-01] [CP-02] [CP-03]
|
|
etcd HA etcd HA etcd HA
|
|
| | |
|
|
─────┴───────────────┴───────────────┴─────
|
|
| | |
|
|
[Worker-01] [Worker-02] [Worker-03]
|
|
```
|
|
|
|
## Control Plane Nodes (gp.starter: 4 vCPU, 8 GB RAM)
|
|
| Hostname | Public IP | Private IP | Role |
|
|
|-------------|-----------------|-------------|------------------|
|
|
| k8s-cp-01 | 108.165.47.233 | 10.100.0.2 | control-plane,etcd |
|
|
| k8s-cp-02 | 108.165.47.235 | 10.100.0.3 | control-plane,etcd |
|
|
| k8s-cp-03 | 108.165.47.215 | 10.100.0.4 | control-plane,etcd |
|
|
|
|
## Worker Nodes (gp.small: 8 vCPU, 16 GB RAM)
|
|
| Hostname | Public IP | Private IP | Role |
|
|
|----------------|-----------------|-------------|--------|
|
|
| k8s-worker-01 | 108.165.47.225 | 10.100.0.5 | worker |
|
|
| k8s-worker-02 | 108.165.47.224 | 10.100.0.6 | worker |
|
|
| k8s-worker-03 | 108.165.47.222 | 10.100.0.7 | worker |
|
|
|
|
## Load Balancers (gp.micro: 2 vCPU, 4 GB RAM)
|
|
| Hostname | Public IP | Private IP | Purpose |
|
|
|------------|--------------|-------------|-----------------|
|
|
| k8s-lb-01 | (pending) | (pending) | HAProxy Primary |
|
|
| k8s-lb-02 | (pending) | (pending) | HAProxy Backup |
|
|
|
|
## K3s Configuration
|
|
```bash
|
|
# Token
|
|
K10e74a5aacfaf4e2e0a291c3b369db8588cf0b9c2590a4d66e04ab960e24fcb4db::server:bc53704a9707d3cd9188af9e558ab50c
|
|
|
|
# API Server (via LB - will be configured)
|
|
https://<floating-ip>:6443
|
|
|
|
# Direct access (temporary)
|
|
https://108.165.47.233:6443
|
|
```
|
|
|
|
## Network Configuration
|
|
- **Private Network**: 10.100.0.0/24 (eth1)
|
|
- **Flannel Interface**: eth1
|
|
- **All internal communication**: via private IPs
|
|
- **External access**: via public IPs (with firewall)
|
|
|
|
## SSH Access
|
|
```bash
|
|
# Control Planes
|
|
ssh root@108.165.47.233 # k8s-cp-01
|
|
ssh root@108.165.47.235 # k8s-cp-02
|
|
ssh root@108.165.47.215 # k8s-cp-03
|
|
|
|
# Workers
|
|
ssh root@108.165.47.225 # k8s-worker-01
|
|
ssh root@108.165.47.224 # k8s-worker-02
|
|
ssh root@108.165.47.222 # k8s-worker-03
|
|
```
|
|
|
|
## Kubeconfig
|
|
```bash
|
|
# Local kubeconfig
|
|
~/.kube/aiworker-config
|
|
|
|
# Usage
|
|
export KUBECONFIG=~/.kube/aiworker-config
|
|
kubectl get nodes
|
|
|
|
# Or
|
|
kubectl --kubeconfig ~/.kube/aiworker-config get nodes
|
|
```
|
|
|
|
## Cost Summary
|
|
| Component | Plan | Qty | Unit Price | Total/Month |
|
|
|-----------------|------------|-----|------------|-------------|
|
|
| Control Planes | gp.starter | 3 | $15/mo | $45 |
|
|
| Workers | gp.small | 3 | $29/mo | $87 |
|
|
| Load Balancers | gp.micro | 2 | $8/mo | $16 |
|
|
| **Total** | | 8 | | **$148/mo** |
|
|
|
|
## Cluster Health
|
|
```bash
|
|
# Check nodes
|
|
kubectl get nodes -o wide
|
|
|
|
# Check system pods
|
|
kubectl get pods -A
|
|
|
|
# Check etcd cluster
|
|
kubectl get endpoints -n kube-system kube-apiserver
|
|
|
|
# Cluster info
|
|
kubectl cluster-info
|
|
```
|
|
|
|
## Next Steps
|
|
1. ✅ Cluster deployed
|
|
2. 🔄 Configure load balancers (HAProxy)
|
|
3. ⏳ Setup floating IP for HA
|
|
4. ⏳ Install Nginx Ingress Controller
|
|
5. ⏳ Install Cert-Manager
|
|
6. ⏳ Deploy AiWorker application
|