从零搭建本地 K8s 集群教程
安装前置工具
本地学习推荐 kind + kubectl + Docker。
- Docker:kind 需要 Docker 作为容器运行时。
- kubectl:Kubernetes 命令行客户端。
- kind:Kubernetes in Docker,适合本地快速建集群。
macOS 可用:
brew install docker kind kubectlLinux 可参考官方文档安装 kind 和 kubectl。
启动本地集群
创建默认单节点集群:
kind create cluster --name demo验证集群:
kubectl cluster-info --context kind-demo
kubectl get nodes看到节点状态为 Ready,说明集群可用。
部署第一个 Nginx
先用命令快速部署:
kubectl create deployment nginx --image=nginx --replicas=2查看 Pod 状态:
kubectl get pods预期看到类似:
NAME READY STATUS RESTARTS AGE
nginx-xxxxx-abc 1/1 Running 0 30s
nginx-xxxxx-def 1/1 Running 0 30s暴露服务
kubectl expose deployment nginx --port=80 --type=NodePort查看 Service:
kubectl get svc nginxkind 集群通常没有云厂商 LoadBalancer,所以用 NodePort 最稳妥。
本地访问 Nginx
先查看端口映射:
kubectl get svc nginx然后用 docker ps 找到 kind 控制平面容器的端口映射,例如:
docker ps --filter "name=demo-control-plane"假设映射为 127.0.0.1:xxxxx->80/TCP,浏览器访问:
http://127.0.0.1:xxxxx看到 Nginx 欢迎页,说明第一个应用部署成功。
用 YAML 管理应用
更推荐用声明式 YAML:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: nginx
spec:
selector:
app: nginx
ports:
- port: 80
targetPort: 80
type: NodePort应用:
kubectl apply -f nginx.yaml常用排错命令
kubectl get pods
kubectl describe pod <pod-name>
kubectl logs <pod-name>
kubectl get svc
kubectl delete deployment nginx
kubectl delete svc nginx清理集群
kind delete cluster --name demo