Banner

从零搭建本地 K8s 集群教程

2026-10-10

安装前置工具

本地学习推荐 kind + kubectl + Docker。

  • Docker:kind 需要 Docker 作为容器运行时。
  • kubectl:Kubernetes 命令行客户端。
  • kind:Kubernetes in Docker,适合本地快速建集群。

macOS 可用:

brew install docker kind kubectl

Linux 可参考官方文档安装 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 nginx

kind 集群通常没有云厂商 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


5