86 lines
2.6 KiB
Markdown
86 lines
2.6 KiB
Markdown
# kubectl (Kubernetes CLI)
|
|
|
|
## What it is
|
|
|
|
`kubectl` is the Kubernetes control client: apply manifests, inspect workloads,
|
|
stream logs, exec into pods. It talks to any cluster via a kubeconfig.
|
|
|
|
## Install
|
|
|
|
Static binary, current stable (x86_64; swap `amd64`→`arm64` for ARM):
|
|
|
|
```bash
|
|
curl -fsSLO "https://dl.k8s.io/release/$(curl -fsSL https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
|
|
sudo install -m 0755 kubectl /usr/local/bin/kubectl && rm kubectl
|
|
```
|
|
|
|
Or the Google apt repo (`sudo apt install kubectl` after adding
|
|
`pkgs.k8s.io`). Keep the client within one minor version of the server.
|
|
|
|
## Authenticate
|
|
|
|
Auth is the kubeconfig, not a login command:
|
|
|
|
```bash
|
|
export KUBECONFIG=~/.kube/config # default
|
|
kubectl config get-contexts
|
|
kubectl config use-context <context>
|
|
```
|
|
|
|
Kubeconfigs are bearer secrets — keep them mode 600, and archive copies in
|
|
Vaultwarden (https://vault.portugalfuturista.org).
|
|
|
|
## Configure for this environment
|
|
|
|
No production cluster yet on the Proxmox fleet; the plan is k3s (below). For
|
|
cloud clusters, fetch credentials with the vendor CLI:
|
|
|
|
```bash
|
|
gcloud container clusters get-credentials <name> --zone <zone>
|
|
aws eks update-kubeconfig --name <name>
|
|
```
|
|
|
|
## Self-hosted equivalent
|
|
|
|
**k3s** — lightweight Kubernetes, ideal on a Proxmox CT/VM (asus or gigabyte):
|
|
|
|
```bash
|
|
# on the node (Debian/Ubuntu CT, privileged or with nesting enabled)
|
|
curl -sfL https://get.k3s.io | sh -
|
|
sudo cat /etc/rancher/k3s/k3s.yaml # copy to laptop ~/.kube/config
|
|
```
|
|
|
|
On the laptop, edit the `server:` line to `https://<node-ip>:6443` and:
|
|
|
|
```bash
|
|
kubectl get nodes
|
|
# NAME STATUS ROLES AGE VERSION
|
|
# k3s1 Ready control-plane,master 1m v1.x.y+k3s1
|
|
```
|
|
|
|
For a pure-laptop dev cluster, `k3d` (k3s in Docker) is the fastest option.
|
|
|
|
## Aurélio integration
|
|
|
|
The **cli-devops** skill uses `kubectl`/`helm` for cluster operations.
|
|
Connector registry id: `kubernetes`.
|
|
|
|
## Verify
|
|
|
|
```bash
|
|
kubectl version --client
|
|
# Client Version: v1.x.y ...
|
|
kubectl get --raw /readyz # against a configured cluster
|
|
# ok
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
- **`connection refused` to 127.0.0.1:8080** — no context set; run
|
|
`kubectl config get-contexts` and `use-context`.
|
|
- **k3s kubeconfig 403 on the laptop** — you copied `k3s.yaml` but left
|
|
`server: https://127.0.0.1:6443`; point it at the node IP.
|
|
- **Version skew warnings** — keep kubectl within ±1 minor of the server;
|
|
reinstall from `dl.k8s.io/release/stable.txt`.
|
|
- **Proxmox CT can't run k3s** — enable nesting/keyctl or use an
|
|
unprivileged-with-features CT; plain VMs are the least-friction path.
|